[][src]Struct hierarchical_hash_wheel_timer::wheels::quad_wheel::QuadWheelWithOverflow

pub struct QuadWheelWithOverflow<EntryType> where
    EntryType: Debug
{ /* fields omitted */ }

An implementation of four-level byte-sized wheel

Any value scheduled so far off that it doesn't fit into the wheel is stored in an overflow Vec and added to the wheel, once time as advanced enough that it actually fits. In this design the maximum schedule duration for the wheel itself is u32::MAX units (typically ms), everything else goes into the overflow Vec.

Methods

impl<EntryType> QuadWheelWithOverflow<EntryType> where
    EntryType: TimerEntryWithDelay
[src]

pub fn insert(&mut self, e: EntryType) -> Result<(), TimerError<EntryType>>[src]

Insert a new timeout into the wheel

impl<EntryType> QuadWheelWithOverflow<EntryType> where
    EntryType: Debug
[src]

pub fn new(pruner: fn(_: &EntryType) -> PruneDecision) -> Self[src]

Create a new wheel

pub fn remaining_time_in_cycle(&self) -> u64[src]

Described how many ticks are left before the timer has wrapped around completely

pub fn current_time_in_cycle(&self) -> u32[src]

Produces a 32-bit timestamp including the current index of every wheel

pub fn insert_with_delay(
    &mut self,
    e: EntryType,
    delay: Duration
) -> Result<(), TimerError<EntryType>>
[src]

Insert a new timeout into the wheel to be returned after delay ticks

pub fn tick(&mut self) -> Vec<EntryType>[src]

Move the wheel forward by a single unit (ms)

Returns a list of all timers that expire during this tick.

pub fn skip(&mut self, amount: u32)[src]

Skip a certain amount of units (ms)

No timers will be executed for the skipped time. Only use this after determining that it's actually valid with can_skip!

pub fn can_skip(&self) -> Skip[src]

Determine if and how many ticks can be skipped

Trait Implementations

impl<EntryType> Default for QuadWheelWithOverflow<EntryType> where
    EntryType: Debug
[src]

Auto Trait Implementations

impl<EntryType> RefUnwindSafe for QuadWheelWithOverflow<EntryType> where
    EntryType: RefUnwindSafe

impl<EntryType> Send for QuadWheelWithOverflow<EntryType> where
    EntryType: Send

impl<EntryType> Sync for QuadWheelWithOverflow<EntryType> where
    EntryType: Sync

impl<EntryType> Unpin for QuadWheelWithOverflow<EntryType> where
    EntryType: Unpin

impl<EntryType> UnwindSafe for QuadWheelWithOverflow<EntryType> where
    EntryType: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,