ptolemy.actor.lib
Class LimitedFiringSource
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.Source
ptolemy.actor.lib.LimitedFiringSource
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
- Direct Known Subclasses:
- Const, Exec, ExecutionTime, FileReader, SequenceSource
public class LimitedFiringSource
- extends Source
Base class for source actors that will only fire a limited number of
times. This actor has a parameter,
firingCountLimit, that optionally limits the number of iterations
for which the actor is fired. If this number is n > 0, then
the n-th invocation of postfire() returns false, which indicates
to the scheduler that it should stop invocations of this actor.
The default value of firingCountLimit
is NONE, which results in postfire always returning
true. Derived classes must call super.postfire() for this mechanism to
work.
- Since:
- Ptolemy II 6.1
- Version:
- $Id: LimitedFiringSource.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Edward A. Lee
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Field Summary |
protected int |
_firingCountLimit
This is the value in parameter
firingCountLimit. |
protected int |
_iterationCount
The current number of elapsed iterations. |
Parameter |
firingCountLimit
If a positive integer, then the number of iterations before the
actor indicates to the scheduler that it is finished by returning
false in its postfire() method. |
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Method Summary |
void |
attributeChanged(Attribute attribute)
Override the base class to determine which attribute is being
specified. |
void |
initialize()
Initialize the iteration counter. |
boolean |
postfire()
Increment the iteration counter, and if it equals the
value of the firingCountLimit parameter, return false. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, 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.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 |
firingCountLimit
public Parameter firingCountLimit
- If a positive integer, then the number of iterations before the
actor indicates to the scheduler that it is finished by returning
false in its postfire() method.
_firingCountLimit
protected int _firingCountLimit
- This is the value in parameter
firingCountLimit.
It may be convenient for derived classes to read this
variable in the iterate() method.
_iterationCount
protected int _iterationCount
- The current number of elapsed iterations.
It may be convenient for derived classes to read/set this
variable in the iterate() method.
LimitedFiringSource
public LimitedFiringSource(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
The firingCountLimit parameter is also constructed.
- 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.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Override the base class to determine which attribute is being
specified.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the function is not recognized.
initialize
public void initialize()
throws IllegalActionException
- Initialize the iteration counter. A derived class must call
this method in its initialize() method or the firingCountLimit
feature will not work.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the parent class throws it,
which could occur if, for example, the director will not accept
sequence actors.
postfire
public boolean postfire()
throws IllegalActionException
- Increment the iteration counter, and if it equals the
value of the firingCountLimit parameter, return false.
Otherwise, return true. Derived classes should call this
at the end of their postfire() method and return its returned
value.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException
- If firingCountLimit has
an invalid expression.