pub struct JoinPoint;Expand description
A synchronization point (AND-Join) namespace for combining concurrent branches.
§Representation
A zero-sized namespace struct JoinPoint that takes 0-bytes of memory.
§Structure-only
Provides static helper methods to join concurrent branches without runtime synchronization mechanisms like locks, semaphores, or condition variables.
§Graduation
In the wasm4pm engine, synchronization is managed by a database-backed coordinator or actor system
evaluating event streams. Here, it is purely a type check.
Implementations§
Source§impl JoinPoint
impl JoinPoint
Sourcepub fn join_success<A, B>(
_wf: ParallelWorkflow<A, B, Completed, Completed>,
) -> CompletedWorkflow
pub fn join_success<A, B>( _wf: ParallelWorkflow<A, B, Completed, Completed>, ) -> CompletedWorkflow
Synchronizes the workflow when both branches complete successfully.
§Examples
use wasm4pm_compat::workflow::{ParallelWorkflow, Pending, Completed, CompletedWorkflow, JoinPoint};
struct TaskA;
struct TaskB;
let workflow: ParallelWorkflow<TaskA, TaskB, Pending, Pending> = ParallelWorkflow::split();
// Start and complete both branches
let workflow = ParallelWorkflow {
branch_a: workflow.branch_a.start().complete(),
branch_b: workflow.branch_b.start().complete(),
};
// Synchronize using JoinPoint
let completed: CompletedWorkflow = JoinPoint::join_success(workflow);Sourcepub fn join_canceled_b<A, B>(
_wf: ParallelWorkflow<A, B, Completed, Canceled>,
) -> CompletedWorkflow
pub fn join_canceled_b<A, B>( _wf: ParallelWorkflow<A, B, Completed, Canceled>, ) -> CompletedWorkflow
Synchronizes the workflow when Branch B was cancelled.
§Examples
use wasm4pm_compat::workflow::{ParallelWorkflow, Pending, Completed, Canceled, CompletedWorkflow, JoinPoint};
struct TaskA;
struct TaskB;
let workflow: ParallelWorkflow<TaskA, TaskB, Pending, Pending> = ParallelWorkflow::split();
// Start both, then cancel branch B from branch A
let workflow = ParallelWorkflow {
branch_a: workflow.branch_a.start(),
branch_b: workflow.branch_b.start(),
};
let workflow: ParallelWorkflow<TaskA, TaskB, Completed, Canceled> = workflow.cancel_b_from_a();
// Synchronize using JoinPoint
let completed: CompletedWorkflow = JoinPoint::join_canceled_b(workflow);Auto Trait Implementations§
impl Freeze for JoinPoint
impl RefUnwindSafe for JoinPoint
impl Send for JoinPoint
impl Sync for JoinPoint
impl Unpin for JoinPoint
impl UnsafeUnpin for JoinPoint
impl UnwindSafe for JoinPoint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more