63 #ifndef SRC_VAULT_GEAR_ACTIVITY_TERM_H_ 64 #define SRC_VAULT_GEAR_ACTIVITY_TERM_H_ 84 using BlockFlowAlloc = BlockFlow<blockFlow::RenderConfig>;
96 using AllocHandle = BlockFlowAlloc::AllocatorHandle;
115 : alloc_{move (allocHandle)}
116 , invoke_{setupInvocation (job)}
117 , post_{setupPost (start,dead, invoke_)}
119 configureTemplate (
kind);
124 operator std::string()
const 127 + (post_?
string{*post_} : util::BOTTOM_INDICATOR)
129 + (invoke_?
string{*invoke_} : util::BOTTOM_INDICATOR);
140 REQUIRE (post_,
"Activity Term not yet fully configured");
151 REQUIRE (
callback_,
"Activity Term properly configured for async IO");
169 gate_->incDependencies();
170 Time triggerTimeStart{unlimitedTime?
Time::ANYTIME : post_->data_.timeWindow.life};
171 notificationSrc.setNotificationTarget (gate_, triggerTimeStart);
214 insert (post_, &trigger);
235 NOTREACHED (
"unknown wiring scheme for Render Jobs.");
242 setupInvocation (
Job& job)
244 Activity& feed1 = alloc_.create (job.parameter.invoKey.code.w1
245 ,job.parameter.invoKey.code.w2);
251 Activity& invo = alloc_.create (*functor
260 return & alloc_.create (start,dead,followUp);
267 gate_ = & alloc_.create (0,
Time{post_->data_.timeWindow.dead});
270 insert (post_, gate_);
280 insert (gate_? gate_: post_, &start);
281 insert (findTail (start.
next), &stop);
302 anchor->
next = target;
static const Time ANYTIME
border condition marker value. ANYTIME <= any time value
signal start of some processing and transition grooming mode ⟼ *work mode
Record to describe an Activity, to happen within the Scheduler's control flow.
Memory management scheme for activities and parameter data passed through the Scheduler within the Lu...
Term & requireDirectActivation()
Insert a self-inhibition to enforce activation is possible only after the scheduled start time...
correspondingly signal end of some processing
supply additional payload data for a preceding Activity
scheme for a synchronous media calculation job
Lumiera's internal time value datatype.
scheme for an asynchronous data retrieval job
Term & expectNotification(Activity ¬ificationSrc, bool unlimitedTime=false)
Builder operation: block this Term waiting for prerequisite notification.
A Term of the »Activity Language«, describing the steps necessary to perform the calculation of a sin...
probe window + count-down; activate next Activity, else re-schedule
Activity * next
Activities are organised into chains to represent relations based on verbs.
Term & appendNotificationTo(Term &targetTerm, bool unlimitedTime=false)
Builder operation: append a Notification link to the end of this Term's chain.
Definition of a render job.
push a message to another Activity
scheme for planning and organisational job
Interface of the closure for frame rendering jobs.
Individual frame rendering task, forwarding to a closure.
a family of time value like entities and their relationships.
basic constant internal time value.
Vault-Layer implementation namespace root.
Descriptor for a piece of operational logic performed by the scheduler.