Skip to main content

DeadlineScheduler

Struct DeadlineScheduler 

Source
pub struct DeadlineScheduler<DS: DeadlineStore> { /* private fields */ }
Expand description

A background task that polls DeadlineStore::due_now and dispatches deadline commands to the owning processes via a caller-supplied function.

Obtain via EngineContext::run_deadline_scheduler and drive by spawning DeadlineScheduler::run in a Tokio task.

§Dispatch function

The dispatch function receives a fired Deadline and returns a future that dispatches the appropriate timeout command to the process. The function is responsible for resuming the correct workflow and calling execute. After the future completes, the scheduler cancels the deadline from the store regardless of the dispatch outcome (to prevent re-firing).

use std::time::Duration;

let scheduler = ctx.run_deadline_scheduler(
    |deadline| async move {
        tracing::warn!(
            deadline_id = %deadline.deadline_id(),
            label = %deadline.label(),
            "deadline fired",
        );
        Ok(())
    },
    100,
    Duration::from_secs(30),
);
tokio::spawn(async move { scheduler.run().await });

Implementations§

Source§

impl<DS: DeadlineStore> DeadlineScheduler<DS>

Source

pub async fn run(self)

Run the deadline poll loop until the task is cancelled.

Auto Trait Implementations§

§

impl<DS> !RefUnwindSafe for DeadlineScheduler<DS>

§

impl<DS> !UnwindSafe for DeadlineScheduler<DS>

§

impl<DS> Freeze for DeadlineScheduler<DS>
where DS: Freeze,

§

impl<DS> Send for DeadlineScheduler<DS>

§

impl<DS> Sync for DeadlineScheduler<DS>

§

impl<DS> Unpin for DeadlineScheduler<DS>
where DS: Unpin,

§

impl<DS> UnsafeUnpin for DeadlineScheduler<DS>
where DS: UnsafeUnpin,

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> 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<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