jade.core.behaviours
Class ThreadedBehaviourFactory.ThreadedBehaviourWrapper

java.lang.Object
  |
  +--jade.core.behaviours.Behaviour
        |
        +--jade.core.behaviours.ThreadedBehaviourFactory.ThreadedBehaviourWrapper
All Implemented Interfaces:
java.lang.Runnable, java.io.Serializable, Serializable
Enclosing class:
ThreadedBehaviourFactory

public class ThreadedBehaviourFactory.ThreadedBehaviourWrapper
extends Behaviour
implements java.lang.Runnable

Inner class ThreadedBehaviourWrapper

See Also:
Serialized Form

Field Summary
 
Fields inherited from class jade.core.behaviours.Behaviour
myAgent
 
Method Summary
 void action()
          Runs the behaviour.
 boolean done()
          Check if this behaviour is done.
 Behaviour getBehaviour()
           
 DataStore getDataStore()
          Return the private data store of this Behaviour.
 java.lang.Thread getThread()
           
 java.lang.String getThreadState()
           
protected  void handle(RunnableChangedEvent rce)
          Propagate a DOWNWARDS event (typically this happens when this ThreadedBehaviourWrapper is added as a child of a CompositeBehaviour and the latter, or an ancestor, is blocked/restarted) to the wrapped threaded behaviour.
 int onEnd()
          This method is just an empty placeholder for subclasses.
 void onStart()
          This method is just an empty placeholders for subclasses.
 void reset()
          Restores behaviour initial state.
 void restart()
          Propagate a restart() call (typically this happens when this ThreadedBehaviourWrapped is directly added to the agent Scheduler and a message is received) to the wrapped threaded behaviour.
 void run()
           
 void setDataStore(DataStore ds)
          Set the private data store of this Behaviour
protected  void setParent(CompositeBehaviour parent)
          Propagate the parent to the wrapped behaviour.
 
Methods inherited from class jade.core.behaviours.Behaviour
block, block, getBehaviourName, getParent, isRunnable, root, setAgent, setBehaviourName
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

onStart

public void onStart()
Description copied from class: Behaviour
This method is just an empty placeholders for subclasses. It is executed just once before starting behaviour execution. Therefore, it acts as a prolog to the task represented by this Behaviour.

Overrides:
onStart in class Behaviour

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.

Specified by:
action in class Behaviour
See Also:
CompositeBehaviour

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.

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

onEnd

public int onEnd()
Description copied from class: Behaviour
This method is just an empty placeholder for subclasses. It is invoked just once after this behaviour has ended. Therefore, it acts as an epilog for the task represented by this Behaviour.
Note that onEnd is called after the behaviour has been removed from the pool of behaviours to be executed by an agent. Therefore calling reset() is not sufficient to cyclically repeat the task represented by this Behaviour. In order to achieve that, this Behaviour must be added again to the agent (using myAgent.addBehaviour(this)). The same applies to in the case of a Behaviour that is a child of a ParallelBehaviour.

Overrides:
onEnd in class Behaviour
Returns:
an integer code representing the termination value of the behaviour.

setParent

protected void setParent(CompositeBehaviour parent)
Propagate the parent to the wrapped behaviour. NOTE that the parent member variable of the wrapped behaviour must point to the DummyParentBehaviour --> From the wrapped behaviour accessing the actual parent must always be retrieved through the getParent() method.

Overrides:
setParent in class Behaviour

setDataStore

public void setDataStore(DataStore ds)
Description copied from class: Behaviour
Set the private data store of this Behaviour

Overrides:
setDataStore in class Behaviour
Parameters:
ds - the DataStore that this Behaviour will use as its private data store

getDataStore

public DataStore getDataStore()
Description copied from class: Behaviour
Return the private data store of this Behaviour. If it was null, a new DataStore is created and returned.

Overrides:
getDataStore in class Behaviour
Returns:
The private data store of this Behaviour

reset

public void reset()
Description copied from class: Behaviour
Restores behaviour initial state. This method must be implemented by concrete subclasses in such a way that calling reset() on a behaviour object is equivalent to destroying it and recreating it back. The main purpose for this method is to realize multistep cyclic behaviours without needing expensive constructions an deletion of objects at each loop iteration. Remind to call super.reset() from the sub-classes.

Overrides:
reset in class Behaviour

restart

public void restart()
Propagate a restart() call (typically this happens when this ThreadedBehaviourWrapped is directly added to the agent Scheduler and a message is received) to the wrapped threaded behaviour.

Overrides:
restart in class Behaviour
See Also:
Behaviour.block()

handle

protected void handle(RunnableChangedEvent rce)
Propagate a DOWNWARDS event (typically this happens when this ThreadedBehaviourWrapper is added as a child of a CompositeBehaviour and the latter, or an ancestor, is blocked/restarted) to the wrapped threaded behaviour. If the event is a restart, also notify the dedicated thread.


run

public void run()
Specified by:
run in interface java.lang.Runnable

getThread

public final java.lang.Thread getThread()

getBehaviour

public final Behaviour getBehaviour()

getThreadState

public final java.lang.String getThreadState()


JADE