pub trait Worker<N: Node>: Any + Send + Sync + Sized {
    type Config;
    type Error: Error;

    fn start<'life0, 'async_trait>(
        node: &'life0 mut N,
        config: Self::Config
    ) -> Pin<Box<dyn Future<Output = Result<Self, Self::Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
; fn dependencies() -> &'static [TypeId] { ... } fn stop<'life0, 'async_trait>(
        self,
        _node: &'life0 mut N
    ) -> Pin<Box<dyn Future<Output = Result<(), Self::Error>> + Send + 'async_trait>>
    where
        'life0: 'async_trait,
        Self: 'async_trait
, { ... } }
Expand description

A trait representing a node worker.

Node workers are conceptually similar to actors in the actor programming model, but differ slightly in a number of crucial ways.

  • Workers may register and access shared state, known as ‘resources’.
  • Workers have a topological ordering that determine when they should be started and stopped.

Required Associated Types

The configuration state required to start this worker.

An error that may be emitted during node startup and shutdown.

Required Methods

Attempt to instantiate this worker with the given node and worker configuration.

Provided Methods

Generate a list of TypeIds representing the topological worker dependencies of this worker.

Workers listed will be started before this worker and shut down after this worker.

Attempt to stop an instance of this worker.

Implementors