ptolemy.domains.ddf.lib
Class DDFSingleTokenCommutator

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.Transformer
                              extended by ptolemy.actor.lib.SingleTokenCommutator
                                  extended by ptolemy.domains.ddf.lib.DDFSingleTokenCommutator
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, SequenceActor, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class DDFSingleTokenCommutator
extends SingleTokenCommutator

The DDFSingleTokenCommutator has a multiport input port and an output port. The types of the ports are undeclared and will be resolved by the type resolution mechanism, with the constraint that the output type must be greater than or equal to the input type. On each call to the fire() method, the actor reads one token from the current input channel, and writes the token to the output port. Then in the postfire() method, it will update token consumption rate of the input port so that it will read token from the next channel in the next iteration.

Since:
Ptolemy II 4.1
Version:
$Id: DDFSingleTokenCommutator.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Gang Zhou
See Also:
Serialized Form
Accepted Rating:
Yellow (cxh)
Proposed Rating:
Yellow (zgang)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private static IntToken _one
          A final static IntToken with value 1.
private  ArrayToken[] _rateArray
          An array of ArrayTokens to be used to set tokenConsumptionRate of the input port.
private static IntToken _zero
          A final static IntToken with value 0.
 Parameter input_tokenConsumptionRate
          This parameter provides token consumption rate for each input channel.
 
Fields inherited from class ptolemy.actor.lib.Transformer
input, output
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _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
DDFSingleTokenCommutator(CompositeEntity container, java.lang.String name)
          Construct an actor in the specified container with the specified name.
 
Method Summary
 void connectionsChanged(Port port)
          Pre-calculate the rates to be set in the rate parameter of the input port.
 void initialize()
          Begin execution by setting rate parameter indicating it will read the zeroth input channel.
 boolean postfire()
          Update rate parameter indicating the next input channel.
 
Methods inherited from class ptolemy.actor.lib.SingleTokenCommutator
_getCurrentInputPosition, fire
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 
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.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
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, attributeChanged, 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
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, prefire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

input_tokenConsumptionRate

public Parameter input_tokenConsumptionRate
This parameter provides token consumption rate for each input channel. The type is array of ints.


_one

private static final IntToken _one
A final static IntToken with value 1.


_zero

private static final IntToken _zero
A final static IntToken with value 0.


_rateArray

private ArrayToken[] _rateArray
An array of ArrayTokens to be used to set tokenConsumptionRate of the input port. Each ArrayToken indicates the input port needs to consume one token from a corresponding channel and no token from the rest of the channels. The array is initialized in the method connectionsChanged().

Constructor Detail

DDFSingleTokenCommutator

public DDFSingleTokenCommutator(CompositeEntity container,
                                java.lang.String name)
                         throws NameDuplicationException,
                                IllegalActionException
Construct an actor in the specified container with the specified name.

Parameters:
container - The container.
name - This is the name of this distributor within the container.
Throws:
NameDuplicationException - If an actor with an identical name already exists in the container.
IllegalActionException - If the actor cannot be contained by the proposed container.
Method Detail

connectionsChanged

public void connectionsChanged(Port port)
Pre-calculate the rates to be set in the rate parameter of the input port. Initialize the private variable _rateArray, each element of which indicates the input port needs to consume one token from a corresponding channel and no token from the rest of the channels.

Overrides:
connectionsChanged in class AtomicActor
Parameters:
port - The port that has connection changes.

initialize

public void initialize()
                throws IllegalActionException
Begin execution by setting rate parameter indicating it will read the zeroth input channel.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class SingleTokenCommutator
Throws:
IllegalActionException - If there is no director.

postfire

public boolean postfire()
                 throws IllegalActionException
Update rate parameter indicating the next input channel.

Specified by:
postfire in interface Executable
Overrides:
postfire in class SingleTokenCommutator
Returns:
True if execution can continue into the next iteration.
Throws:
IllegalActionException - If any called method throws IllegalActionException.