Trait ockam_core::Worker
source · pub trait Worker: Send + 'static {
type Message: Message;
type Context: Send + 'static;
// Provided methods
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§
sourcetype Message: Message
type Message: Message
The type of Message the Worker is sent in Self::handle_message
.
Provided Methods§
sourcefn 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 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,
Override initialisation behaviour.
sourcefn 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 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,
Override shutdown behaviour.
sourcefn 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,
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,
Try to open and handle a typed message.