ptolemy.domains.de.lib
Class SharedQueue
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.domains.de.lib.Queue
ptolemy.domains.de.lib.SharedQueue
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class SharedQueue
- extends Queue
A queue that outputs the next token to an output channel that is ready to
receive it. It can have multiple output channels, and the same number of
trigger channels. Initially all output channels are assumed to be ready. When a
token is available, it is sent to the first channel that is ready, and that
channel is marked not ready. When all channels are not ready, the token would
be queued. If the number of tokens already in the queue is equal to the queue
capacity (0 means infinity), then new tokens are lost.
To make an output channel ready after a token is sent to it, a triggering
signal needs to be received in the corresponding channel of the trigger port.
- Since:
- Ptolemy II 8.0
- Version:
- $Id: SharedQueue.java 57044 2010-01-27 22:41:05Z cxh $
- Author:
- Thomas Huining Feng
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
SharedQueue(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
void |
fire()
If there is an input at the input port, consume it. |
boolean |
prefire()
Return true if either there is input at the input port, or there are
triggering signals at the trigger port. |
void |
preinitialize()
Make all output channels ready. |
void |
wrapup()
Clear the buffer. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate |
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 |
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, 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, propagateValue, propagateValues, removeChangeListener, removeDebugListener, 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 |
_outputReady
private boolean[] _outputReady
SharedQueue
public SharedQueue(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
- Parameters:
container
- The container.name
- The name 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.
fire
public void fire()
throws IllegalActionException
- If there is an input at the input port, consume it. If there are tokens
in the queue and there are ready output channels, the tokens are sent to
those output channels. If triggers are available at the trigger port,
consume them and make the corresponding output channels ready. Also send
tokens to those channels if there are tokens available.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class Queue
- Throws:
IllegalActionException
- If getting tokens from input and
trigger ports or sending token to output throws it.
prefire
public boolean prefire()
throws IllegalActionException
- Return true if either there is input at the input port, or there are
triggering signals at the trigger port. Return false otherwise.
- Specified by:
prefire
in interface Executable
- Overrides:
prefire
in class Queue
- Returns:
- True if this actor is ready to fire.
- Throws:
IllegalActionException
- If the ports cannot be tested for
availability of tokens.
preinitialize
public void preinitialize()
throws IllegalActionException
- Make all output channels ready.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class Queue
- Throws:
IllegalActionException
- If thrown by the superclass.
wrapup
public void wrapup()
throws IllegalActionException
- Clear the buffer.
- Specified by:
wrapup
in interface Initializable
- Overrides:
wrapup
in class Queue
- Throws:
IllegalActionException
- If thrown by the superclass.