Struct sc_service::TaskManager [−][src]
pub struct TaskManager { /* fields omitted */ }
Expand description
Helper struct to manage background/async tasks in Service.
Implementations
pub fn new(
executor: TaskExecutor,
prometheus_registry: Option<&Registry>
) -> Result<Self, PrometheusError>
pub fn new(
executor: TaskExecutor,
prometheus_registry: Option<&Registry>
) -> Result<Self, PrometheusError>
If a Prometheus registry is passed, it will be used to report statistics about the service tasks.
Get a handle for spawning tasks.
Get a handle for spawning essential tasks.
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.
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.
Set what the task manager should keep alive, can be called multiple times.
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
Mutably borrows from an owned value. Read more
impl<T> Downcast for T where
T: Any,
impl<T> Downcast for T where
T: Any,
Convert Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
. Read more
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
pub fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
. Read more
Convert &Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s. Read more
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
pub fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert &mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
type Output = T
type Output = T
Should always be Self
The counterpart to unchecked_from
.
Consume self to return an equivalent value of T
.
pub fn vzip(self) -> V
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more