Struct Shutdown
pub struct Shutdown { /* private fields */ }Expand description
The Shutdown struct is the main entry point to the shutdown system.
It is created by calling Shutdown::new, which takes a Future that
will be awaited on when shutdown is requested. Most users will want to
create a Shutdown with Shutdown::default, which uses the default
signal handler to trigger shutdown. See default_signal for more info.
(NOTE: that these defaults are not available when compiling with –cfg loom)
See the README for more info on how to use this crate.
Implementations§
§impl Shutdown
impl Shutdown
pub fn builder() -> ShutdownBuilder<WithSignal<Default>>
pub fn builder() -> ShutdownBuilder<WithSignal<Default>>
Create a ShutdownBuilder allowing you to add a delay,
a custom shutdown trigger signal and even an overwrite signal
to force a shutdown even if workers are still busy.
pub fn no_signal() -> Shutdown
pub fn no_signal() -> Shutdown
Creates a new Shutdown struct with no signal.
This is useful if you want to support a Waitgroup like system where you wish to wait for all open tasks without requiring a signal to be triggered first.
pub fn guard(&self) -> ShutdownGuard
pub fn guard(&self) -> ShutdownGuard
Returns a ShutdownGuard which primary use
is to prevent the Shutdown from shutting down.
The creation of a ShutdownGuard is lockfree.
pub fn guard_weak(&self) -> WeakShutdownGuard
pub fn guard_weak(&self) -> WeakShutdownGuard
Returns a WeakShutdownGuard which in contrast to
ShutdownGuard does not prevent the Shutdown
from shutting down.
Instead it is used to wait for
“shutdown signal” to be triggered or to create
a ShutdownGuard which prevents the Shutdown
once and only once it is needed.
The creation of a WeakShutdownGuard is lockfree.
pub fn spawn_task<T>(&self, task: T) -> JoinHandle<<T as Future>::Output> ⓘ
pub fn spawn_task<T>(&self, task: T) -> JoinHandle<<T as Future>::Output> ⓘ
Returns a Tokio [crate::sync::JoinHandle] that can be awaited on
to wait for the spawned task to complete. See
[crate::sync::spawn] for more information.
pub fn spawn_task_fn<T, F>(&self, task: F) -> JoinHandle<<T as Future>::Output> ⓘ
pub fn spawn_task_fn<T, F>(&self, task: F) -> JoinHandle<<T as Future>::Output> ⓘ
Returns a Tokio [crate::sync::JoinHandle] that can be awaited on
to wait for the spawned task (fn) to complete. See
[crate::sync::spawn] for more information.
pub async fn shutdown(self) -> Duration
pub async fn shutdown(self) -> Duration
Returns a future that completes once the Shutdown has been triggered
and all ShutdownGuards have been dropped.
The resolved Duration is the time it took for the Shutdown to
to wait for all ShutdownGuards to be dropped.
You can use Shutdown::shutdown_with_limit to limit the time the
Shutdown waits for all ShutdownGuards to be dropped.
§Panics
This method can panic if the internal mutex is poisoned.
pub async fn shutdown_with_limit(
self,
limit: Duration,
) -> Result<Duration, TimeoutError>
pub async fn shutdown_with_limit( self, limit: Duration, ) -> Result<Duration, TimeoutError>
Returns a future that completes once the Shutdown has been triggered
and all ShutdownGuards have been dropped or the given Duration
has elapsed.
The resolved Duration is the time it took for the Shutdown to
to wait for all ShutdownGuards to be dropped.
You can use Shutdown::shutdown to wait for all ShutdownGuards
to be dropped without a time limit.
§Panics
This method can panic if the internal mutex is poisoned.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Shutdown
impl RefUnwindSafe for Shutdown
impl Send for Shutdown
impl Sync for Shutdown
impl Unpin for Shutdown
impl UnwindSafe for Shutdown
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§fn and<P, B, E>(self, other: P) -> And<T, P>
fn and<P, B, E>(self, other: P) -> And<T, P>
Policy that returns Action::Follow only if self and other return
Action::Follow. Read more