ptolemy.actor.lib.hoc
Class LifeCycleManager

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.kernel.CompositeEntity
                      extended by ptolemy.actor.CompositeActor
                          extended by ptolemy.actor.TypedCompositeActor
                              extended by ptolemy.actor.lib.hoc.LifeCycleManager
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:
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: LifeCycleManager.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Edward A. Lee, Yang Zhao
See Also:
ModelReference, SetVariable, Serialized Form
Accepted Rating:
Red (eal)
Proposed Rating:
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, _initializables, _notifyingActorFiring, _publishedPorts, _publisherRelations, _stopRequested
 
Fields inherited from class ptolemy.kernel.CompositeEntity
_levelCrossingLinks
 
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
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
protected  int _executeInsideModel()
          Run a complete execution of the contained model.
protected  void _fireInsideModel()
          Invoke the fire() method of its local director.
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 executeChangeRequests()
          Execute requested changes.
 boolean isOpaque()
          Return true, since this actor is always opaque.
 void requestChange(ChangeRequest change)
          Request that given change be executed.
 
Methods inherited from class ptolemy.actor.TypedCompositeActor
_addEntity, _addPort, _addRelation, _checkTypesFromTo, _typeConstraintsFromTo, newPort, newRelation, resolveTypes, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.CompositeActor
_actorFiring, _actorFiring, _finishedAddEntity, _getPublishedPort, _setDirector, addActorFiringListener, addInitializable, addPiggyback, clone, connectionsChanged, createReceivers, createSchedule, fire, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inferringWidths, inferWidths, initialize, inputPortList, isFireFunctional, isStrict, iterate, linkToPublishedPort, linkToPublishedPort, needsWidthInference, newInsideReceiver, newReceiver, notifyConnectivityChange, outputPortList, postfire, prefire, preinitialize, recordFiring, registerPublisherPort, removeActorFiringListener, removeInitializable, removePiggyback, setContainer, setDirector, setManager, stop, stopFire, terminate, unlinkToPublishedPort, unlinkToPublishedPort, unregisterPublisherPort, wrapup
 
Methods inherited from class ptolemy.kernel.CompositeEntity
_adjustDeferrals, _deepOpaqueEntityList, _description, _exportMoMLContents, _recordDecoratedAttributes, _removeEntity, _removeRelation, _validateSettables, allAtomicEntityList, allCompositeEntityList, allowLevelCrossingConnect, classDefinitionList, connect, connect, containedObjectsIterator, deepEntityList, deepGetEntities, deepOpaqueEntityList, deepRelationSet, entityList, entityList, exportLinks, exportMoML, getAttribute, getEntities, getEntity, getPort, getRelation, getRelations, isAtomic, lazyAllAtomicEntityList, lazyAllCompositeEntityList, 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, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, attributeTypeChanged, clone, 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, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, 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
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
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

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

executeChangeRequests

public void executeChangeRequests()
Execute requested changes. In this class, do not delegate the change request to the container, but execute the request immediately. Listeners will be notified of success or failure.

Specified by:
executeChangeRequests in interface Changeable
Overrides:
executeChangeRequests in class NamedObj
See Also:
NamedObj.addChangeListener(ChangeListener), requestChange(ChangeRequest), NamedObj.setDeferringChangeRequests(boolean)

isOpaque

public boolean isOpaque()
Return true, since this actor is always opaque. This method is not synchronized on the workspace, so the caller should be.

Overrides:
isOpaque in class CompositeActor
Returns:
True if the entity is opaque.
See Also:
CompositeEntity

requestChange

public void requestChange(ChangeRequest change)
Request that given change be executed. In this class, do not delegate the change request to the container, but execute the request immediately or record it, depending on whether setDeferringChangeRequests() has been called. If setDeferChangeRequests() has been called with a true argument, then simply queue the request until either setDeferChangeRequests() is called with a false argument or executeChangeRequests() is called. If this object is already in the middle of executing a change request, then that execution is finished before this one is performed. Change listeners will be notified of success (or failure) of the request when it is executed.

Specified by:
requestChange in interface Changeable
Overrides:
requestChange in class CompositeActor
Parameters:
change - The requested change.
See Also:
executeChangeRequests(), NamedObj.setDeferringChangeRequests(boolean)

_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).

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.

_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.