Class Processor

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, BranchActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class Processor
    extends CSPActor
    A CSP actor that contends for a shared resource. A Processor actor is granted access to the shared resource via a Controller actor. The processor must connect to a Controller via its requestInput and requestOutput ports. The shared resource that the Processor attempts to gain access to is a Memory actor. The memory actor is connected to via the Processor's memoryInput and memoryOutput ports. The Processor actor has four informal states. In state one it determines at what time it will next attempt to access the shared resource. It will then place a request at the determined time. In state two, it will wait to see if it has been granted the request. The Processor enters state three if it is granted the request. It remains in state three for 300 milliseconds, accesses the shared resource and then returns to state two. If the Processor is denied its request, then it enters four and remains in that state for 300 milliseconds after which it returns to state four. In addition to the resource contention features of Processor, it can also notify an ExecEventListener as this actor jumps between its three states. Such notification is enabled by adding an ExecEventListener to this actor's listener list via the addListeners() method. Listeners can be removed via the removeListeners() method. ExecEventListeners are currently implemented to serve as conduits between Ptolemy II and the Diva graphical user interface.
    Since:
    Ptolemy II 0.3
    Version:
    $Id$
    Author:
    John S. Davis II
    Pt.AcceptedRating:
    Red (cxh)
    Pt.ProposedRating:
    Red (davisj)
    • Field Detail

      • requestInput

        public TypedIOPort requestInput
        The resource request input port. Resources are granted through this port. The type of this port is BaseType.BOOLEAN.
      • requestOutput

        public TypedIOPort requestOutput
        The resource request output port. Resource requests are made through this port with a token that includes the requestor's priority level. The type of this port is BaseType.INT.
      • memoryInput

        public TypedIOPort memoryInput
        The input port through which this actor receives data from the shared resource. The type of this port is BaseType.GENERAL.
      • memoryOutput

        public TypedIOPort memoryOutput
        The output port through which this actor sends data to the shared resource. The type of this port is BaseType.STRING.
    • Constructor Detail

      • Processor

        public Processor​(CompositeEntity cont,
                         java.lang.String name,
                         int code)
                  throws IllegalActionException,
                         NameDuplicationException
        Construct a Processor actor with the specified container, name and priority code of this actor.
        Parameters:
        cont - The container of this actor.
        name - The name of this actor.
        code - The priority code of this actor.
        Throws:
        IllegalActionException - If the actor cannot be contained by the proposed container.
        NameDuplicationException - If the container already has an actor with this name.
    • Method Detail

      • accessMemory

        public void accessMemory​(boolean read)
                          throws IllegalActionException
        Attempt to access the shared resource.
        Throws:
        IllegalActionException - If there is an error during communication through any of this actor's ports.
      • performReadNext

        public boolean performReadNext()
        Return true if this actor has randomly determined to attempt to read data from the shared resource on its next memory access; otherwise return false.
        Returns:
        True if this actor will attempt to read from the shared resource; return false otherwise.