Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## jason.stdlib
Class send

    java.lang.Object
      jason.asSemantics.DefaultInternalAction
          jason.stdlib.send

All Implemented Interfaces:
  InternalAction, java.io.Serializable

    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 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 askOne, 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:
  `broadcast`, `my_name`, Serialized Form

Constructor Summary
`send()`

Method Summary
`boolean` | `canBeUsedInContext()` Return true if the internal action can be used in plans' context
`protected void` | `checkArguments(Term[] args)`
`java.lang.Object` | `execute(TransitionSystem ts, Unifier un, Term[] args)` Executes the internal action.
`int` | `getMaxArgs()`
`int` | `getMinArgs()`
`boolean` | `suspendIntention()` Returns true if the internal action (IA) should suspend the intention where the IA is called

Methods inherited from class jason.asSemantics.DefaultInternalAction
`prepareArguments`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### send

    public send()

Method Detail

### canBeUsedInContext

    public boolean canBeUsedInContext()

  Description copied from interface: `InternalAction`
  Return true if the internal action can be used in plans' context

  Specified by:
    `canBeUsedInContext` in interface `InternalAction`
  Overrides:
    `canBeUsedInContext` in class `DefaultInternalAction`

### getMinArgs

    public int getMinArgs()

  Overrides:
    `getMinArgs` in class `DefaultInternalAction`

### getMaxArgs

    public int getMaxArgs()

  Overrides:
    `getMaxArgs` in class `DefaultInternalAction`

### checkArguments

    protected void checkArguments(Term[] args)
                           throws JasonException

  Overrides:
    `checkArguments` in class `DefaultInternalAction`
  Throws:
    `JasonException`

### execute

    public java.lang.Object execute(TransitionSystem ts,
                                    Unifier un,
                                    Term[] args)
                             throws java.lang.Exception

  Description copied from interface: `InternalAction`
  Executes the internal action. It should return a Boolean or an Iterator. A true boolean return means that the IA was successfully executed. An Iterator result means that there is more than one answer for this IA (e.g. see member internal action).

  Specified by:
    `execute` in interface `InternalAction`
  Overrides:
    `execute` in class `DefaultInternalAction`
  Throws:
    `java.lang.Exception`

### suspendIntention

    public boolean suspendIntention()

  Description copied from interface: `InternalAction`
  Returns true if the internal action (IA) should suspend the intention where the IA is called

  Specified by:
    `suspendIntention` in interface `InternalAction`
  Overrides:
    `suspendIntention` in class `DefaultInternalAction`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD