The library(broadcast)
library was invented to realise GUI applications consisting of
stand-alone components that use the Prolog database for storing the
application data. Figure
11 illustrates the flow of information using this design
The broadcasting service provides two services. Using the‘shout' service, an unknown number of agents may listen to the message and act. The broadcaster is not (directly) aware of the implications. Using the‘request' service, listening agents are asked for an answer one-by-one and the broadcaster is allowed to reject answers using normal Prolog failure.
Shouting is often used to inform about changes made to a common database. Other messages can be “save yourself'' or “show this''.
Requesting is used to get information while the broadcaster is not aware who might be able to answer the question. For example “who is showing X?''.
..., broadcast_request(age_of('John', Age)),
If there is an agent (listener) that registered an‘age-of' service and knows about the age of‘John' this question will be answered.
?- listen(Term, (writeln(Term),fail)). ?- broadcast(hello(world)). hello(world) true.
:- pce_begin_class(name_item, text_item). variable(id, any, get, "Id visualised"). initialise(NI, Id:any) :-> name_of(Id, Name), send_super(NI, initialise, name, Name, message(NI, set_name, @arg1)), send(NI, slot, id, Id), listen(NI, name_of(Id, Name), send(NI, selection, Name)). unlink(NI) :-> unlisten(NI), send_super(NI, unlink). set_name(NI, Name:name) :-> get(NI, id, Id), retractall(name_of(Id, _)), assert(name_of(Id, Name)), broadcast(name_of(Id, Name)). :- pce_end_class.