Struct phron_finality::sync::task_queue::TaskQueue
source · pub struct TaskQueue<T> {
queue: BinaryHeap<ScheduledTask<T>>,
}
Fields§
§queue: BinaryHeap<ScheduledTask<T>>
Implementations§
source§impl<T> TaskQueue<T>
impl<T> TaskQueue<T>
Implements a queue allowing for scheduling tasks for some time in the future.
Does not actually execute any tasks, is used for ordering in time only.
sourcepub fn schedule_in(&mut self, task: T, delay: Duration)
pub fn schedule_in(&mut self, task: T, delay: Duration)
Schedules task
for after delay
.
sourcepub async fn pop(&mut self) -> Option<T>
pub async fn pop(&mut self) -> Option<T>
Awaits for the first and most overdue task and returns it. Returns None
if there are no tasks.
§Cancel safety
This method is cancellation safe. If you use it as the event in a tokio::select! statement and some other branch completes first, then it is guaranteed that the TaskQueue state will be unchanged.
sourceasync fn sleep_until_the_next_task_is_ready(&self)
async fn sleep_until_the_next_task_is_ready(&self)
Sleeps until some task is ready to be executed, or returns immediately if there are no tasks. Cancellation safe, since doesn’t mutate &self.
Trait Implementations§
Auto Trait Implementations§
impl<T> RefUnwindSafe for TaskQueue<T>where
T: RefUnwindSafe,
impl<T> Send for TaskQueue<T>where
T: Send,
impl<T> Sync for TaskQueue<T>where
T: Sync,
impl<T> Unpin for TaskQueue<T>where
T: Unpin,
impl<T> UnwindSafe for TaskQueue<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CheckedConversion for T
impl<T> CheckedConversion for T
§fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
fn checked_from<T>(t: T) -> Option<Self>where
Self: TryFrom<T>,
§fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
fn checked_into<T>(self) -> Option<T>where
Self: TryInto<T>,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> IsType<T> for T
impl<T> IsType<T> for T
§impl<T, Outer> IsWrappedBy<Outer> for T
impl<T, Outer> IsWrappedBy<Outer> for T
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> SaturatedConversion for T
impl<T> SaturatedConversion for T
§fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
fn saturated_from<T>(t: T) -> Selfwhere
Self: UniqueSaturatedFrom<T>,
§fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
fn saturated_into<T>(self) -> Twhere
Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of
T
. Read more§impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
impl<S, T> UncheckedInto<T> for Swhere
T: UncheckedFrom<S>,
§fn unchecked_into(self) -> T
fn unchecked_into(self) -> T
The counterpart to
unchecked_from
.§impl<T, S> UniqueSaturatedInto<T> for S
impl<T, S> UniqueSaturatedInto<T> for S
§fn unique_saturated_into(self) -> T
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of
T
.