This commit is contained in:
datdenkikniet 2023-04-10 13:09:50 +02:00
parent 5bcbe92f55
commit 53fbf30514

View file

@ -75,19 +75,11 @@ impl Instant {
NOW.lock().clone().unwrap_or(Instant::ZERO) NOW.lock().clone().unwrap_or(Instant::ZERO)
} }
pub fn from_ticks(ticks: u64) -> Self {
Self(ticks)
}
pub fn as_ticks(&self) -> u64 {
self.0
}
pub fn elapsed(&self) -> Duration { pub fn elapsed(&self) -> Duration {
Duration(Self::now().0 - self.0) Duration(Self::now().0 - self.0)
} }
pub async fn sleep_until(time: Instant) { pub async fn wait_until(time: Instant) {
core::future::poll_fn(|ctx| { core::future::poll_fn(|ctx| {
if Instant::now() >= time { if Instant::now() >= time {
Poll::Ready(()) Poll::Ready(())
@ -102,7 +94,7 @@ impl Instant {
impl From<u64> for Instant { impl From<u64> for Instant {
fn from(value: u64) -> Self { fn from(value: u64) -> Self {
Self::from_ticks(value) Self(value)
} }
} }
@ -206,8 +198,11 @@ fn timer_queue() {
let total_millis = total.as_ticks(); let total_millis = total.as_ticks();
async move { async move {
// A `pre_delay` simulates a delay in scheduling,
// without the `pre_delay` being present in the timer
// queue
if let Some(pre_delay) = pre_delay { if let Some(pre_delay) = pre_delay {
Instant::sleep_until(start + pre_delay).await; Instant::wait_until(start + pre_delay).await;
} }
TestMono::queue().delay(delay).await; TestMono::queue().delay(delay).await;