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.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, LINKS
COMPLETED, 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, workspace
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
description, getContainer, getDisplayName, getFullName, getName, getName, setName
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
addInitializable, preinitialize, removeInitializable
getDerivedLevel, getDerivedList, propagateValue
public 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 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 AtomicExecutionAspect
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 DecoratorAttributes createDecoratorAttributes(NamedObj target)
createDecoratorAttributes
in interface Decorator
createDecoratorAttributes
in class AtomicExecutionAspect
target
- The NamedObj that will be decorated.public void initialize() throws IllegalActionException
initialize
in interface Initializable
initialize
in class AtomicExecutionAspect
IllegalActionException
- Thrown in super class.public Time schedule(Time environmentTime) throws IllegalActionException
schedule
in interface ActorExecutionAspect
schedule
in class AtomicExecutionAspect
environmentTime
- The outside time.IllegalActionException
- Thrown in subclasses.public Time schedule(NamedObj actor, Time currentPlatformTime, Time deadline, Time executionTime) throws IllegalActionException
schedule
in interface ActorExecutionAspect
schedule
in class AtomicExecutionAspect
actor
- 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.