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 'life0: 'async_trait,
'life1: 'async_trait,
Self: '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 'life0: 'async_trait,
'life1: 'async_trait,
Self: '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 'life0: 'async_trait,
'life1: 'async_trait,
Self: '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 'life0: 'async_trait,
'life1: 'async_trait,
Self: '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 'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait { ... }
}Expand description
Boundary for nondeterministic runtime work.
Required Methods§
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
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Provided Methods§
Sourcefn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier this controller provides; defaults to
[DurabilityTier::Inline].
fn requires_durable_attachment_store(&self) -> bool
fn supports_durable_effects(&self) -> bool
Sourcefn supports_concurrent_effects(&self) -> bool
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.
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
'life0: 'async_trait,
'life1: 'async_trait,
Self: '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
'life0: 'async_trait,
'life1: 'async_trait,
Self: '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
'life0: 'async_trait,
'life1: 'async_trait,
Self: '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
'life0: 'async_trait,
'life1: 'async_trait,
Self: 'async_trait,
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".