jade.core.behaviours
Class WakerBehaviour

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.SimpleBehaviour
              |
              +--jade.core.behaviours.WakerBehaviour
All Implemented Interfaces:
java.io.Serializable, Serializable

public abstract class WakerBehaviour
extends SimpleBehaviour

This abstract class implements a OneShot task that must be executed only one just after a given timeout is elapsed.

The task is simply the call to the method handleElapsedTimeout() that must be implemented by all subclasses. Notice that the best practice in JADE is when this method just adds a behaviour to the agent class.

All subclasses have available the protected variable myAgent that points to the agent class.

The programmer must use this abstract class in this simple way:

Version:
$Date: 2003/11/25 08:23:34 $ $Revision: 2.4 $
Author:
Fabio Bellifemine - CSELT S.p.A.
See Also:
Serialized Form

Field Summary
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent, parent
 
Constructor Summary
WakerBehaviour(Agent a, java.util.Date wakeupDate)
          This method constructs the behaviour.
WakerBehaviour(Agent a, long timeout)
          This method constructs the behaviour.
 
Method Summary
 void action()
          Runs the behaviour.
 boolean done()
          Check if this behaviour is done.
protected abstract  void handleElapsedTimeout()
          This method is called by this subclass only after the given timeout is elapsed.
 void reset(java.util.Date wakeupDate)
          This method must be called to reset the behaviour and starts again
 void reset(long timeout)
          This method must be called to reset the behaviour and starts again
 
Methods inherited from class jade.core.behaviours.SimpleBehaviour
reset
 
Methods inherited from class jade.core.behaviours.Behaviour
block, block, getBehaviourName, getDataStore, isRunnable, onEnd, onStart, restart, root, setAgent, setBehaviourName, setDataStore
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WakerBehaviour

public WakerBehaviour(Agent a,
                      java.util.Date wakeupDate)
This method constructs the behaviour.

Parameters:
a - is the pointer to the agent
wakeupDate - is the date when the task must be executed

WakerBehaviour

public WakerBehaviour(Agent a,
                      long timeout)
This method constructs the behaviour.

Parameters:
a - is the pointer to the agent
timeout - indicates the number of milliseconds after which the task must be executed
Method Detail

action

public final void action()
Description copied from class: Behaviour
Runs the behaviour. This abstract method must be implemented by Behavioursubclasses to perform ordinary behaviour duty. An agent schedules its behaviours calling their action() method; since all the behaviours belonging to the same agent are scheduled cooperatively, this method must not enter in an endless loop and should return as soon as possible to preserve agent responsiveness. To split a long and slow task into smaller section, recursive behaviour aggregation may be used.

Specified by:
action in class Behaviour
See Also:
CompositeBehaviour

handleElapsedTimeout

protected abstract void handleElapsedTimeout()
This method is called by this subclass only after the given timeout is elapsed. The method has available the class variable myAgent that points to the agent class.


reset

public void reset(java.util.Date wakeupDate)
This method must be called to reset the behaviour and starts again

Parameters:
wakeupDate - is the new time when the task must be executed again

reset

public void reset(long timeout)
This method must be called to reset the behaviour and starts again

Parameters:
timeout - indicates in how many milliseconds from now the behaviour must be waken up again.

done

public final boolean done()
Description copied from class: Behaviour
Check if this behaviour is done. The agent scheduler calls this method to see whether a Behaviour still need to be run or it has completed its task. Concrete behaviours must implement this method to return their completion state. Finished behaviours are removed from the scheduling queue, while others are kept within to be run again when their turn comes again.

Specified by:
done in class Behaviour
Returns:
true if the behaviour has completely executed.


JADE