Skip to main content

RuntimeEffectController

Trait RuntimeEffectController 

Source
pub trait RuntimeEffectController: Send + Sync {
    // Required method
    fn execute_effect<'life0, 'life1, 'async_trait>(
        &'life0 self,
        envelope: RuntimeEffectEnvelope,
        local_executor: RuntimeEffectLocalExecutor<'life1>,
    ) -> Pin<Box<dyn Future<Output = Result<RuntimeEffectOutcome, RuntimeEffectControllerError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;

    // Provided methods
    fn durability_tier(&self) -> DurabilityTier { ... }
    fn requires_durable_attachment_store(&self) -> bool { ... }
    fn supports_durable_effects(&self) -> bool { ... }
    fn supports_concurrent_effects(&self) -> bool { ... }
    fn await_event_key<'life0, 'life1, 'async_trait>(
        &'life0 self,
        _scope: &'life1 ExecutionScope,
        _wait: AwaitEventWaitIdentity,
    ) -> Pin<Box<dyn Future<Output = Result<AwaitEventKey, RuntimeError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn resolve_await_event<'life0, 'life1, 'async_trait>(
        &'life0 self,
        _key: &'life1 AwaitEventKey,
        _resolution: Resolution,
    ) -> Pin<Box<dyn Future<Output = Result<ResolveOutcome, RuntimeError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn await_await_event<'life0, 'life1, 'async_trait>(
        &'life0 self,
        _key: &'life1 AwaitEventKey,
        _cancel: CancellationToken,
        _deadline: Option<Instant>,
    ) -> Pin<Box<dyn Future<Output = Result<Resolution, RuntimeError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
    fn revoke_await_events_for_session<'life0, 'life1, 'async_trait>(
        &'life0 self,
        _session_id: &'life1 str,
    ) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}
Expand description

Boundary for nondeterministic runtime work.

Required Methods§

Source

fn execute_effect<'life0, 'life1, 'async_trait>( &'life0 self, envelope: RuntimeEffectEnvelope, local_executor: RuntimeEffectLocalExecutor<'life1>, ) -> Pin<Box<dyn Future<Output = Result<RuntimeEffectOutcome, RuntimeEffectControllerError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Provided Methods§

Source

fn durability_tier(&self) -> DurabilityTier

Durability tier this controller provides; defaults to [DurabilityTier::Inline].

Source

fn requires_durable_attachment_store(&self) -> bool

Source

fn supports_durable_effects(&self) -> bool

Source

fn supports_concurrent_effects(&self) -> bool

Whether this controller can safely accept overlapping execute_effect calls from one runtime coordinator.

Local and store-backed controllers can usually fan out independent effects. Some workflow substrates expose a single ordered journal context where native operations must be awaited immediately before the next context call is issued. Those controllers should return false so coordinators serialize child effects while still replaying each child by its own stable key.

Source

fn await_event_key<'life0, 'life1, 'async_trait>( &'life0 self, _scope: &'life1 ExecutionScope, _wait: AwaitEventWaitIdentity, ) -> Pin<Box<dyn Future<Output = Result<AwaitEventKey, RuntimeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn resolve_await_event<'life0, 'life1, 'async_trait>( &'life0 self, _key: &'life1 AwaitEventKey, _resolution: Resolution, ) -> Pin<Box<dyn Future<Output = Result<ResolveOutcome, RuntimeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn await_await_event<'life0, 'life1, 'async_trait>( &'life0 self, _key: &'life1 AwaitEventKey, _cancel: CancellationToken, _deadline: Option<Instant>, ) -> Pin<Box<dyn Future<Output = Result<Resolution, RuntimeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn revoke_await_events_for_session<'life0, 'life1, 'async_trait>( &'life0 self, _session_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), RuntimeError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§