Skip to main content

ExecutionDriver

Trait ExecutionDriver 

Source
pub trait ExecutionDriver: Send {
    type Primitive: Send;
    type Processed: Send;
    type Output: Clone + Send + Sync + 'static;
    type Error: Clone + Send + Sync + 'static;

Show 15 methods // Required methods fn dispatch_primitive<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<(Self::Primitive, StageDisposition), Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn reversible_post_process<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, primitive: Self::Primitive, ) -> Pin<Box<dyn Future<Output = Result<(Self::Processed, StageDisposition), Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait; fn record_context_ir<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, processed: &'life2 Self::Processed, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn record_ledger<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, processed: &'life2 Self::Processed, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn output_from_processed( &mut self, processed: Self::Processed, ) -> Self::Output; fn observe( &self, result: &Result<Self::Output, LifecycleRunError<Self::Error>>, ) -> CompletionObservation; // Provided methods fn cancellation_handler(&self) -> Option<CancellationHandler> { ... } fn identify_caller<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn resolve_workspace<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn resolve_entitlements<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn apply_security_boundaries<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn gather_context_strategy<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn ask_autopilot<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn validate_cached_replay<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<Option<Self::Output>, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait { ... } fn checkpoint<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, _output: &'life2 mut Self::Output, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait { ... }
}

Required Associated Types§

Source

type Primitive: Send

Source

type Processed: Send

Source

type Output: Clone + Send + Sync + 'static

Source

type Error: Clone + Send + Sync + 'static

Required Methods§

Source

fn dispatch_primitive<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<(Self::Primitive, StageDisposition), Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn reversible_post_process<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, primitive: Self::Primitive, ) -> Pin<Box<dyn Future<Output = Result<(Self::Processed, StageDisposition), Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn record_context_ir<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, processed: &'life2 Self::Processed, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn record_ledger<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, processed: &'life2 Self::Processed, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn output_from_processed(&mut self, processed: Self::Processed) -> Self::Output

Source

fn observe( &self, result: &Result<Self::Output, LifecycleRunError<Self::Error>>, ) -> CompletionObservation

Provided Methods§

Source

fn cancellation_handler(&self) -> Option<CancellationHandler>

Retain only observations needed if the in-flight driver future is dropped. The handler and normal ledger stage must share an exactly-once owner.

Source

fn identify_caller<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn resolve_workspace<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn resolve_entitlements<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn apply_security_boundaries<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn gather_context_strategy<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn ask_autopilot<'life0, 'life1, 'async_trait>( &'life0 mut self, context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source

fn validate_cached_replay<'life0, 'life1, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, ) -> Pin<Box<dyn Future<Output = Result<Option<Self::Output>, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Re-run mutable admission policy before returning an idempotent cached result.

Source

fn checkpoint<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, _context: &'life1 TaskContext, _output: &'life2 mut Self::Output, ) -> Pin<Box<dyn Future<Output = Result<StageDisposition, Self::Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§