![]() |
Lumiera 0.pre.04~rc.1
»edit your freedom«
|
#include "vault/gear/scheduler-invocation.hpp"
Scheduler Layer-1 : time based dispatch.
Manages pointers to Render Activity records.
Definition at line 148 of file scheduler-invocation.hpp.
Public Member Functions | |
| SchedulerInvocation () | |
| void | discardSchedule () |
| forcibly clear out the schedule | |
| void | instruct (ActivationEvent actEvent) |
| Accept an ActivationEvent with an Activity for time-bound execution. | |
| void | feedPrioritisation () |
| Pick up all new events from the entrance queue and enqueue them to be retrieved ordered by start time. | |
| void | feedPrioritisation (ActivationEvent actEvent) |
| Feed the given Activity directly into time prioritisation, effectively bypassing the thread dispatching entrance queue. | |
| ActivationEvent | peekHead () |
| ActivationEvent | pullHead () |
| Retrieve from the scheduling queue the entry with earliest start time. | |
| void | activate (ManifestationID manID) |
| Enable entries marked with a specific ManifestationID to be processed. | |
| void | drop (ManifestationID manID) |
| bool | isDue (Time now) const |
| Determine if there is work to do right now. | |
| bool | isMissed (Time now) const |
| determine if the Activity at scheduler head missed it's deadline. | |
| bool | isActivated (ManifestationID manID) const |
| determine if Activities with the given ManifestationID shall be processed | |
| bool | isOutdated (Time now) const |
| determine if Activity at scheduler is outdated and should be discarded | |
| bool | isOutOfTime (Time now) const |
| detect a compulsory Activity at scheduler head with missed deadline | |
| bool | hasPendingInput () const |
| bool | empty () const |
| Time | headTime () const |
Private Types | |
| using | InstructQueue = boost::lockfree::queue< ActivationEvent > |
| using | PriorityQueue = std::priority_queue< ActivationEvent > |
| using | ActivationSet = std::unordered_set< ManifestationID > |
Static Private Member Functions | |
| static int64_t | waterLevel (Time time) |
Private Attributes | |
| InstructQueue | instruct_ |
| PriorityQueue | priority_ |
| ActivationSet | allowed_ |
Additional Inherited Members | |
Private Member Functions inherited from NonCopyable | |
| ~NonCopyable ()=default | |
| NonCopyable ()=default | |
| NonCopyable (NonCopyable const &)=delete | |
| NonCopyable & | operator= (NonCopyable const &)=delete |
|
inline |
Definition at line 161 of file scheduler-invocation.hpp.
|
private |
Definition at line 151 of file scheduler-invocation.hpp.
|
private |
Definition at line 152 of file scheduler-invocation.hpp.
|
private |
Definition at line 153 of file scheduler-invocation.hpp.
|
inline |
forcibly clear out the schedule
Definition at line 170 of file scheduler-invocation.hpp.
References SchedulerInvocation::instruct_, and SchedulerInvocation::priority_.
Referenced by Scheduler::terminateProcessing().
Here is the caller graph for this function:
|
inline |
Accept an ActivationEvent with an Activity for time-bound execution.
Definition at line 181 of file scheduler-invocation.hpp.
References SchedulerInvocation::instruct_.
Referenced by SchedulerCommutator::postChain(), SchedulerInvocation_test::simpleUsage(), SchedulerCommutator_test::verify_dispatch(), SchedulerInvocation_test::verify_Queuing(), and SchedulerInvocation_test::verify_WaterLevel().
Here is the caller graph for this function:
|
inline |
Pick up all new events from the entrance queue and enqueue them to be retrieved ordered by start time.
Definition at line 194 of file scheduler-invocation.hpp.
References SchedulerInvocation::instruct_, and SchedulerInvocation::priority_.
Referenced by SchedulerCommutator::findWork(), SchedulerCommutator::maintainQueueHead(), SchedulerCommutator::maybeFeed(), SchedulerCommutator::postChain(), SchedulerInvocation_test::simpleUsage(), SchedulerCommutator_test::verify_dispatch(), SchedulerInvocation_test::verify_isDue(), SchedulerCommutator_test::verify_postChain(), SchedulerInvocation_test::verify_Queuing(), SchedulerInvocation_test::verify_Significance(), SchedulerInvocation_test::verify_stability(), and SchedulerInvocation_test::verify_WaterLevel().
Here is the caller graph for this function:
|
inline |
Feed the given Activity directly into time prioritisation, effectively bypassing the thread dispatching entrance queue.
Definition at line 208 of file scheduler-invocation.hpp.
References SchedulerInvocation::priority_.
|
inline |
Definition at line 219 of file scheduler-invocation.hpp.
References SchedulerInvocation::priority_.
Referenced by SchedulerInvocation::pullHead(), SchedulerInvocation_test::simpleUsage(), SchedulerInvocation_test::verify_isDue(), SchedulerCommutator_test::verify_postChain(), SchedulerInvocation_test::verify_Queuing(), and SchedulerInvocation_test::verify_WaterLevel().
Here is the caller graph for this function:
|
inline |
Retrieve from the scheduling queue the entry with earliest start time.
Definition at line 232 of file scheduler-invocation.hpp.
References SchedulerInvocation::peekHead(), and SchedulerInvocation::priority_.
Referenced by SchedulerCommutator::findWork(), SchedulerCommutator::maintainQueueHead(), SchedulerInvocation_test::simpleUsage(), SchedulerInvocation_test::verify_isDue(), SchedulerCommutator_test::verify_postChain(), SchedulerInvocation_test::verify_Queuing(), SchedulerInvocation_test::verify_Significance(), SchedulerInvocation_test::verify_stability(), and SchedulerInvocation_test::verify_WaterLevel().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Enable entries marked with a specific ManifestationID to be processed.
By default, entries are marked with the default ManifestationID, which is always implicitly activated. Any other ID must be actively allowed, otherwise the entry is deemed outdated and will be silently discarded in regular processing by Layer-2.
Definition at line 249 of file scheduler-invocation.hpp.
References SchedulerInvocation::allowed_.
Referenced by Scheduler::seedCalcStream(), and SchedulerInvocation_test::verify_Significance().
Here is the caller graph for this function:
|
inline |
Definition at line 256 of file scheduler-invocation.hpp.
References SchedulerInvocation::allowed_.
Referenced by SchedulerInvocation_test::verify_Significance().
Here is the caller graph for this function:
|
inline |
Determine if there is work to do right now.
Definition at line 266 of file scheduler-invocation.hpp.
References SchedulerInvocation::priority_, and SchedulerInvocation::waterLevel().
Referenced by SchedulerCommutator::findWork(), SchedulerInvocation_test::verify_isDue(), SchedulerCommutator_test::verify_postChain(), and SchedulerInvocation_test::verify_Significance().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
determine if the Activity at scheduler head missed it's deadline.
Definition at line 275 of file scheduler-invocation.hpp.
References SchedulerInvocation::priority_, and SchedulerInvocation::waterLevel().
Referenced by SchedulerInvocation::isOutdated(), SchedulerInvocation::isOutOfTime(), and SchedulerInvocation_test::verify_Significance().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
determine if Activities with the given ManifestationID shall be processed
Definition at line 283 of file scheduler-invocation.hpp.
References SchedulerInvocation::allowed_, and util::contains().
Referenced by SchedulerInvocation::isOutdated(), and SchedulerInvocation::isOutOfTime().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
determine if Activity at scheduler is outdated and should be discarded
Definition at line 291 of file scheduler-invocation.hpp.
References SchedulerInvocation::isActivated(), SchedulerInvocation::isMissed(), and SchedulerInvocation::priority_.
Referenced by SchedulerCommutator::findWork(), SchedulerCommutator::maintainQueueHead(), and SchedulerInvocation_test::verify_Significance().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
detect a compulsory Activity at scheduler head with missed deadline
Definition at line 300 of file scheduler-invocation.hpp.
References SchedulerInvocation::isActivated(), SchedulerInvocation::isMissed(), and SchedulerInvocation::priority_.
Referenced by SchedulerCommutator::findWork(), SchedulerCommutator::maintainQueueHead(), and SchedulerInvocation_test::verify_Significance().
Here is the call graph for this function:
Here is the caller graph for this function:
|
inline |
Definition at line 309 of file scheduler-invocation.hpp.
References SchedulerInvocation::instruct_.
Referenced by SchedulerCommutator::maybeFeed().
Here is the caller graph for this function:
|
inline |
Definition at line 315 of file scheduler-invocation.hpp.
References SchedulerInvocation::instruct_, and SchedulerInvocation::priority_.
Referenced by Scheduler::empty(), SchedulerCommutator_test::integratedWorkCycle(), SchedulerCommutator_test::verify_dispatch(), SchedulerCommutator_test::verify_postChain(), SchedulerInvocation_test::verify_Queuing(), and SchedulerInvocation_test::verify_Significance().
Here is the caller graph for this function:
|
inline |
Definition at line 323 of file scheduler-invocation.hpp.
References Time::NEVER, and SchedulerInvocation::priority_.
Referenced by SchedulerCommutator::dispatchCapacity(), SchedulerCommutator_test::verify_dispatch(), SchedulerCommutator_test::verify_postChain(), and SchedulerInvocation_test::verify_Significance().
Here is the caller graph for this function:
|
inlinestaticprivate |
Definition at line 331 of file scheduler-invocation.hpp.
Referenced by SchedulerInvocation::isDue(), and SchedulerInvocation::isMissed().
Here is the caller graph for this function:
|
private |
Definition at line 155 of file scheduler-invocation.hpp.
Referenced by SchedulerInvocation::discardSchedule(), SchedulerInvocation::empty(), SchedulerInvocation::feedPrioritisation(), SchedulerInvocation::hasPendingInput(), and SchedulerInvocation::instruct().
|
private |
Definition at line 156 of file scheduler-invocation.hpp.
Referenced by SchedulerInvocation::discardSchedule(), SchedulerInvocation::empty(), SchedulerInvocation::feedPrioritisation(), SchedulerInvocation::feedPrioritisation(), SchedulerInvocation::headTime(), SchedulerInvocation::isDue(), SchedulerInvocation::isMissed(), SchedulerInvocation::isOutdated(), SchedulerInvocation::isOutOfTime(), SchedulerInvocation::peekHead(), and SchedulerInvocation::pullHead().
|
private |
Definition at line 158 of file scheduler-invocation.hpp.
Referenced by SchedulerInvocation::activate(), SchedulerInvocation::drop(), and SchedulerInvocation::isActivated().
Inheritance diagram for SchedulerInvocation:
Collaboration diagram for SchedulerInvocation: