Skip to main content

ShutdownController

Struct ShutdownController 

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

Controller for coordinated graceful shutdown.

This provides a clean way to propagate shutdown signals through an application. Multiple receivers can subscribe to receive shutdown notifications.

§Example

use asupersync::signal::ShutdownController;

async fn run_server() {
    let controller = ShutdownController::new();
    let mut receiver = controller.subscribe();

    // Spawn a task that will receive the shutdown signal
    let handle = async move {
        receiver.wait().await;
        println!("Shutting down...");
    };

    // Later, initiate shutdown
    controller.shutdown();
}

Implementations§

Source§

impl ShutdownController

Source

pub fn new() -> ShutdownController

Creates a new shutdown controller.

Source

pub fn subscribe(&self) -> ShutdownReceiver

Gets a handle for receiving shutdown notifications.

Multiple receivers can be created and they will all be notified when shutdown is initiated.

Source

pub fn shutdown(&self)

Initiates shutdown.

This wakes all receivers that are currently waiting for shutdown. The shutdown state is persistent - once initiated, it cannot be reset.

Source

pub fn is_shutting_down(&self) -> bool

Checks if shutdown has been initiated.

Source

pub fn listen_for_signals(self: &Arc<ShutdownController>)

Spawns a background task to listen for shutdown signals.

This is a convenience method that sets up signal handling (when available) to automatically trigger shutdown.

§Note

In Phase 0, signal handling is not available, so this method only sets up the controller for manual shutdown calls.

Trait Implementations§

Source§

impl Clone for ShutdownController

Source§

fn clone(&self) -> ShutdownController

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ShutdownController

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Default for ShutdownController

Source§

fn default() -> ShutdownController

Returns the “default value” for a type. 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: NoopSpan) -> Self

Instruments this future with a span (no-op when disabled).
Source§

fn in_current_span(self) -> Self

Instruments this future with the current span (no-op when disabled).
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> Same for T

Source§

type Output = T

Should always be Self
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
Source§

impl<T> ResponseProduces<T> for T