Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/crates/wasi-http/src/p3/wit/deps/clocks/monotonic-clock.wit
1693 views
package wasi:[email protected];
/// WASI Monotonic Clock is a clock API intended to let users measure elapsed
/// time.
///
/// It is intended to be portable at least between Unix-family platforms and
/// Windows.
///
/// A monotonic clock is a clock which has an unspecified initial value, and
/// successive reads of the clock will produce non-decreasing values.
@since(version = 0.3.0-rc-2025-08-15)
interface monotonic-clock {
    /// An instant in time, in nanoseconds. An instant is relative to an
    /// unspecified initial value, and can only be compared to instances from
    /// the same monotonic-clock.
    @since(version = 0.3.0-rc-2025-08-15)
    type instant = u64;

    /// A duration of time, in nanoseconds.
    @since(version = 0.3.0-rc-2025-08-15)
    type duration = u64;

    /// Read the current value of the clock.
    ///
    /// The clock is monotonic, therefore calling this function repeatedly will
    /// produce a sequence of non-decreasing values.
    @since(version = 0.3.0-rc-2025-08-15)
    now: func() -> instant;

    /// Query the resolution of the clock. Returns the duration of time
    /// corresponding to a clock tick.
    @since(version = 0.3.0-rc-2025-08-15)
    get-resolution: func() -> duration;

    /// Wait until the specified instant has occurred.
    @since(version = 0.3.0-rc-2025-08-15)
    wait-until: async func(
        when: instant,
    );

    /// Wait for the specified duration has elapsed.
    @since(version = 0.3.0-rc-2025-08-15)
    wait-for: async func(
        how-long: duration,
    );
}