Skip to main content

LocalEffectExecutor

Struct LocalEffectExecutor 

Source
pub struct LocalEffectExecutor<S: StateStore + ?Sized, O: Orchestrator + ?Sized> {
    pub state: Arc<S>,
    pub orch: Arc<O>,
    pub unknown_policy: UnknownEffectPolicy,
    /* private fields */
}
Expand description

Local executor that applies memory effects to a StateStore and translates orchestration effects into Orchestrator calls.

Semantics:

  • WriteMemory/DeleteMemory: executed directly against the supplied state.
  • Delegate: immediate dispatch via Orchestrator::dispatch.
  • Handoff: immediate dispatch via Orchestrator::dispatch with a metadata flag set to mark semantic handoff. The flag is { "handoff": true } on the dispatched OperatorInput’s metadata field.
  • Signal: sent via Orchestrator::signal.

Unknown/custom effects: ignored by default (warn logged). Configurable via unknown_policy.

Fields§

§state: Arc<S>

State backend used for memory effects.

§orch: Arc<O>

Orchestrator used for delegation, handoff, and signals.

§unknown_policy: UnknownEffectPolicy

Unknown effect handling policy.

Implementations§

Source§

impl<S: StateStore + ?Sized, O: Orchestrator + ?Sized> LocalEffectExecutor<S, O>

Source

pub fn new(state: Arc<S>, orch: Arc<O>) -> Self

Create a new local effect executor with default policy IgnoreAndWarn.

Source

pub fn with_unknown_policy(self, policy: UnknownEffectPolicy) -> Self

Override the unknown/custom effect handling policy.

Source

pub fn with_store_middleware(self, stack: StoreStack) -> Self

Attach a store middleware stack. Each WriteMemory effect is routed through the stack before reaching the state backend.

A guard middleware can skip the write by not calling next and returning Ok(()). A transformer middleware can substitute the value before calling next.

Trait Implementations§

Source§

impl<S, O> EffectExecutor for LocalEffectExecutor<S, O>
where S: StateStore + ?Sized + 'static, O: Orchestrator + ?Sized + 'static,

Source§

fn execute<'life0, 'life1, 'async_trait>( &'life0 self, effects: &'life1 [Effect], ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Execute a list of effects in order. Implementations must preserve the provided order and short-circuit on the first error.

Auto Trait Implementations§

§

impl<S, O> Freeze for LocalEffectExecutor<S, O>
where S: ?Sized, O: ?Sized,

§

impl<S, O> !RefUnwindSafe for LocalEffectExecutor<S, O>

§

impl<S, O> Send for LocalEffectExecutor<S, O>
where S: ?Sized, O: ?Sized,

§

impl<S, O> Sync for LocalEffectExecutor<S, O>
where S: ?Sized, O: ?Sized,

§

impl<S, O> Unpin for LocalEffectExecutor<S, O>
where S: ?Sized, O: ?Sized,

§

impl<S, O> UnsafeUnpin for LocalEffectExecutor<S, O>
where S: ?Sized, O: ?Sized,

§

impl<S, O> !UnwindSafe for LocalEffectExecutor<S, O>

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.

Source§

impl<T> Instrument for T

Source§

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

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

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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