InFlightSaga

Struct InFlightSaga 

Source
struct InFlightSaga {
    saga: Box<dyn Saga>,
    awaiting_step: Option<u32>,
    next_step_index: u32,
}
Expand description

Saga coordinator task.

Owns the registry of in-flight sagas, allocates saga ids, routes events to sagas, dispatches IssueCmd actions to the appropriate pipes, and emits lifecycle events on the broadcast bus.

F.5 adds the first real consumer (pool_respawn). The in_flight registry is now actually populated; the bus loop dispatches events into it. LSD-2 — coordinator’s per-saga book-keeping. Wraps the boxed saga with the durable-log step bookkeeping the coordinator needs to call LauncherSagaLog::finish_step when the awaited bus event lands.

awaiting_step is Some(idx) when the saga is parked on a Wait-then-event pivot (the most recent IssueCmd allocated step idx); None between dispatches and after termination. Tracking it on the in-flight record (rather than inside each saga impl) keeps the durability concern out of saga authors’ hands — they only deal with SagaAction.

next_step_index is the monotonic counter the coordinator fetch_add(1)s on every IssueCmd for this saga. Mirrors srv’s SagaCtx::step_index. Lives per-saga (not coordinator-global) so concurrent sagas don’t interleave indices in the log.

Fields§

§saga: Box<dyn Saga>§awaiting_step: Option<u32>§next_step_index: u32

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more