ptolemy.actor.lib
Class SubscriptionAggregator
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.Subscriber
ptolemy.actor.lib.SubscriptionAggregator
- 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 SubscriptionAggregator
- extends Subscriber
Aggregate data produced by multiple publishers.
This is a generalization of the Subscriber (the base class)
where the channel name is interpreted as a regular expression.
Data produced by all publishers that publish on a channel name
that matches the regular expression are aggregated using the
operation given by the operation parameter.
Note that the channel
parameter of the superclass is now a regular expression in this class.
Thus, this class is usually slower than the superclass. One thing
to watch out for is using .
instead of \.
and *
instead of .+
.
For example, channel.foo.*
might be faster as
channel\.foo.+
.
- Since:
- Ptolemy II 5.2
- Version:
- $Id: SubscriptionAggregator.java 57046 2010-01-27 23:35:53Z cxh $
- Author:
- Edward A. Lee, Raymond A. Cardillo, contributor: Christopher Brooks, Bert Rodiers
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Field Summary |
private boolean |
_addOperation
Indicator that the operation is "add" rather than "multiply". |
private java.util.regex.Pattern |
_channelPattern
Regex Pattern for _channelName. |
StringParameter |
operation
The operation used to aggregate the data produced by
matching publishers. |
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 |
protected void |
_updateLinks()
Update the connection to the publishers, if there are any. |
void |
attributeChanged(Attribute attribute)
Override the base class to record the operation choice. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
Read at most one input token from each input
channel, add all the tokens, and send the result
to the output. |
void |
setContainer(CompositeEntity container)
If the new container is null, delete the named channel. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, 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 |
operation
public StringParameter operation
- The operation used to aggregate the data produced by
matching publishers. The choices are "add" and "multiply".
Note that "multiply" is a poor choice if the data type
has a non-commutative multiplication operation (e.g.
matrix types) because the result will be nondeterministic.
This is a string that defaults to "add".
_addOperation
private boolean _addOperation
- Indicator that the operation is "add" rather than "multiply".
_channelPattern
private java.util.regex.Pattern _channelPattern
- Regex Pattern for _channelName.
SubscriptionAggregator
public SubscriptionAggregator(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
- Construct a subscriber with the specified container and name.
- Parameters:
container
- The container actor.name
- The name of the actor.
- Throws:
IllegalActionException
- If the actor is not of an acceptable
class for the container.
NameDuplicationException
- If the name coincides with
an actor already in the container.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Override the base class to record the operation choice.
- Overrides:
attributeChanged
in class Subscriber
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the change is not acceptable
to this container.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone the actor into the specified workspace.
- Overrides:
clone
in class Subscriber
- Parameters:
workspace
- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains
an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- Read at most one input token from each input
channel, add all the tokens, and send the result
to the output.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class Subscriber
- Throws:
IllegalActionException
- If there is no director, or
if there is no input connection.
setContainer
public void setContainer(CompositeEntity container)
throws IllegalActionException,
NameDuplicationException
- If the new container is null, delete the named channel.
- Overrides:
setContainer
in class Subscriber
- Parameters:
container
- The proposed container.
- Throws:
IllegalActionException
- If the action would result in a
recursive containment structure, or if
this entity and container are not in the same workspace.
NameDuplicationException
- If the container already has
an entity with the name of this entity.- See Also:
ComponentEntity.getContainer()
_updateLinks
protected void _updateLinks()
throws IllegalActionException
- Update the connection to the publishers, if there are any.
- Overrides:
_updateLinks
in class Subscriber
- Throws:
IllegalActionException
- If creating the link
triggers an exception.