Package ptolemy.actor.lib.hoc
Class LifeCycleManager
- java.lang.Object
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
- Direct Known Subclasses:
ExecuteCompositeActor
,RunCompositeActor
,TransmitPropertyTransformer
public class LifeCycleManager extends TypedCompositeActor
This is a composite actor with some services for life-cycle management. FIXME: More.- Since:
- Ptolemy II 4.0
- Version:
- $Id$
- Author:
- Edward A. Lee, Yang Zhao
- See Also:
ModelReference
,SetVariable
- Pt.AcceptedRating:
- Red (eal)
- Pt.ProposedRating:
- Yellow (eal)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.CompositeEntity
CompositeEntity.ContainedObjectsIterator
-
-
Field Summary
-
Fields inherited from class ptolemy.actor.CompositeActor
_actorFiringListeners, _causalityInterface, _derivedPiggybacks, _initializables, _notifyingActorFiring, _piggybacks, _publishedPorts, _publisherRelations, _stopRequested, _subscribedPorts
-
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _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
Constructors Constructor Description LifeCycleManager()
Construct an actor in the default workspace with no container and an empty string as its name.LifeCycleManager(CompositeEntity container, java.lang.String name)
Construct a LifeCycleManager with a name and a container.LifeCycleManager(Workspace workspace)
Construct a LifeCycleManager in the specified workspace with no container and an empty string as a name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected int
_executeInsideModel()
Run a complete execution of the contained model.protected void
_fireInsideModel()
Invoke the fire() method of its local director.protected TypedCompositeActor
_getManagedActor()
Return the actor whose life cycle is being managed by this actor.protected void
_readInputs()
Iterate over input ports and read any available values into the referenced model parameters.protected void
_writeOutputs()
Iterate over output ports and read any available values from the referenced model parameters and produce them on the outputs.void
addChangeListener(ChangeListener listener)
Override the base class to delegate to the container AND also record the listener locally.void
executeChangeRequests()
Override the base class to not delegate up the hierarchy but rather to handle the request locally.boolean
isDeferringChangeRequests()
Override the base class to not delegate up the hierarchy and to indicate only whether this composite is locally deferring change requests.void
removeChangeListener(ChangeListener listener)
Override the base class to remove the listener in the container AND locally.void
requestChange(ChangeRequest change)
Override the base class to delegate up the hierarchy only if this composite is not deferring change requests, but the the container is.void
setDeferringChangeRequests(boolean isDeferring)
Override the base class to not delegate to the container.-
Methods inherited from class ptolemy.actor.TypedCompositeActor
_addEntity, _addPort, _addRelation, _checkTypesFromTo, _destinationTypeConstraints, attributeChanged, attributeTypeChanged, isBackwardTypeInferenceEnabled, newPort, newRelation, resolveTypes, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.CompositeActor
_actorFiring, _actorFiring, _finishedAddEntity, _setDirector, _transferPortParameterInputs, addActorFiringListener, addInitializable, addPiggyback, clone, connectionsChanged, createReceivers, createSchedule, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, getPublishedPort, getPublishedPortChannel, getPublishedPorts, getSubscribedPortChannel, inferringWidths, inferWidths, initialize, inputPortList, isFireFunctional, isOpaque, isPublishedPort, isStrict, iterate, linkToPublishedPort, linkToPublishedPort, linkToPublishedPort, linkToPublishedPort, needsWidthInference, newInsideReceiver, newReceiver, notifyConnectivityChange, outputPortList, postfire, prefire, preinitialize, recordFiring, registerPublisherPort, registerPublisherPort, removeActorFiringListener, removeInitializable, removePiggyback, setContainer, setDirector, setManager, stop, stopFire, terminate, unlinkToPublishedPort, unlinkToPublishedPort, unlinkToPublishedPort, unlinkToPublishedPort, unregisterPublisherPort, unregisterPublisherPort, wrapup
-
Methods inherited from class ptolemy.kernel.CompositeEntity
_adjustDeferrals, _containedDecorators, _deepOpaqueEntityList, _description, _exportMoMLContents, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepCompositeEntityList, deepEntityList, deepGetEntities, deepNamedObjList, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, lazyAllAtomicEntityList, lazyAllCompositeEntityList, lazyAllCompositeTransparentAndOpaqueEntityList, lazyClassDefinitionList, lazyDeepEntityList, lazyEntityList, lazyRelationList, numberOfEntities, numberOfRelations, numEntities, numRelations, relationList, removeAllEntities, removeAllRelations, setClassDefinition, statistics, uniqueName
-
Methods inherited from class ptolemy.kernel.ComponentEntity
_checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
-
Methods inherited from class ptolemy.kernel.Entity
_removePort, connectedPortList, connectedPorts, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts
-
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
-
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, clone, decorators, deepContains, depthInHierarchy, description, description, event, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isOverridden, isPersistent, lazyContainedObjectsIterator, message, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeDebugListener, removeHierarchyListener, setClassName, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
fire, isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Constructor Detail
-
LifeCycleManager
public LifeCycleManager()
Construct an actor in the default workspace with no container and an empty string as its name. Add the actor to the workspace directory. You should set the local director or executive director before attempting to send data to the actor or to execute it. Increment the version number of the workspace.
-
LifeCycleManager
public LifeCycleManager(Workspace workspace)
Construct a LifeCycleManager in the specified workspace with no container and an empty string as a name. You can then change the name with setName(). If the workspace argument is null, then use the default workspace. You should set the local director or executive director before attempting to send data to the actor or to execute it. Add the actor to the workspace directory. Increment the version number of the workspace.- Parameters:
workspace
- The workspace that will list the actor.
-
LifeCycleManager
public LifeCycleManager(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
Construct a LifeCycleManager with a name and a container. The container argument must not be null, or a NullPointerException will be thrown. This actor will use the workspace of the container for synchronization and version counts. If the name argument is null, then the name is set to the empty string. Increment the version of the workspace. This actor will have no local director initially, and its executive director will be simply the director of the container.- Parameters:
container
- The container.name
- The name of this actor.- Throws:
IllegalActionException
- If the container is incompatible with this actor.NameDuplicationException
- If the name coincides with an actor already in the container.
-
-
Method Detail
-
addChangeListener
public void addChangeListener(ChangeListener listener)
Override the base class to delegate to the container AND also record the listener locally.- Specified by:
addChangeListener
in interfaceChangeable
- Overrides:
addChangeListener
in classNamedObj
- Parameters:
listener
- The listener to add.- See Also:
removeChangeListener(ChangeListener)
,requestChange(ChangeRequest)
,Changeable
-
executeChangeRequests
public void executeChangeRequests()
Override the base class to not delegate up the hierarchy but rather to handle the request locally.- Specified by:
executeChangeRequests
in interfaceChangeable
- Overrides:
executeChangeRequests
in classNamedObj
- See Also:
addChangeListener(ChangeListener)
,requestChange(ChangeRequest)
,isDeferringChangeRequests()
,Changeable
-
isDeferringChangeRequests
public boolean isDeferringChangeRequests()
Override the base class to not delegate up the hierarchy and to indicate only whether this composite is locally deferring change requests. Note that even if this returns false, change requests may be deferred because the container is deferring change requests.- Specified by:
isDeferringChangeRequests
in interfaceChangeable
- Overrides:
isDeferringChangeRequests
in classNamedObj
- Returns:
- True if change requests are being deferred.
- See Also:
setDeferringChangeRequests(boolean)
,Changeable
-
removeChangeListener
public void removeChangeListener(ChangeListener listener)
Override the base class to remove the listener in the container AND locally.- Specified by:
removeChangeListener
in interfaceChangeable
- Overrides:
removeChangeListener
in classNamedObj
- Parameters:
listener
- The listener to remove.- See Also:
addChangeListener(ChangeListener)
,Changeable
-
requestChange
public void requestChange(ChangeRequest change)
Override the base class to delegate up the hierarchy only if this composite is not deferring change requests, but the the container is. Otherwise, if this composite is deferring change requests, the defer the change, regardless of what the container is doing. Otherwise, execute the change.- Specified by:
requestChange
in interfaceChangeable
- Overrides:
requestChange
in classCompositeActor
- Parameters:
change
- The requested change.- See Also:
executeChangeRequests()
,setDeferringChangeRequests(boolean)
,Changeable
-
setDeferringChangeRequests
public void setDeferringChangeRequests(boolean isDeferring)
Override the base class to not delegate to the container.- Specified by:
setDeferringChangeRequests
in interfaceChangeable
- Overrides:
setDeferringChangeRequests
in classNamedObj
- Parameters:
isDeferring
- If true, defer change requests.- See Also:
addChangeListener(ChangeListener)
,executeChangeRequests()
,isDeferringChangeRequests()
,requestChange(ChangeRequest)
,Changeable
-
_executeInsideModel
protected int _executeInsideModel() throws IllegalActionException
Run a complete execution of the contained model. A complete execution consists of invocation of super.initialize(), repeated invocations of super.prefire(), super.fire(), and super.postfire(), followed by super.wrapup(). The invocations of prefire(), fire(), and postfire() are repeated until either the model indicates it is not ready to execute (prefire() returns false), or it requests a stop (postfire() returns false or stop() is called).Note that we do not call preinitialize() here because if we do, then PortParameter.preinitialize() will set the value of the PortParameter to the value of the persistent expression. Instead, initialize() should check that things like the Matlab engine have been started and if necessary start them because wrapup() might have closed the engine.
- Returns:
- One of COMPLETED, STOP_ITERATING, or NOT_READY to indicate that either the execution completed or stop was externally requested, stopped because postfire() returned false, or stopped because prefire() returned false, respectively.
- Throws:
IllegalActionException
- If there is no director, or if the director's action methods throw it.
-
_fireInsideModel
protected void _fireInsideModel() throws IllegalActionException
Invoke the fire() method of its local director.- Throws:
IllegalActionException
- If there is no director, or if the director's fire() method throws it.
-
_getManagedActor
protected TypedCompositeActor _getManagedActor()
Return the actor whose life cycle is being managed by this actor. This base class returns this actor itself.- Returns:
- This.
-
_readInputs
protected void _readInputs() throws IllegalActionException
Iterate over input ports and read any available values into the referenced model parameters.- Throws:
IllegalActionException
- If reading the ports or setting the parameters causes it.
-
_writeOutputs
protected void _writeOutputs() throws IllegalActionException
Iterate over output ports and read any available values from the referenced model parameters and produce them on the outputs.- Throws:
IllegalActionException
- If reading the parameters or writing to the ports causes it.
-
-