Class ThreadedBehaviourFactory.ThreadedBehaviourWrapper

    • 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.
      • 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​(Behaviour.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.
        Overrides:
        handle in class Behaviour
        Parameters:
        rce - The event to handle
      • run

        public void run()
        Specified by:
        run in interface Runnable
      • getThread

        public final Thread getThread()
      • getBehaviour

        public final Behaviour getBehaviour()
      • getThreadState

        public final String getThreadState()