Class Processor
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.domains.csp.kernel.CSPActor
-
- ptolemy.domains.csp.demo.BusContention.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)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description TypedIOPort
memoryInput
The input port through which this actor receives data from the shared resource.TypedIOPort
memoryOutput
The output port through which this actor sends data to the shared resource.TypedIOPort
requestInput
The resource request input port.TypedIOPort
requestOutput
The resource request output port.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
-
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
-
-
Constructor Summary
Constructors Constructor Description Processor(CompositeEntity cont, java.lang.String name, int code)
Construct a Processor actor with the specified container, name and priority code of this actor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accessMemory(boolean read)
Attempt to access the shared resource.void
fire()
Execute this actor by requesting and accepting access to a shared resource until b() returns true.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.void
wrapup()
Wrapup this actor by first calling the super class wrapup method and then generating an event that will set the final state of this actor for the graphical user interface.-
Methods inherited from class ptolemy.domains.csp.kernel.CSPActor
_cancelDelay, _continue, _waitForDeadlock, chooseBranch, clone, delay, getBranchController, initialize, postfire, terminate
-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
-
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
-
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
-
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, prefire, stop, stopFire
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
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.
-
fire
public void fire() throws IllegalActionException
Execute this actor by requesting and accepting access to a shared resource until b() returns true.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If an error occurs during communication through one of the 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.
-
wrapup
public void wrapup() throws IllegalActionException
Wrapup this actor by first calling the super class wrapup method and then generating an event that will set the final state of this actor for the graphical user interface.- Specified by:
wrapup
in interfaceInitializable
- Overrides:
wrapup
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If the super class throws it.
-
-