ptolemy.domains.de.lib
Class Server
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.domains.de.kernel.DEActor
ptolemy.domains.de.lib.DETransformer
ptolemy.domains.de.lib.Server
- All Implemented Interfaces:
- java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, SequenceActor, TimedActor, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable
public class Server
- extends DETransformer
This actor models a server with a fixed or variable service time.
A server is either busy (serving a customer) or not busy at any given time.
If an input arrives when the server is not busy, then the input token is
produced on the output with a delay given by the serviceTime
parameter.
If an input arrives while the server is busy, then that input is
queued until the server becomes free, at which point it is produced
on the output with a delay given by the serviceTime parameter.
If several inputs arrive while the server is busy, then they are
served on a first-come, first-served basis.
- Since:
- Ptolemy II 0.3
- Version:
- $Id: Server.java 57040 2010-01-27 20:52:32Z cxh $
- Author:
- Lukito Muliadi, Edward A. Lee, Haiyang Zheng
- See Also:
TimedDelay
,
VariableDelay
,
Serialized Form
- Accepted Rating:
- Proposed Rating:
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
Server(CompositeEntity container,
java.lang.String name)
Construct an actor with the specified container and name. |
Method Summary |
void |
attributeChanged(Attribute attribute)
If the attribute is serviceTime, then ensure that the value
is non-negative, and if the attribute is
capacity, then change the capacity of the queue. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
If there is input, read it and put it in the queue. |
void |
initialize()
Reset the states of the server to indicate that the server is ready
to serve. |
boolean |
postfire()
If the server is free and there is at least one token in the queue,
request a firing at the current time plus the service time. |
void |
preinitialize()
Override the base class to declare that the output
does not depend on the input or serviceTime
in a firing. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, 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 |
capacity
public Parameter capacity
- The capacity of the queue. If the value is positive, then
it specifies the capacity of the queue. If it is negative
or 0, then it specifies that the capacity is infinite.
This is an integer with default 0.
size
public TypedIOPort size
- The current size of the queue. This port produces an output
whenever the size changes. It has type int.
serviceTime
public PortParameter serviceTime
- The service time. This is a double with default 1.0.
It is required to be non-negative.
_nextTimeFree
private Time _nextTimeFree
- Next time the server becomes free.
_queue
protected FIFOQueue _queue
- The FIFOQueue.
Server
public Server(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the specified container and name.
- Parameters:
container
- The composite entity to contain this one.name
- The name of this actor.
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- If the attribute is serviceTime, then ensure that the value
is non-negative, and if the attribute is
capacity, then change the capacity of the queue.
If the size of the queue currently exceeds the specified
capacity, then throw an exception.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If the service time is negative.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone the actor into the specified workspace. Set a type
constraint that the output type is the same as the that of input.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class has
has an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- If there is input, read it and put it in the queue.
If the service time has expired for a token currently
in the queue, then send that token on the output.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- If the serviceTime is invalid,
or if an error occurs sending the output token.
initialize
public void initialize()
throws IllegalActionException
- Reset the states of the server to indicate that the server is ready
to serve.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the base class throws it.
postfire
public boolean postfire()
throws IllegalActionException
- If the server is free and there is at least one token in the queue,
request a firing at the current time plus the service time.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- Whatever the superclass returns.
- Throws:
IllegalActionException
- If there is no director.
preinitialize
public void preinitialize()
throws IllegalActionException
- Override the base class to declare that the output
does not depend on the input or serviceTime
in a firing.
- Specified by:
preinitialize
in interface Initializable
- Overrides:
preinitialize
in class AtomicActor
- Throws:
IllegalActionException
- If the superclass throws it.