pub struct MockTimeService { /* private fields */ }
Expand description

A TimeService that simulates time and allows for fine-grained control over advancing time and waking up sleeping tasks.

Auto Advance

MockTimeService has the option to auto advance time when new Sleeps are crated. When we’re auto advancing, new Sleeps are immediately resolved and the simulation time is advanced to the wait deadline. New Sleeps whose deadlines are after the auto advance deadline will be pending and must be manually woken by the MockTimeService::advance_{..} methods.

Implementations§

source§

impl MockTimeService

source

pub fn new() -> Self

Create a new MockTimeService with no auto advance. Time will only advance by manually calling the MockTimeService::advance_{..} methods.

source

pub fn new_auto_advance() -> Self

Create a new MockTimeService that will auto advance forever.

source

pub fn new_auto_advance_for(deadline: Duration) -> Self

Create a new MockTimeService that will auto advance until the simulation time passes deadline.

source

pub fn num_waiters(&self) -> usize

Return the number of pending Sleep waiters.

source

pub fn advance_next(&self) -> Option<Duration>

Advance time to the next pending waiter, wake it up, and return the wake time, or None if there are no waiters.

source

pub fn advance(&self, duration: Duration) -> usize

Advance time by duration and wake any pending waiters whose sleep has expired. Return the number of waiters that we woke up.

source

pub fn advance_secs(&self, duration: u64) -> usize

Advance time by duration seconds. See advance.

source

pub fn advance_ms(&self, duration: u64) -> usize

Advance time by duration milliseconds. See advance.

source

pub async fn advance_next_async(&self) -> Option<Duration>

Advance time to the next pending waiter, wake it up, and return the wake time, or None if there are no waiters.

Yields to the executor to run any freshly awoken tasks (which might also create more Sleep futures).

source

pub async fn advance_async(&self, duration: Duration) -> usize

Advance time by duration and wake any pending waiters whose sleep has expired. Return the number of waiters that we woke up.

Yields to the executor to run any freshly awoken tasks (which might also create more Sleep futures).

source

pub async fn advance_secs_async(&self, duration: u64) -> usize

Advance time by duration seconds. See advance_async.

source

pub async fn advance_ms_async(&self, duration: u64) -> usize

Advance time by duration milliseconds. See advance_async.

Trait Implementations§

source§

impl Clone for MockTimeService

source§

fn clone(&self) -> MockTimeService

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for MockTimeService

source§

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

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

impl From<MockTimeService> for TimeService

source§

fn from(v: MockTimeService) -> TimeService

Converts to this type from the input type.
source§

impl TimeServiceTrait for MockTimeService

source§

fn now(&self) -> Instant

Query a monotonically nondecreasing clock. Returns an opaque type that can only be compared to other Instants, i.e., this is a monotonic relative time whereas now_unix_time is a non-monotonic absolute time. Read more
source§

fn now_unix_time(&self) -> Duration

Query the current unix timestamp as a Duration. Read more
source§

fn sleep(&self, duration: Duration) -> Sleep

Return a Future that waits until duration has passed. Read more
source§

fn sleep_blocking(&self, duration: Duration)

Blocks the current thread until duration time has passed.
source§

fn now_secs(&self) -> u64

Query the current unix timestamp in seconds. Read more
source§

fn sleep_until(&self, deadline: Instant) -> Sleep

Return a Future that waits until the deadline. Read more
source§

fn interval(&self, period: Duration) -> Interval

Creates a new Interval that yields with interval of period. The first tick completes immediately. An interval will tick indefinitely. Read more
source§

fn interval_at(&self, start: Instant, period: Duration) -> Interval

Creates a new Interval that yields with interval of period. The first tick completes after the start deadline. An interval will tick indefinitely. Read more
source§

fn timeout<F: Future>(&self, duration: Duration, future: F) -> Timeout<F>

Require a Future to complete before the specified duration has elapsed. Read more
source§

fn timeout_at<F: Future>(&self, deadline: Instant, future: F) -> Timeout<F>

Require a Future to complete before the deadline. Read more
source§

impl TryInto<MockTimeService> for TimeService

§

type Error = &'static str

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

fn try_into( self ) -> Result<MockTimeService, <Self as TryInto<MockTimeService>>::Error>

Performs the conversion.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

const: unstable · 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> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.