Skip to main content

GracefulShutdownSignal

Struct GracefulShutdownSignal 

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

Notification that the server has started a graceful shutdown.

The signal remains notified after graceful shutdown starts. A listener that calls notified or clones this signal after that point is notified immediately. A forced shutdown does not notify this signal.

§Server State

When this signal is notified, the Server has accepted a graceful shutdown command, but shutdown is not complete. The server sends this notification before it tells the accept loop and workers to stop. Therefore, a listener can briefly overlap with connection acceptance and normal worker operation.

Very shortly after notification, the server stops accepting connections and tells each worker to stop its services. Active service futures can continue until they finish or the ServerBuilder::shutdown_timeout expires.

§Use Cases

Connection-oriented services can listen to this signal to coordinate their own drain process. For example, a protocol dispatcher can:

  • close an idle persistent connection;
  • stop accepting new logical requests on an active connection;
  • let the current request or protocol operation finish; and
  • start a protocol-specific close handshake or flush buffered data.

This signal does not replace the worker shutdown timeout. A listener must still finish its service future for the worker to complete a graceful shutdown.

Implementations§

Source§

impl GracefulShutdownSignal

Source

pub async fn notified(&self)

Resolves when the server starts a graceful shutdown, or immediately if graceful shutdown has already started.

Trait Implementations§

Source§

impl Clone for GracefulShutdownSignal

Source§

fn clone(&self) -> GracefulShutdownSignal

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GracefulShutdownSignal

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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