Struct sc_service::TaskManager
source · [−]pub struct TaskManager { /* private fields */ }
Expand description
Helper struct to manage background/async tasks in Service.
Implementations
sourceimpl TaskManager
impl TaskManager
sourcepub fn spawn_handle(&self) -> SpawnTaskHandle
pub fn spawn_handle(&self) -> SpawnTaskHandle
Get a handle for spawning tasks.
sourcepub fn spawn_essential_handle(&self) -> SpawnEssentialTaskHandle
pub fn spawn_essential_handle(&self) -> SpawnEssentialTaskHandle
Get a handle for spawning essential tasks.
sourcepub fn clean_shutdown(self) -> Pin<Box<dyn Future<Output = ()> + Send>>
pub fn clean_shutdown(self) -> Pin<Box<dyn Future<Output = ()> + Send>>
Send the signal for termination, prevent new tasks to be created, await for all the existing tasks to be finished and drop the object. You can consider this as an async drop.
It’s always better to call and await this function before exiting the process as background tasks may be running in the background. If the process exit and the background tasks are not cancelled, this will lead to objects not getting dropped properly.
This is an issue in some cases as some of our dependencies do require that we drop all the objects properly otherwise it triggers a SIGABRT on exit.
sourcepub fn future<'a>(
&'a mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>
pub fn future<'a>(
&'a mut self
) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'a>>
Return a future that will end with success if the signal to terminate was sent
(self.terminate()
) or with an error if an essential task fails.
Warning
This function will not wait until the end of the remaining task. You must call and await
clean_shutdown()
after this.
sourcepub fn keep_alive<T: 'static + Send + Sync>(&mut self, to_keep_alive: T)
pub fn keep_alive<T: 'static + Send + Sync>(&mut self, to_keep_alive: T)
Set what the task manager should keep alive, can be called multiple times.
sourcepub fn add_child(&mut self, child: TaskManager)
pub fn add_child(&mut self, child: TaskManager)
Register another TaskManager to terminate and gracefully shutdown when the parent
terminates and gracefully shutdown. Also ends the parent future()
if a child’s essential
task fails. (But don’t end the parent if a child’s normal task fails.)
Auto Trait Implementations
impl !RefUnwindSafe for TaskManager
impl Send for TaskManager
impl !Sync for TaskManager
impl Unpin for TaskManager
impl !UnwindSafe for TaskManager
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> CheckedConversion for T
impl<T> CheckedConversion for T
sourcefn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self> where
Self: TryFrom<T>,
Convert from a value of T
into an equivalent instance of Option<Self>
. Read more
sourcefn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T> where
Self: TryInto<T>,
Consume self to return Some
equivalent value of Option<T>
. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T, Outer> IsWrappedBy<Outer> for T where
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
impl<T, Outer> IsWrappedBy<Outer> for T where
Outer: AsRef<T> + AsMut<T> + From<T>,
T: From<Outer>,
sourceimpl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
sourcefn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Self where
Self: UniqueSaturatedFrom<T>,
Convert from a value of T
into an equivalent instance of Self
. Read more
sourcefn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> T where
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of T
. Read more
sourceimpl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for S where
T: UncheckedFrom<S>,
sourcepub fn unchecked_into(self) -> T
pub fn unchecked_into(self) -> T
The counterpart to unchecked_from
.
sourceimpl<T, S> UniqueSaturatedInto<T> for S where
T: Bounded,
S: TryInto<T>,
impl<T, S> UniqueSaturatedInto<T> for S where
T: Bounded,
S: TryInto<T>,
sourcepub fn unique_saturated_into(self) -> T
pub fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of T
.
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more