Skip to main content

ShutdownController

Struct ShutdownController 

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

Owns the shutdown watch channel that fans one stop signal out to the serve loop and every cooperating background task. The receivers it hands out are cheap to clone.

Implementations§

Source§

impl ShutdownController

Source

pub fn install() -> Self

Spawn the OS-signal task and return a controller that is live immediately. Requires an active Tokio runtime; the spawned task translates the first shutdown_signal into a true on the channel.

Source

pub fn manual() -> Self

Build a controller with no OS-signal task, triggered only through ShutdownController::trigger. Useful for tests and for embeddings that drive shutdown from their own signal source.

Source

pub fn subscribe(&self) -> Receiver<bool>

A receiver for a cooperating background loop. The canonical stop check is while !*rx.borrow_and_update() { if rx.changed().await.is_err() { break } }.

Source

pub fn trigger(&self)

Request a drain programmatically. This is the same path a signal takes, so an admin endpoint or a fatal-error handler can ask for the same clean teardown.

Source

pub fn is_shutdown(&self) -> bool

Whether a shutdown has already been requested.

Source

pub fn signalled(&self) -> impl Future<Output = ()> + Send + 'static

The future to hand to axum::serve(..).with_graceful_shutdown(..).

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, B, T> HttpServerConnExec<A, B> for T
where B: Body,

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<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