jade.core.behaviours
Class WakerBehaviour

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.SimpleBehaviour
              |
              +--jade.core.behaviours.WakerBehaviour

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: 2001/08/14 14:36:55 $ $Revision: 2.2 $
Author:
Fabio Bellifemine - CSELT S.p.A.
See Also:
Serialized Form

Inner classes inherited from class jade.core.behaviours.Behaviour
Behaviour.RunnableChangedEvent
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent, myEvent, NOTIFY_DOWN, NOTIFY_UP, parent, STATE_BLOCKED, STATE_READY, STATE_RUNNING
 
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
actionWrapper, block, block, getBehaviourName, getDataStore, handle, 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 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.
Overrides:
action in class Behaviour
Tags copied from 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 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.
Overrides:
done in class Behaviour
Tags copied from class: Behaviour
Returns:
true if the behaviour has completely executed.