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