pub enum JoinStrategy {
All,
Any,
Quorum(usize),
Percentage(f64),
PartialResults(usize),
PartialTimeout,
}Expand description
Strategy for joining parallel tasks
Variants§
All
All tasks must complete successfully
Any
Any single task completion triggers join
Quorum(usize)
Specific number of tasks must complete
Percentage(f64)
A fraction of tasks must complete successfully.
The value must be in the range (0.0, 1.0]. A value of 1.0 means all tasks
must succeed (equivalent to All). Values outside this
range return CanoError::Configuration when the split executes.
PartialResults(usize)
Accept partial results - continues after minimum tasks complete successfully, cancels remaining tasks, and returns both successes and errors Parameter is the minimum number of tasks that must complete successfully
PartialTimeout
Accept whatever completes before the deadline, then cancel the rest.
The join succeeds as long as at least one task (success or failure) finished
before the timeout; the workflow continues with JoinConfig::join_state.
If zero tasks complete before the deadline, the workflow errors with
CanoError::Workflow.
Unlike PartialResults, which waits for a
minimum number of successful completions, PartialTimeout is purely
time-bounded and accepts any mixture of successes and failures.
Requires a timeout to be set via JoinConfig::with_timeout; configuring
this strategy without a timeout returns CanoError::Configuration at runtime.
Implementations§
Source§impl JoinStrategy
impl JoinStrategy
Sourcepub fn is_satisfied(&self, completed: usize, total: usize) -> bool
pub fn is_satisfied(&self, completed: usize, total: usize) -> bool
Check if the join condition is met based on completed/total tasks
Trait Implementations§
Source§impl Clone for JoinStrategy
impl Clone for JoinStrategy
Source§fn clone(&self) -> JoinStrategy
fn clone(&self) -> JoinStrategy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more