Skip to main content

TaskPriorityQueue

Struct TaskPriorityQueue 

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

A priority queue for tasks.

Implementations§

Source§

impl TaskPriorityQueue

Source

pub fn new() -> Self

Create a new unbounded queue.

Source

pub fn with_capacity(capacity: usize) -> Self

Create a queue with a maximum capacity.

Source

pub fn set_age_bump_amount(&mut self, amount: u32)

Set the aging bump amount.

Source

pub fn push(&mut self, task: PriorityTask) -> bool

Push a task into the queue.

Returns false if the queue is at capacity.

Source

pub fn pop(&mut self) -> Option<PriorityTask>

Pop the highest-priority task.

Source

pub fn peek(&self) -> Option<&PriorityTask>

Peek at the highest-priority task without removing it.

Source

pub fn len(&self) -> usize

Number of tasks in the queue.

Source

pub fn is_empty(&self) -> bool

Whether the queue is empty.

Source

pub fn clear(&mut self)

Clear all tasks.

Source

pub fn apply_aging(&mut self)

Apply aging: bump the priority of all non-critical tasks.

This prevents starvation of low-priority tasks by gradually increasing their effective priority.

Source

pub fn remove_expired(&mut self, now_ms: u64) -> Vec<PriorityTask>

Remove all tasks that have passed their deadline.

now_ms is the current timestamp in milliseconds. Returns the expired tasks.

Source

pub fn drain_priority(&mut self, priority: Priority) -> Vec<PriorityTask>

Drain all tasks with a given priority.

Source

pub fn capacity(&self) -> usize

Get queue capacity (0 = unlimited).

Source

pub fn try_preempt(&mut self, incoming: PriorityTask) -> Option<PriorityTask>

Attempt to preempt (replace) the lowest-priority task if incoming has strictly higher effective weight.

Returns the displaced task if preemption occurred, or None when the queue is not full, the queue is empty, or incoming does not outrank the current minimum.

Preemption is only meaningful when the queue is at capacity; callers should call push directly when capacity has not been reached.

Source

pub fn would_preempt(&self, incoming: &PriorityTask) -> bool

Check whether the given task would preempt the current lowest-priority occupant without actually performing the preemption.

Trait Implementations§

Source§

impl Debug for TaskPriorityQueue

Source§

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

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

impl Default for TaskPriorityQueue

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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