Command

Enum Command 

Source
pub enum Command {
    Pause,
    Resume,
    ExitWithSuccess,
    Quit,
    Nudge,
}
Expand description

Commands are messages that can be send to control the behavior of an actor.

They are similar to UNIX signals.

They are treated with a higher priority than regular actor messages.

Variants§

§

Pause

Temporarily pauses the actor. A paused actor only checks on its high priority channel and still shows “progress”. It appears as healthy to the supervisor.

Scheduled message are still processed.

Semantically, it is similar to SIGSTOP.

§

Resume

Resume a paused actor. If the actor was not paused this command has no effects.

Semantically, it is similar to SIGCONT.

§

ExitWithSuccess

Stops the actor with a success exit status code.

Upstream actors that terminates should send the ExitWithSuccess command to downstream actors to inform them that there are no more incoming messages.

It is similar to Quit, except for the resulting exit status.

§

Quit

Asks the actor to gracefully shutdown.

The actor will stop processing messages and its finalize function will be called.

The exit status is then ActorExitStatus::Quit.

This is the equivalent of sending SIGINT/Ctrl-C to a process.

§

Nudge

Nudging is a No-op message.

Its only effect is to wake-up actors that are stuck waiting for a message.

This is useful to kill actors properly or for tests. Actors stuck waiting for a message do not have any timeout to check for their killswitch signal.

Note: Historically, actors used to have a timeout, then the wake up logic worked using a Kill command. However, after the introduction of supervision, it became common to recycle a mailbox.

After a panic for instance, the supervisor of an actor might kill it by activating its killswitch and sending a Kill message.

The respawned actor would receive its predecessor mailbox and possibly end up process a Kill message as its first message.

Trait Implementations§

Source§

impl Debug for Command

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<A> Handler<Command> for A
where A: Actor,

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, command: Command, ctx: &'life1 ActorContext<A>, ) -> Pin<Box<dyn Future<Output = Result<<A as Handler<Command>>::Reply, ActorExitStatus>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, A: 'async_trait,

and its exit status will be the one defined in the error.

Source§

type Reply = ()

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more