Struct ServiceContext

Source
pub struct ServiceContext<'a> { /* private fields */ }
Expand description

An interface to the service provided to the tasks during initialization. This the main point of interaction between with the service.

The context provides access to the runtime, resources, and allows adding new tasks.

Implementations§

Source§

impl<'a> ServiceContext<'a>

Source

pub fn runtime_handle(&self) -> &Handle

Provides access to the runtime used by the service.

Can be used to spawn additional tasks within the same runtime. If some task stores the handle to spawn additional tasks, it is expected to do all the required cleanup.

In most cases, however, it is recommended to use add_task or its alternative instead.

§Note

While tokio::spawn and tokio::spawn_blocking will work as well, using the runtime handle from the context is still a recommended way to get access to runtime, as it tracks the access to the runtimes by layers.

Source

pub fn add_task<T: Task>(&mut self, task: T) -> &mut Self

Adds a task to the service.

Added tasks will be launched after the wiring process will be finished and all the preconditions are met.

Source

pub fn add_shutdown_hook(&mut self, hook: ShutdownHook) -> &mut Self

Adds a future to be invoked after node shutdown. May be used to perform cleanup tasks.

The future is guaranteed to only be polled after all the node tasks are stopped or timed out. All the futures will be awaited sequentially.

Source

pub fn get_resource<T: Resource + Clone>(&mut self) -> Result<T, WiringError>

Attempts to retrieve the resource of the specified type.

§Panics

Panics if the resource with the specified ResourceId exists, but is not of the requested type.

Source

pub fn get_resource_or_insert_with<T: Resource + Clone, F: FnOnce() -> T>( &mut self, f: F, ) -> T

Attempts to retrieve the resource of the specified type. If the resource is not available, it is created using the provided closure.

Source

pub fn get_resource_or_default<T: Resource + Clone + Default>(&mut self) -> T

Attempts to retrieve the resource of the specified type. If the resource is not available, it is created using T::default().

Source

pub fn insert_resource<T: Resource>( &mut self, resource: T, ) -> Result<(), WiringError>

Adds a resource to the service.

If the resource with the same type is already provided, the method will return an error.

Trait Implementations§

Source§

impl<'a> Debug for ServiceContext<'a>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'a> Freeze for ServiceContext<'a>

§

impl<'a> !RefUnwindSafe for ServiceContext<'a>

§

impl<'a> !Send for ServiceContext<'a>

§

impl<'a> !Sync for ServiceContext<'a>

§

impl<'a> Unpin for ServiceContext<'a>

§

impl<'a> !UnwindSafe for ServiceContext<'a>

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.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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, 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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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> ErasedDestructor for T
where T: 'static,