Sha256: fb2eede865a3e20b9f16af9b23f64dff4f28197161bcd4c5b388624907eab8d5

Contents?: true

Size: 1.25 KB

Versions: 15

Compression:

Stored size: 1.25 KB

Contents

use crate::clocks::{WasiClocks, WasiMonotonicClock, WasiSystemClock};
use cap_std::time::{Duration, Instant, SystemTime};
use cap_std::{ambient_authority, AmbientAuthority};
use cap_time_ext::{MonotonicClockExt, SystemClockExt};

pub struct SystemClock(cap_std::time::SystemClock);

impl SystemClock {
    pub fn new(ambient_authority: AmbientAuthority) -> Self {
        SystemClock(cap_std::time::SystemClock::new(ambient_authority))
    }
}
impl WasiSystemClock for SystemClock {
    fn resolution(&self) -> Duration {
        self.0.resolution()
    }
    fn now(&self, precision: Duration) -> SystemTime {
        self.0.now_with(precision)
    }
}

pub struct MonotonicClock(cap_std::time::MonotonicClock);
impl MonotonicClock {
    pub fn new(ambient_authority: AmbientAuthority) -> Self {
        MonotonicClock(cap_std::time::MonotonicClock::new(ambient_authority))
    }
}
impl WasiMonotonicClock for MonotonicClock {
    fn resolution(&self) -> Duration {
        self.0.resolution()
    }
    fn now(&self, precision: Duration) -> Instant {
        self.0.now_with(precision)
    }
}

pub fn clocks_ctx() -> WasiClocks {
    WasiClocks::new()
        .with_system(SystemClock::new(ambient_authority()))
        .with_monotonic(MonotonicClock::new(ambient_authority()))
}

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/wasi-common-30.0.2/src/sync/clocks.rs
wasmtime-29.0.0 ./ext/cargo-vendor/wasi-common-29.0.0/src/sync/clocks.rs
wasmtime-28.0.0 ./ext/cargo-vendor/wasi-common-28.0.0/src/sync/clocks.rs
wasmtime-27.0.0 ./ext/cargo-vendor/wasi-common-27.0.0/src/sync/clocks.rs
wasmtime-26.0.0 ./ext/cargo-vendor/wasi-common-26.0.0/src/sync/clocks.rs
wasmtime-25.0.2 ./ext/cargo-vendor/wasi-common-25.0.2/src/sync/clocks.rs
wasmtime-25.0.1 ./ext/cargo-vendor/wasi-common-25.0.1/src/sync/clocks.rs
wasmtime-25.0.0 ./ext/cargo-vendor/wasi-common-25.0.0/src/sync/clocks.rs
wasmtime-24.0.0 ./ext/cargo-vendor/wasi-common-24.0.0/src/sync/clocks.rs
wasmtime-23.0.2 ./ext/cargo-vendor/wasi-common-23.0.2/src/sync/clocks.rs
wasmtime-22.0.0 ./ext/cargo-vendor/wasi-common-22.0.0/src/sync/clocks.rs
wasmtime-21.0.1 ./ext/cargo-vendor/wasi-common-21.0.1/src/sync/clocks.rs
wasmtime-20.0.2 ./ext/cargo-vendor/wasi-common-20.0.2/src/sync/clocks.rs
wasmtime-20.0.0 ./ext/cargo-vendor/wasi-common-20.0.0/src/sync/clocks.rs
wasmtime-18.0.3 ./ext/cargo-vendor/wasi-common-18.0.3/src/sync/clocks.rs