CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches

Data Structures

struct  TRGate
 One-time event gate for task synchronization. More...
 
struct  TaskRequiresGate
 Requirement that waits for a gate to open. More...
 

Macros

#define trgateCreate(name)   TRGate_create(name)
 
#define trgateOpen(self)   (self)->_->open(TRGate(self))
 
#define trgateSeal(self)   (self)->_->seal(TRGate(self))
 
#define trgateProgress(self)   (self)->_->progress(TRGate(self))
 
#define trgateRegisterTask(self, task)   (self)->_->registerTask(TRGate(self), ComplexTask(task))
 
#define taskrequiresgateCreate(gate)   TaskRequiresGate_create(TRGate(gate))
 

Typedefs

typedef struct TRGate TRGate
 One-time event gate for task synchronization.
 
typedef struct TaskRequiresGate TaskRequiresGate
 Requirement that waits for a gate to open.
 

Detailed Description

Gates provide a lightweight synchronization primitive for tasks waiting on one-time events. Similar to task dependencies, but more flexible and efficient when multiple tasks need to wait for the same external event.

Gate states:

Use cases:

Gates track progress timestamps which prevent monitoring from reporting stuck tasks. Call progress() periodically while work is ongoing but the gate isn't ready to open.

Macro Definition Documentation

◆ taskrequiresgateCreate

#define taskrequiresgateCreate (   gate)    TaskRequiresGate_create(TRGate(gate))

TaskRequiresGate* taskrequiresgateCreate(TRGate* gate);

Create a gate requirement.

Parameters
gateGate that must be opened before task can run
Returns
New TaskRequiresGate instance

Definition at line 184 of file taskrequiresgate.h.

◆ trgateCreate

#define trgateCreate (   name)    TRGate_create(name)

TRGate* trgateCreate(strref name);

Create a new gate.

Parameters
nameGate name for logging and debugging
Returns
New TRGate instance in closed state

Definition at line 121 of file taskrequiresgate.h.

◆ trgateOpen

#define trgateOpen (   self)    (self)->_->open(TRGate(self))

bool trgateOpen(TRGate* self);

Open the gate, releasing all waiting tasks. Future tasks depending on this gate will not wait.

Returns
true if gate was opened (was previously closed)

Definition at line 128 of file taskrequiresgate.h.

◆ trgateProgress

#define trgateProgress (   self)    (self)->_->progress(TRGate(self))

void trgateProgress(TRGate* self);

Update progress timestamp without opening gate. Prevents monitoring from reporting tasks as stalled.

Definition at line 139 of file taskrequiresgate.h.

◆ trgateRegisterTask

#define trgateRegisterTask (   self,
  task 
)    (self)->_->registerTask(TRGate(self), ComplexTask(task))

bool trgateRegisterTask(TRGate* self, ComplexTask* task);

Register a task to be advanced when gate opens.

Parameters
taskTask to register
Returns
true if registration was successful

Definition at line 145 of file taskrequiresgate.h.

◆ trgateSeal

#define trgateSeal (   self)    (self)->_->seal(TRGate(self))

bool trgateSeal(TRGate* self);

Seal the gate permanently. Any task depending on a sealed gate will fail immediately.

Returns
true if gate was sealed

Definition at line 134 of file taskrequiresgate.h.