Enum DispatchResult
pub enum DispatchResult {
Started {
run_id: String,
sop_name: String,
action: Box<SopRunAction>,
},
Skipped {
sop_name: String,
reason: String,
},
Deferred {
sop_name: String,
reason: String,
},
Coalesced {
sop_name: String,
existing_run_id: String,
},
BlockedUnsafe {
sop_name: Option<String>,
reason: String,
},
NoMatch,
}Expand description
Outcome of attempting to dispatch an event to the SOP engine.
Variants§
Started
Skipped
A matching SOP was found but could not start (cooldown, or the drop
admission policy with no free slot). Logged, not retried.
Deferred
A2: a matching SOP could not admit now (execution slots or the
pending-approval pool are full) and its admission policy DEFERS rather than
drops. The outcome is always logged, never silent. Redelivery is transport-
dependent: a caller with a manual-ack/requeue primitive (AMQP with
durable_ack) MUST redeliver so the trigger is not lost. Transports that
auto-ack on receive (MQTT via rumqttc, cron ticks) are AT-MOST-ONCE for a
Deferred occurrence - they cannot hold the ack, so Deferred there is an
observability signal, not a redelivery guarantee.
Coalesced
A2: a concurrent trigger collapsed into an already-in-flight run under the
coalesce policy (the latest state is covered by the existing run). Not an
error; recorded, not retried.
BlockedUnsafe
Untrusted trigger content was blocked before a run could start.
NoMatch
No loaded SOP matched the event.
Trait Implementations§
Source§impl Clone for DispatchResult
impl Clone for DispatchResult
Source§fn clone(&self) -> DispatchResult
fn clone(&self) -> DispatchResult
1.0.0 (const: unstable) · §fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for DispatchResult
impl RefUnwindSafe for DispatchResult
impl Send for DispatchResult
impl Sync for DispatchResult
impl Unpin for DispatchResult
impl UnsafeUnpin for DispatchResult
impl UnwindSafe for DispatchResult
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more