Skip to main content

SupervisedThread

Struct SupervisedThread 

Source
pub struct SupervisedThread { /* private fields */ }
Expand description

A supervised OS thread that owns its join handle and a HealthFlag. The worker closure is the loop body; it receives the shutdown flag so it can exit promptly and return SupervisedOutcome::Shutdown.

Implementations§

Source§

impl SupervisedThread

Source

pub fn spawn<F>(config: SupervisorConfig, worker: F) -> Self
where F: FnMut(&Arc<AtomicBool>) -> SupervisedOutcome + Send + 'static,

Spawn a supervised thread. On a caught panic (under an unwind profile) or a SupervisedOutcome::Restart, the worker body is re-entered with capped backoff, reusing the same owned resources it captured. If the thread cannot be spawned at all, the flag is tripped straight to Failed so no surface reads green off a worker that never started.

Source

pub fn health(&self) -> HealthFlag

A cloneable handle to this thread’s health.

Source

pub fn shutdown(self) -> HealthLevel

Signal shutdown and join the worker. Returns the terminal health level.

Source

pub fn join(self) -> HealthLevel

Join after the worker reaches its own terminal condition without setting the shutdown flag. Use when another owned resource, such as a disconnected command channel, tells the worker to drain and exit.

Trait Implementations§

Source§

impl Drop for SupervisedThread

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. 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<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.