|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| 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.domains.rendezvous.lib.Buffer
public class Buffer
This actor buffers data provided at the input, sending it to the output when needed. It uses two threads. The main actor thread is willing to rendezvous with the output as long as the buffer is not empty. A second thread is created on the first invocation of fire(). This second thread is willing to rendezvous with the input as long as the buffer is not full. Thus, this actor acts as a FIFO (first-in, first-out) buffer that will accept input tokens as long as it is not full, and will produce output tokens as long as it is not empty.
If the capacity changes during execution, and the buffer already contains more tokens than the new capacity, then no tokens are lost, but no new tokens are accepted at the input until the number of buffered tokens drops below the capacity.
This actor is similar to the ResourcePool actor except that the input and output ports are not multiports and there are no initial tokens in this buffer.
ResourcePool,
Serialized Form
| Red (cxh) |
| Yellow (eal) |
| Nested Class Summary |
|---|
| Nested classes/interfaces inherited from class ptolemy.kernel.Entity |
|---|
Entity.ContainedObjectsIterator |
| Field Summary | |
|---|---|
private java.util.List |
_buffer
The current buffer. |
private IllegalActionException |
_exception
Exception that might be thrown by the spawned thread. |
private boolean |
_postfireReturns
Flag indicating what postfire should return. |
private java.lang.Thread |
_readThread
The read thread, if it exists. |
Parameter |
capacity
The capacity of the buffer. |
TypedIOPort |
input
The input port. |
TypedIOPort |
output
The output port. |
| 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 | |
|---|---|
Buffer(CompositeEntity container,
java.lang.String name)
Construct an actor in the specified container with the specified name. |
|
| Method Summary | |
|---|---|
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
If it has not already been done, start a thread to read tokens from the input port and store them in the buffer. |
void |
initialize()
Clear the buffer. |
boolean |
postfire()
Return false if it is time to stop the process. |
| 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, stop, stopFire, terminate |
| Methods inherited from interface ptolemy.actor.Initializable |
|---|
addInitializable, 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 |
| Field Detail |
|---|
public Parameter capacity
public TypedIOPort input
public TypedIOPort output
private java.util.List _buffer
private IllegalActionException _exception
private boolean _postfireReturns
private java.lang.Thread _readThread
| Constructor Detail |
|---|
public Buffer(CompositeEntity container,
java.lang.String name)
throws IllegalActionException,
NameDuplicationException
container - The container.name - The name.
IllegalActionException - If the actor cannot be contained
by the proposed container.
NameDuplicationException - If the name coincides with
an actor already in the container.| Method Detail |
|---|
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
clone in class AtomicActorworkspace - 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 fire()
throws IllegalActionException
fire in interface Executablefire in class AtomicActorIllegalActionException - If an error occurs during
executing the process.
TerminateProcessException - If the process termination
is requested by the director.
public void initialize()
throws IllegalActionException
initialize in interface Initializableinitialize in class AtomicActorIllegalActionException - If the base class throws it.public boolean postfire()
postfire in interface Executablepostfire in class AtomicActor
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||