|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.hoc.ModelReference
public class ModelReference
This is an atomic actor that can execute a model specified by a file or URL. This can be used to define an actor whose firing behavior is given by a complete execution of another model.
An instance of this actor can have ports added to it. If it has input ports, then on each firing, before executing the referenced model, this actor will read an input token from the input port, if there is one, and use it to set the value of a top-level parameter in the referenced model that has the same name as the port, if there is one. The simplest way to ensure that there is a matching parameter is to use a PortParameter for inputs. However, this actor will work also for ordinary ports. In this case, if there is a top-level parameter of the referenced model with the same name as the port, and it is an instance of Variable (or its derived class Parameter), then the token read at the input is moved into it using its setToken() method. Otherwise, if it is an instance of Settable, then a string representation of the token is copied using the setExpression() method. Input ports should not be multiports, and if they are, then all but the first channel will be ignored.
If this actor has output ports and the referenced model is executed, then upon completion of that execution, this actor looks for top-level parameters in the referenced model whose names match those of the output ports. If there are such parameters, then the final value of those parameters is sent to the output ports. If such a parameter is an instance of Variable (or its derived class Parameter), then its contained token is sent to the output. Otherwise, if it is an instance of Settable, then a string token is produced on the output with its value equal to that returned by getExpression() of the Settable. If the model is executed in the calling thread, then the outputs will be produced before the fire() method returns. If the model is executed in a new thread, then the outputs will be produced whenever that thread completes execution of the model. Output ports should not be multiports. If they are, then all but the first channel will be ignored. Normally, when you create output ports for this actor, you will have to manually set the type. There is no type inference from the parameter of the referenced model.
A typical use of this actor will use the SetVariable actor inside to define the value of the output port.
A suite of parameters is provided to control what happens when this actor executes:
There are currently some limitations:
RunCompositeActor
,
SetVariable
,
Serialized Form
Red (eal) |
Yellow (eal) |
Nested Class Summary |
---|
Nested classes/interfaces inherited from class ptolemy.kernel.Entity |
---|
Entity.ContainedObjectsIterator |
Field Summary | |
---|---|
protected boolean |
_alreadyReadInputs
If a derived class calls modelFileOrURL.update() in its fire() method prior to calling super.fire(), then it should set this flag to true. |
private static int |
_DO_NOTHING
|
private boolean |
_executing
|
private int |
_executionOnFiringValue
The value of the executionOnFiring parameter. |
private java.lang.Thread |
_lingeringThread
Reference to a thread that is lingering. |
private Manager |
_manager
The manager currently managing execution. |
protected NamedObj |
_model
The model. |
private int |
_postfireActionValue
The value of the postfireAction parameter. |
private static int |
_RUN_IN_A_NEW_THREAD
|
private static int |
_RUN_IN_CALLING_THREAD
|
private static int |
_STOP_EXECUTING
|
private java.lang.Throwable |
_throwable
|
StringParameter |
executionOnFiring
The value of this string parameter determines what execution happens when the fire() method is invoked. |
Parameter |
lingerTime
The amount of time (in milliseconds) to linger in the fire() method of this actor. |
FilePortParameter |
modelFileOrURL
The file name or URL of the model that this actor represents. |
StringParameter |
postfireAction
The value of this string attribute determines what happens in the postfire() method. |
Fields inherited from class ptolemy.actor.AtomicActor |
---|
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested |
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 | |
---|---|
ModelReference(CompositeEntity container,
java.lang.String name)
Construct a ModelReference with a name and a container. |
Method Summary | |
---|---|
protected void |
_readInputsAndValidateSettables()
Iterate over input ports and read any available values into the referenced model parameters and validate settable attributes. |
private void |
_writeOutputs()
Iterate over output ports and read any available values from the referenced model parameters and produce them on the outputs. |
void |
attributeChanged(Attribute attribute)
Override the base class to open the model specified if the attribute is modelFileOrURL, or for other parameters, to cache their values. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
executionError(Manager manager,
java.lang.Throwable throwable)
React to the fact that execution has failed by unregistering as an execution listener and by allowing subsequent executions. |
void |
executionFinished(Manager manager)
React to the fact that execution is finished by unregistering as an execution listener and by allowing subsequent executions. |
void |
fire()
Run a complete execution of the referenced model. |
void |
managerStateChanged(Manager manager)
Report in debugging statements that the manager state has changed. |
boolean |
postfire()
Override the base class to perform requested postfire actions. |
void |
stop()
Override the base class to call stop() on the referenced model. |
void |
stopFire()
Request that execution of the current iteration complete. |
void |
terminate()
Override the base class to call terminate() on the referenced model. |
void |
wrapup()
Report an exception if it occurred in a background run. |
Methods inherited from class ptolemy.actor.TypedAtomicActor |
---|
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints |
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.InstantiableNamedObj |
---|
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition |
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 |
---|
isFireFunctional, isStrict, iterate, prefire |
Methods inherited from interface ptolemy.actor.Initializable |
---|
addInitializable, initialize, preinitialize, removeInitializable |
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 |
Field Detail |
---|
public StringParameter executionOnFiring
public Parameter lingerTime
public FilePortParameter modelFileOrURL
public StringParameter postfireAction
protected boolean _alreadyReadInputs
protected NamedObj _model
private static int _DO_NOTHING
private static int _RUN_IN_CALLING_THREAD
private static int _RUN_IN_A_NEW_THREAD
private transient int _executionOnFiringValue
private transient volatile boolean _executing
private java.lang.Thread _lingeringThread
private Manager _manager
private transient int _postfireActionValue
private static int _STOP_EXECUTING
private transient java.lang.Throwable _throwable
Constructor Detail |
---|
public ModelReference(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container
- The container.name
- The name of this actor.
IllegalActionException
- If the container is incompatible
with this actor.
NameDuplicationException
- If the name coincides with
an actor already in the container.Method Detail |
---|
public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged
in class NamedObj
attribute
- The attribute that changed.
IllegalActionException
- If the change is not acceptable
to this container (not thrown in this base class).public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
clone
in class AtomicActor
workspace
- The workspace for the new object.
java.lang.CloneNotSupportedException
- If a derived class contains
an attribute that cannot be cloned.NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
public void executionError(Manager manager, java.lang.Throwable throwable)
executionError
in interface ExecutionListener
manager
- The manager controlling the execution.throwable
- The throwable to report.public void executionFinished(Manager manager)
executionFinished
in interface ExecutionListener
manager
- The manager controlling the execution.public void fire() throws IllegalActionException
fire
in interface Executable
fire
in class AtomicActor
IllegalActionException
- If there is no director, or if
the director's action methods throw it.public void managerStateChanged(Manager manager)
managerStateChanged
in interface ExecutionListener
manager
- The manager controlling the execution.Manager.getState()
public boolean postfire() throws IllegalActionException
postfire
in interface Executable
postfire
in class AtomicActor
IllegalActionException
- Thrown if a parent class throws it.public void stop()
stop
in interface Executable
stop
in class AtomicActor
public void stopFire()
AtomicActor
stopFire
in interface Executable
stopFire
in class AtomicActor
public void terminate()
terminate
in interface Executable
terminate
in class AtomicActor
public void wrapup() throws IllegalActionException
wrapup
in interface Initializable
wrapup
in class AtomicActor
IllegalActionException
- If there is no director, or if
a background run threw an exception.protected void _readInputsAndValidateSettables() throws IllegalActionException
IllegalActionException
- If reading the ports or
setting the parameters causes it.private void _writeOutputs() throws IllegalActionException
IllegalActionException
- If reading the parameters or
writing to the ports causes it.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |