Package jason.stdlib

Class send

All Implemented Interfaces:
InternalAction, Serializable

@Manual(literal=".send(receiver,performative,content[,answer,timeout])", hint="used to send messages to other agents", argsHint={"the name of the agent(s) that will receive the message","the performative (tell, achieve, askOne,...)","the message content","the answer of an ask message (for performatives askOne, askAll, and askHow) [optional]","timeout (in milliseconds) when waiting for an ask answer [optional]"}, argsType={"atom or string or list of atoms","atom","literal","term","number"}, examples={".send(rafael,tell,value(10)): adds the literal value(10)[source(jomi)] in the rafael\'s belief base.",".send(rafael,achieve,go(10,30): sends go(10,30) to the agent named rafael what creates an event &lt;+!go(10,30)[source(jomi)],T&gt; in rafael\'s event queue",".send(rafael,askOne,value(beer,X)): sends value(beer,X) to the agent named rafael. This askOne is an asynchronous ask since it does not suspend jomi\'s intention. If rafael has, for instance, the literal value(beer,2) in its belief base, this belief is automatically sent back to jomi. Otherwise an event like +?value(beer,X)[source(self)] is generated in rafael\'s side and the result of this query is then sent to jomi. In the jomi\'s side, the rafael\'s answer is added in the jomi\'s belief base and an event like +value(beer,10)[source(rafael)] is generated",".send(rafael,askOne,value(beer,X),A): sends value(beer,X) to the agent named rafael. This askOne is a synchronous ask, it suspends jomi\'s intention until rafael\'s answer is received. The answer (something like value(beer,10) unifies with A",".send(rafael,askOne,value(beer,X),A,2000)</code>: as in the previous example, but agent jomi waits for 2 seconds. If no message is received by then, A unifies with timeout"}, seeAlso={"jason.stdlib.broadcast","jason.stdlib.my_name"}) public class send extends DefaultInternalAction

Internal action: .send.

Description: sends a message to an agent.

Parameters:

  • + receiver (atom, string, or list): the receiver of the message. It is the unique name of the agent that will receive the message (or list of names).
  • + ilf (atom): the illocutionary force of the message (tell, achieve, ...).
  • + message (literal): the content of the message.
  • + answer (any term [optional]): the answer of an ask message (for performatives askOne, askAll, and askHow).
  • + timeout (number [optional]): timeout (in milliseconds) when waiting for an ask answer.

Messages with an ask illocutionary force can optionally have arguments 3 and 4. In case they are given, .send suspends the intention until an answer is received and unified with arg[3], or the message request times out as specified by arg[4]. Otherwise, the intention is not suspended and the answer (which is a tell message) produces a belief addition event as usual.

Examples (suppose that agent jomi is sending the messages):

  • .send(rafael,tell,value(10)): sends value(10) to the agent named rafael. The literal value(10)[source(jomi)] will be added as a belief in rafael's belief base.
  • .send(rafael,achieve,go(10,30): sends go(10,30) to the agent named rafael. When rafael receives this message, an event <+!go(10,30)[source(jomi)],T> will be added in rafael's event queue.
  • .send(rafael,askOne,value(beer,X)): sends value(beer,X) to the agent named rafael. This askOne is an asynchronous ask since it does not suspend jomi's intention. If rafael has, for instance, the literal value(beer,2) in its belief base, this belief is automatically sent back to jomi. Otherwise an event like +?value(beer,X)[source(self)] is generated in rafael's side and the result of this query is then sent to jomi. In the jomi's side, the rafael's answer is added in the jomi's belief base and an event like +value(beer,10)[source(rafael)] is generated.
  • .send(rafael,askOne,value(beer,X),A): sends value(beer,X) to the agent named rafael. This askOne is a synchronous ask, it suspends jomi's intention until rafael's answer is received. The answer (something like value(beer,10)) unifies with A.
  • .send(rafael,askOne,value(beer,X),A,2000): as in the previous example, but agent jomi waits for 2 seconds. If no message is received by then, A unifies with timeout.
See Also: