Trait ockam_core::Worker

source ·
pub trait Worker: Send + 'static {
    type Message: Message;
    type Context: Send + 'static;

    fn initialize<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        _context: &'life1 mut Self::Context
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        Self: 'async_trait,
        'life0: 'async_trait,
        'life1: 'async_trait
, { ... } fn shutdown<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        _context: &'life1 mut Self::Context
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        Self: 'async_trait,
        'life0: 'async_trait,
        'life1: 'async_trait
, { ... } fn handle_message<'life0, 'life1, 'async_trait>(
        &'life0 mut self,
        _context: &'life1 mut Self::Context,
        _msg: Routed<Self::Message>
    ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
    where
        Self: 'async_trait,
        'life0: 'async_trait,
        'life1: 'async_trait
, { ... } }
Expand description

Defines the core interface shared by all Ockam Workers.

While all methods do not need to be implemented, at the very least, the Context and Message types need to be specified before a worker can be used in any call to a Context API such as context.start_worker(...).

Required Associated Types§

The type of Message the Worker is sent in Self::handle_message.

The API and other resources available for the worker during message processing.

Currently, this should be always ockam::Context or ockam_node::Context (which are the same type), but in the future custom node implementations may use a different context type.

Provided Methods§

Override initialisation behaviour.

Override shutdown behaviour.

Try to open and handle a typed message.

Implementors§