public class FixedPriorityScheduler extends AtomicExecutionAspect
ActorExecutionAspect.
When using this ExecutionAspect in the Ptides domain, the platform
time in Ptides will be used to schedule execution times. When
the Ptides director requests that an actor fire, if this resource is
free, it will immediately schedule it. Otherwise, it will queue it to be
executed when the resource becomes free. When the resource becomes free,
the actor with the highest priority (the lower priority number) will
be chosen from the queue to be executed. If two actors have the same
highest priority, then they will be executed in FIFO order.| Red (derler) |
| Yellow (eal) |
Entity.ContainedObjectsIterator| Modifier and Type | Field and Description |
|---|---|
protected java.util.Stack<NamedObj> |
_currentlyExecuting
Stack of currently executing actors.
|
static int |
LOWEST_PRIORITY
Lowest task priority.
|
Parameter |
preemptive
Parameter to configure whether a preemptive or non-preemptive
scheduling strategy should be used.
|
_actors, _executionAspectListeners, _lastActorFinished, _lastActorThatFinished, _lastTimeScheduled, _remainingTimes_typesValid_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKSCOMPLETED, NOT_READY, STOP_ITERATING| Constructor and Description |
|---|
FixedPriorityScheduler(CompositeEntity container,
java.lang.String name)
Create a new actor in the specified container with the specified
name.
|
| Modifier and Type | Method and Description |
|---|---|
protected double |
_getPriority(NamedObj actor)
Get the priority of the actor.
|
void |
attributeChanged(Attribute attribute)
If the attribute is preemptive then change the
scheduling algorithm to be preemptive or non-preemptive.
|
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace.
|
DecoratorAttributes |
createDecoratorAttributes(NamedObj target)
Return the decorated attributes for the target NamedObj.
|
void |
initialize()
Initialize local variables.
|
Time |
schedule(NamedObj actor,
Time currentPlatformTime,
Time deadline,
Time executionTime)
Schedule a new actor for execution and return the next time
this aspect has to perform a reschedule.
|
Time |
schedule(Time environmentTime)
Perform rescheduling actions when no new actor requests to be
scheduled.
|
_getDeadline, addExecutingListener, decoratedObjects, fire, getExecutionTime, getRemainingTime, getTime, initializeDecoratedActors, isGlobalDecorator, isWaitingForResource, lastActorFinished, lastScheduledActorFinished, notifyExecutionListeners, removeExecutionListener, setContainer, wrapup_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, postfire, prefire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, stop, stopFire, terminate_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, postfire, prefire, stop, stopFire, terminateaddInitializable, preinitialize, removeInitializablegetDerivedLevel, getDerivedList, propagateValuepublic Parameter preemptive
public static int LOWEST_PRIORITY
protected java.util.Stack<NamedObj> _currentlyExecuting
public FixedPriorityScheduler(CompositeEntity container, java.lang.String name) throws IllegalActionException, NameDuplicationException
container - The container.name - The name of this actor within the container.IllegalActionException - If this actor cannot be contained
by the proposed container (see the setContainer() method).NameDuplicationException - If the name coincides with
an entity already in the container.public void attributeChanged(Attribute attribute) throws IllegalActionException
attributeChanged in class NamedObjattribute - 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 AtomicExecutionAspectworkspace - 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 DecoratorAttributes createDecoratorAttributes(NamedObj target)
createDecoratorAttributes in interface DecoratorcreateDecoratorAttributes in class AtomicExecutionAspecttarget - The NamedObj that will be decorated.public void initialize()
throws IllegalActionException
initialize in interface Initializableinitialize in class AtomicExecutionAspectIllegalActionException - Thrown in super class.public Time schedule(Time environmentTime) throws IllegalActionException
schedule in interface ActorExecutionAspectschedule in class AtomicExecutionAspectenvironmentTime - The outside time.IllegalActionException - Thrown in subclasses.public Time schedule(NamedObj actor, Time currentPlatformTime, Time deadline, Time executionTime) throws IllegalActionException
schedule in interface ActorExecutionAspectschedule in class AtomicExecutionAspectactor - The actor to be scheduled.currentPlatformTime - The current platform time.deadline - The event deadline - not used here.executionTime - The execution time of the actor.IllegalActionException - Thrown if actor parameters such
as execution time or priority cannot be read.protected double _getPriority(NamedObj actor) throws IllegalActionException
actor - The actor.IllegalActionException - Thrown if parameter cannot be read.