pub struct Supervisor;Expand description
The supervisor actor itself.
Spawns its children in post_start, listens for child failures, and restarts them if needed.
If meltdown occurs, it returns an error to end abnormally (thus skipping post_stop).
Implementations§
Source§impl Supervisor
impl Supervisor
pub async fn spawn_linked<T: Actor>( name: ActorName, handler: T, startup_args: T::Arguments, supervisor: ActorCell, ) -> Result<(ActorRef<T::Msg>, JoinHandle<()>), SpawnErr>
pub async fn spawn( name: ActorName, startup_args: SupervisorArguments, ) -> Result<(ActorRef<SupervisorMsg>, JoinHandle<()>), SpawnErr>
Trait Implementations§
Source§impl Actor for Supervisor
impl Actor for Supervisor
Source§fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
msg: SupervisorMsg,
state: &'life1 mut SupervisorState,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
msg: SupervisorMsg,
state: &'life1 mut SupervisorState,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
The main message handler: we respond to “spawn child X” or “inspect state”. Each time we finish, we store final state in a global map (test usage only).
Source§fn handle_supervisor_evt<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
evt: SupervisionEvent,
state: &'life1 mut Self::State,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn handle_supervisor_evt<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
evt: SupervisionEvent,
state: &'life1 mut Self::State,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Respond to supervision events from child actors.
ActorTerminated=> treat as normal exitActorFailed=> treat as abnormal
Source§fn post_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_myself: ActorRef<Self::Msg>,
_state: &'life1 mut Self::State,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn post_stop<'life0, 'life1, 'async_trait>(
&'life0 self,
_myself: ActorRef<Self::Msg>,
_state: &'life1 mut Self::State,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Called if the supervisor stops normally (e.g. .stop(None)).
For meltdown stops, we skip this, but we still store final state for testing.
Source§type Msg = SupervisorMsg
type Msg = SupervisorMsg
The message type for this actor
Source§type State = SupervisorState
type State = SupervisorState
The type of state this actor manages internally
Source§type Arguments = SupervisorArguments
type Arguments = SupervisorArguments
Initialization arguments
Source§fn pre_start<'life0, 'async_trait>(
&'life0 self,
_myself: ActorRef<Self::Msg>,
args: Self::Arguments,
) -> Pin<Box<dyn Future<Output = Result<Self::State, ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn pre_start<'life0, 'async_trait>(
&'life0 self,
_myself: ActorRef<Self::Msg>,
args: Self::Arguments,
) -> Pin<Box<dyn Future<Output = Result<Self::State, ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Invoked when an actor is being started by the system. Read more
Source§fn post_start<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
state: &'life1 mut SupervisorState,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn post_start<'life0, 'life1, 'async_trait>(
&'life0 self,
myself: ActorRef<Self::Msg>,
state: &'life1 mut SupervisorState,
) -> Pin<Box<dyn Future<Output = Result<(), ActorProcessingErr>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Invoked after an actor has started. Read more
Source§fn spawn<'async_trait>(
name: Option<String>,
handler: Self,
startup_args: Self::Arguments,
) -> Pin<Box<dyn Future<Output = Result<(ActorRef<Self::Msg>, JoinHandle<()>), SpawnErr>> + Send + 'async_trait>>where
Self: 'async_trait,
fn spawn<'async_trait>(
name: Option<String>,
handler: Self,
startup_args: Self::Arguments,
) -> Pin<Box<dyn Future<Output = Result<(ActorRef<Self::Msg>, JoinHandle<()>), SpawnErr>> + Send + 'async_trait>>where
Self: 'async_trait,
Spawn an actor of this type, which is unsupervised, automatically starting Read more
Source§fn spawn_linked<'async_trait>(
name: Option<String>,
handler: Self,
startup_args: Self::Arguments,
supervisor: ActorCell,
) -> Pin<Box<dyn Future<Output = Result<(ActorRef<Self::Msg>, JoinHandle<()>), SpawnErr>> + Send + 'async_trait>>where
Self: 'async_trait,
fn spawn_linked<'async_trait>(
name: Option<String>,
handler: Self,
startup_args: Self::Arguments,
supervisor: ActorCell,
) -> Pin<Box<dyn Future<Output = Result<(ActorRef<Self::Msg>, JoinHandle<()>), SpawnErr>> + Send + 'async_trait>>where
Self: 'async_trait,
Spawn an actor of this type with a supervisor, automatically starting the actor Read more
Auto Trait Implementations§
impl Freeze for Supervisor
impl RefUnwindSafe for Supervisor
impl Send for Supervisor
impl Sync for Supervisor
impl Unpin for Supervisor
impl UnwindSafe for Supervisor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> Message for T
impl<T> Message for T
Source§fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
fn from_boxed(m: BoxedMessage) -> Result<Self, BoxedDowncastErr>
Convert a BoxedMessage to this concrete type
Source§fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
fn box_message(self, pid: &ActorId) -> Result<BoxedMessage, BoxedDowncastErr>
Convert this message to a BoxedMessage