72 #ifndef SRC_VAULT_GEAR_ACTIVITY_TERM_H_ 73 #define SRC_VAULT_GEAR_ACTIVITY_TERM_H_ 93 using BlockFlowAlloc = BlockFlow<blockFlow::RenderConfig>;
105 using AllocHandle = BlockFlowAlloc::AllocatorHandle;
124 : alloc_{move (allocHandle)}
125 , invoke_{setupInvocation (job)}
126 , post_{setupPost (start,dead, invoke_)}
128 configureTemplate (
kind);
133 operator std::string()
const 136 + (post_?
string{*post_} : util::BOTTOM_INDICATOR)
138 + (invoke_?
string{*invoke_} : util::BOTTOM_INDICATOR);
149 REQUIRE (post_,
"Activity Term not yet fully configured");
160 REQUIRE (
callback_,
"Activity Term properly configured for async IO");
178 gate_->incDependencies();
179 Time triggerTimeStart{unlimitedTime?
Time::ANYTIME : post_->data_.timeWindow.life};
180 notificationSrc.setNotificationTarget (gate_, triggerTimeStart);
223 insert (post_, &trigger);
244 NOTREACHED (
"unknown wiring scheme for Render Jobs.");
251 setupInvocation (
Job& job)
253 Activity& feed1 = alloc_.create (job.parameter.invoKey.code.w1
254 ,job.parameter.invoKey.code.w2);
260 Activity& invo = alloc_.create (*functor
269 return & alloc_.create (start,dead,followUp);
276 gate_ = & alloc_.create (0,
Time{post_->data_.timeWindow.dead});
279 insert (post_, gate_);
289 insert (gate_? gate_: post_, &start);
290 insert (findTail (start.
next), &stop);
311 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.