Skip to main content

Body

Trait Body 

Source
pub trait Body: Send + 'static {
    type Cmd: Send + 'static;

    // Required methods
    fn open<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        ctx: &'life1 Context,
    ) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;
    fn handle<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        ctx: &'life1 Context,
        cmd: Self::Cmd,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait;

    // Provided method
    fn on_drain_complete<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        ctx: &'life1 Context,
    ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
       where Self: 'async_trait,
             'life0: 'async_trait,
             'life1: 'async_trait { ... }
}
Expand description

Per-host behavior plugged into the generic dedicated-thread bridge.

Required Associated Types§

Source

type Cmd: Send + 'static

The command type carried from the tokio side to the dedicated thread.

Required Methods§

Source

fn open<'life0, 'life1, 'async_trait>( &'life0 mut self, ctx: &'life1 Context, ) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called once, on the dedicated thread, inside the Commonware runtime, before the command loop starts (see INV-H2 and INV-H3).

§Errors

Returns a human-readable reason the store could not be opened. Only meaningful for a host that opens eagerly; a lazy host returns Ok(()) immediately and never returns Err here.

Source

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, ctx: &'life1 Context, cmd: Self::Cmd, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Dispatch one command against this host’s state.

Provided Methods§

Source

fn on_drain_complete<'life0, 'life1, 'async_trait>( &'life0 mut self, ctx: &'life1 Context, ) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Called once, after the post-cancellation drain has run every command that was already queued when shutdown fired (INV-H5). Defaults to a no-op; EventLogHost’s per-shard “sync every open log” epilogue is exactly what this hook exists for.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§