embassy-time-queue-utils

Crates

git

Versions

default

Flavors

Queue

Struct Queue 

Source
pub struct Queue { /* private fields */ }
Expand description

A timer queue, with items integrated into tasks.

§Safety

This Queue is only safe when there is a single integrated queue in the system.

If there are multiple integrated queues, additional checks are necessary to ensure that a Waker is not attempted to be enqueued in multiple queues.

Implementations§

Source§

impl Queue

Source

pub const fn new() -> Self

Creates a new timer queue.

Source

pub fn schedule_wake(&mut self, at: u64, waker: &Waker) -> bool

Schedules a task to run at a specific time.

If this function returns true, the caller should find the next expiration time and set a new alarm for that time.

Source

pub fn schedule_wake_queue_item( &mut self, at: u64, item: &mut TimerQueueItem, waker: &Waker, ) -> bool

Schedules a task to run at a specific time, using a timer queue item as storage.

If this function returns true, the caller should find the next expiration time and set a new alarm for that time.

This function assumes that the timer queue item is associated with the provided waker. It can be used to support cases where there may not be an embassy task behind the waker. One such case is integration with other async runtimes, be it a simple block_on implementation or something more complex.

Source

pub fn next_expiration(&mut self, now: u64) -> u64

Dequeues expired timers and returns the next alarm time.

The provided callback will be called for each expired task. Tasks that never expire will be removed, but the callback will not be called.

Trait Implementations§

Source§

impl Debug for Queue

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Send for Queue

Source§

impl Sync for Queue

Auto Trait Implementations§

§

impl !Freeze for Queue

§

impl !RefUnwindSafe for Queue

§

impl Unpin for Queue

§

impl !UnwindSafe for Queue

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