Skip to main content

ServiceLifecycle

Struct ServiceLifecycle 

Source
pub struct ServiceLifecycle<S> { /* private fields */ }
Expand description

Runs one service future with shared Aster shutdown mechanics.

This lower-level helper exists for tests and uncommon one-off runners. New product entrypoints should prefer AsterRuntime::builder and register the main service through RuntimeServiceComponent.

Implementations§

Source§

impl<S> ServiceLifecycle<S>

Source

pub fn new(server: S, shutdown_token: CancellationToken) -> Self

Creates a lifecycle runner for server and shutdown_token.

Source§

impl<S> ServiceLifecycle<S>
where S: Future,

Source

pub async fn run<Stop, StopFut, AfterStop, AfterStopFut>( self, stop_on_signal: Stop, after_stop: AfterStop, ) -> S::Output
where Stop: FnOnce() -> StopFut + Send + 'static, StopFut: Future<Output = ()> + Send + 'static, AfterStop: FnOnce() -> AfterStopFut, AfterStopFut: Future<Output = ()>,

Runs the service future and product cleanup hooks. Cancels and joins its signal listener before invoking after_stop; dropping this run future also aborts the listener so it cannot retain resources of an abandoned service. Cancellation is signalled before cleanup, including service panic and run cancellation.

§Panics

Service panics are resumed with their original payload after after_stop. If only cleanup panics, its panic is resumed; if both panic, the original service panic takes precedence. Destruction of the completed service future is part of this boundary.

Auto Trait Implementations§

§

impl<S> Freeze for ServiceLifecycle<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for ServiceLifecycle<S>
where S: RefUnwindSafe,

§

impl<S> Send for ServiceLifecycle<S>
where S: Send,

§

impl<S> Sync for ServiceLifecycle<S>
where S: Sync,

§

impl<S> Unpin for ServiceLifecycle<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for ServiceLifecycle<S>
where S: UnsafeUnpin,

§

impl<S> UnwindSafe for ServiceLifecycle<S>
where S: UnwindSafe,

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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, 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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more