Skip to main content

IOperationLog

Trait IOperationLog 

Source
pub trait IOperationLog {
    // Required methods
    fn get_operation<'life0, 'async_trait>(
        &'life0 self,
        operation_id: OperationId,
    ) -> Pin<Box<dyn Future<Output = Option<OperationLogEntry>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait;
    fn get_operation_dbtx<'life0, 'life1, 'life2, 'async_trait>(
        &'life0 self,
        dbtx: &'life1 mut DatabaseTransaction<'life2>,
        operation_id: OperationId,
    ) -> Pin<Box<dyn Future<Output = Option<OperationLogEntry>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait;
    fn add_operation_log_entry_dbtx<'life0, 'life1, 'life2, 'life3, 'async_trait>(
        &'life0 self,
        dbtx: &'life1 mut DatabaseTransaction<'life2>,
        operation_id: OperationId,
        operation_type: &'life3 str,
        operation_meta: Value,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait,
             'life2: 'async_trait,
             'life3: 'async_trait;
    fn caching_operation_update_stream(
        &self,
        operation_id: OperationId,
        stream_gen: Box<dyn FnOnce() -> BoxStream<'static, Value> + Send>,
        is_terminal: Box<dyn Fn(&Value) -> bool + Send + Sync>,
    ) -> BoxStream<'static, Value>;
}

Required Methods§

Source

fn get_operation<'life0, 'async_trait>( &'life0 self, operation_id: OperationId, ) -> Pin<Box<dyn Future<Output = Option<OperationLogEntry>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Source

fn get_operation_dbtx<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, dbtx: &'life1 mut DatabaseTransaction<'life2>, operation_id: OperationId, ) -> Pin<Box<dyn Future<Output = Option<OperationLogEntry>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn add_operation_log_entry_dbtx<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, dbtx: &'life1 mut DatabaseTransaction<'life2>, operation_id: OperationId, operation_type: &'life3 str, operation_meta: Value, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn caching_operation_update_stream( &self, operation_id: OperationId, stream_gen: Box<dyn FnOnce() -> BoxStream<'static, Value> + Send>, is_terminal: Box<dyn Fn(&Value) -> bool + Send + Sync>, ) -> BoxStream<'static, Value>

Wrap a module’s operation update stream so that its last update is cached as the operation’s outcome — only when is_terminal reports that update as a final state of the operation. Outcome resolution (returning a cached outcome instead of a stream) happens in the typed caller (crate::module::ClientContext::outcome_or_updates), which can deserialize the cached value into the module’s update type and fall back to this stream when that fails.

Implementors§