public class TTESwitch extends AtomicCommunicationAspect
CommunicationAspect that, when its
sendToken(Receiver, Receiver, Token) method is called, delays
the delivery of the specified token to the specified receiver
according to a service rule.
The actor differentiates between two kinds of tokens: time-triggered
and event-triggered, which is defined by the parameter type in
the port which is associated with this communication aspect.
When tokens are received they are delivered with a delay given by the
serviceTime parameter. If the actor is currently servicing a previous
event-triggered token when it receives a time-triggered token, the event-triggered
token is queued again and the time-triggered token is serviced. After the
time-triggered token is sent, the event-triggered token in the queue is selected
and delivered after the full serviceTime. If an event-triggered token arrives
while another event-triggered token arrives, the new event-triggered token is queued.
If a time-triggered token is received while another time-triggered token is serviced
an exception is thrown. Time-triggered messages should have a fixed delay. In a
time-triggered ethernet implementation an offline calculated schedule ensures that only
one time-triggered message is received by the TTESwitch at a time.
Event-triggered tokens are processed in FIFO order.
.
| Red (derler) |
| Yellow (derler) |
Entity.ContainedObjectsIterator| Modifier and Type | Field and Description |
|---|---|
Parameter |
serviceTime
The service time.
|
_parameters, _tokenCount_typesValid_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKSdecoratorHighlightColorNameCOMPLETED, NOT_READY, STOP_ITERATING| Constructor and Description |
|---|
TTESwitch(CompositeEntity container,
java.lang.String name)
Construct a TTESwitch with a name and a container.
|
| Modifier and Type | Method and Description |
|---|---|
void |
attributeChanged(Attribute attribute)
If the attribute is serviceTime, then ensure that the value
is positive.
|
java.lang.Object |
clone(Workspace workspace)
Clone this actor into the specified workspace.
|
IntermediateReceiver |
createIntermediateReceiver(Receiver receiver)
Create an intermediate receiver and determine type of tokens received on the
port associated with this receiver.
|
void |
fire()
If there is a time-triggered token scheduled to be sent then deliver this
token, otherwise send first token in the queue of event-triggered tokens.
|
Receiver |
getReceiver(Receiver receiver,
IOPort port)
Create a receiver to mediate a communication via the specified receiver.
|
boolean |
postfire()
If a token has been sent in the fire method then schedule the next firing.
|
void |
reset()
Reset the communication aspect and clear the tokens.
|
void |
sendToken(Receiver source,
Receiver receiver,
Token token)
Receive a token and store it in the queue.
|
_sendToReceiver, createDecoratorAttributes, decoratedObjects, initialize, isGlobalDecorator, registerListener, sendCommunicationEvent, setContainer_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, stop, stopFire, terminate, wrapup_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName_addPort, _description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspaceequals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitdescription, getContainer, getDisplayName, getFullName, getName, getName, setNamecreateReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortListisFireFunctional, isStrict, iterate, prefire, stop, stopFire, terminateaddInitializable, preinitialize, removeInitializable, wrapupgetDerivedLevel, getDerivedList, propagateValuepublic Parameter serviceTime
public TTESwitch(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.public IntermediateReceiver createIntermediateReceiver(Receiver receiver) throws IllegalActionException
createIntermediateReceiver in interface CommunicationAspectcreateIntermediateReceiver in class AtomicCommunicationAspectreceiver - The receiver that is being wrapped.IllegalActionException - If parameterpublic Receiver getReceiver(Receiver receiver, IOPort port) throws IllegalActionException
receiver - Receiver whose communication is to be mediated.port - Port of the communication aspect.IllegalActionException - If the receiver cannot be created.public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
clone in class AtomicCommunicationAspectworkspace - The workspace for the cloned object.java.lang.CloneNotSupportedException - If cloned ports cannot have
as their container the cloned entity (this should not occur), or
if one of the attributes cannot be cloned.NamedObj.exportMoML(Writer, int, String),
NamedObj.setDeferringChangeRequests(boolean)public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged in class NamedObjattribute - The attribute that changed.IllegalActionException - If the service time is negative.public void fire()
throws IllegalActionException
fire in interface Executablefire in class AtomicActor<TypedIOPort>IllegalActionException - Not thrown in this base class.public boolean postfire()
throws IllegalActionException
postfire in interface Executablepostfire in class AtomicActor<TypedIOPort>IllegalActionException - Not thrown in this base class.public void sendToken(Receiver source, Receiver receiver, Token token) throws IllegalActionException
source - Receiver that sent the token.receiver - The receiver for which this communication aspect is mediating
communication.token - The token for the communication to mediate.IllegalActionException - If the token cannot be sent.public void reset()