Skip to main content

TaskDeadlineQueue

Struct TaskDeadlineQueue 

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

Fixed-capacity value heap created during CPU-local initialization.

Construction is the only operation that reserves memory. Arming, cancelling, and expiring never grow or shrink the allocation.

Implementations§

Source§

impl TaskDeadlineQueue

Source

pub fn new(capacity: usize) -> Self

Preallocates capacity independent slots for each typed timer class.

Source

pub fn arm( &mut self, node: &TaskDeadlineNode, deadline: MonotonicDeadline, kind: TaskDeadlineKind, ) -> Result<TaskDeadlineRegistration, TaskDeadlineError>

Arms a typed task deadline for an absolute monotonic deadline.

Rearming replaces this physical node’s previous entry in place. Distinct nodes for one thread remain independent, and each node consumes at most one preallocated heap slot.

§Errors

Returns TaskDeadlineError::Capacity without changing the queue or consuming an arm generation if no heap slot remains. A node may retain the lazily assigned identity used for this capacity check. Returns TaskDeadlineError::GenerationExhausted instead of reusing an old generation.

Queue mutation must remain serialized on its owner CPU. The returned move-only registration owns the physical entry; the queue stores the thread, generation, and event kind by value and does not retain node.

Source

pub fn cancel(&mut self, registration: &TaskDeadlineRegistration) -> bool

Cancels one matching arm operation and immediately releases its heap slot.

Unlike lazy tombstoning, physical removal releases capacity immediately and makes the registration terminal as soon as this method returns.

Source

pub fn next_deadline(&self) -> Option<MonotonicDeadline>

Returns the earliest logical task deadline without mutating the queue.

Source

pub fn expire( &mut self, request: TaskDeadlineExpireRequest, output: &mut [ExpiredTaskDeadline], ) -> TaskDeadlineExpireBatch

Expires timers into caller-provided storage without allocating or invoking callbacks.

Source

pub const fn capacity(&self) -> usize

Returns the preallocated entry capacity.

Source

pub fn len(&self) -> usize

Returns the number of active task deadline entries in storage.

Source

pub fn is_empty(&self) -> bool

Reports whether no timer entries remain.

Trait Implementations§

Source§

impl Debug for TaskDeadlineQueue

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.