ptolemy.domains.de.lib
Class TimeCompare
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.de.kernel.DEActor
ptolemy.domains.de.lib.TimeCompare
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, SequenceActor, TimedActor, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class TimeCompare
- extends DEActor
A DE actor to compare the time stamps of events at its two input ports, and
output the difference. Every time an event can be processed either at input
port input1
or at input2
, the event is consumed. The
value that the event carries is insignificant, but the time stamp of the event
is recorded in a local list. Time stamps received at the two input ports are
stored in two different lists. Every time when both lists have data, the
difference between the top elements of the lists is obtained, and is sent to
the output port. This done by subtracting the time stamp of every top event in
the list for input2
with the time stamp of every top event in the
list for input1
.
This actor could potentially consume an infinite amount of memory if the
arrival rates of events at the two input ports are different, because one of
the lists keeps growing.
- Since:
- Ptolemy II 8.0
- Version:
- $Id: TimeCompare.java 57044 2010-01-27 22:41:05Z cxh $
- Author:
- Thomas Huining Feng
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Field Summary |
private java.util.List<java.lang.Double> |
_input1TimeStamps
The list to store the time stamps received at input1 but have never been
compared. |
private java.util.List<java.lang.Double> |
_input2TimeStamps
The list to store the time stamps received at input2 but have never been
compared. |
TypedIOPort |
input1
The first input port. |
TypedIOPort |
input2
The second input port. |
Parameter |
nonnegative
A boolean parameter to decide whether inputs at input2 should be ignored
if they lead to negative outputs. |
TypedIOPort |
output
The output port to which difference values are sent. |
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 |
TimeCompare(CompositeEntity container,
java.lang.String name)
Construct an actor with the specified container and name. |
Method Summary |
java.lang.Object |
clone(Workspace workspace)
Clone this actor into the specified workspace. |
void |
fire()
Fire this actor once. |
void |
initialize()
Initialize this actor. |
boolean |
prefire()
Return ture if this actor can fire. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, 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, 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 |
input1
public TypedIOPort input1
- The first input port.
input2
public TypedIOPort input2
- The second input port.
nonnegative
public Parameter nonnegative
- A boolean parameter to decide whether inputs at input2 should be ignored
if they lead to negative outputs.
output
public TypedIOPort output
- The output port to which difference values are sent.
_input1TimeStamps
private java.util.List<java.lang.Double> _input1TimeStamps
- The list to store the time stamps received at input1 but have never been
compared.
_input2TimeStamps
private java.util.List<java.lang.Double> _input2TimeStamps
- The list to store the time stamps received at input2 but have never been
compared.
TimeCompare
public TimeCompare(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the specified container and name.
This is protected because there is no reason to create an instance
of this class, but derived classes will want to invoke the
constructor of the superclass.
- Parameters:
container
- The container.name
- The name.
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone this actor into the specified workspace. The new actor is
not added to the directory of that workspace (you must do this
yourself if you want it there).
The result is a new actor with the same ports as the original, but
no connections and no container. A container must be set before
much can be done with this actor.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the cloned object.
- Returns:
- A new ComponentEntity.
- Throws:
java.lang.CloneNotSupportedException
- If cloned ports cannot have
as their container the cloned entity (this should not occur), or
if one of the attributes cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- Fire this actor once. If there are events at its input ports, they are
immediately consumed, and their time stamps are recorded in a list. If
the two internal lists for the two input signals both have data, then
outputs are sent to the output port, which are the difference between
the time stamps in the two lists.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If thrown when trying to consume input
events or produce output events.
initialize
public void initialize()
throws IllegalActionException
- Initialize this actor.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- Never thrown.
prefire
public boolean prefire()
throws IllegalActionException
- Return ture if this actor can fire. This actor can fire if prefire() of
the superclass returns true, and either of the two input ports, or both,
have token.
- Specified by:
prefire
in interface Executable
- Overrides:
prefire
in class AtomicActor
- Returns:
- true if this actor can fire.
- Throws:
IllegalActionException
- If thrown when trying to decide
whether the input ports have token or not.