Skip to content

vihaco_stdlib::clock

clock

vihaco_stdlib::clock

Reusable global-clock and timing vocabulary for vihaco runtimes.

GlobalClock is an ordered event queue. It owns modeled timeline state, but does not execute instructions, dispatch events, or know about the machine that owns it. A runtime can use the types in this module to build its own scheduling policy and root event loop.

classGlobalClocksource

vihaco_stdlib::clock::GlobalClock

Bases: Default

Rust struct. A deterministic event queue ordered by global tick and insertion sequence.

pub struct GlobalClock<E>
source

methodis_emptysource

vihaco_stdlib::clock::GlobalClock::is_empty

pub fn is_empty(&self) -> bool

Returns

bool

source

methodnewsource

vihaco_stdlib::clock::GlobalClock::new

pub fn new() -> Self

Returns

Self

source

methodnowsource

vihaco_stdlib::clock::GlobalClock::now

pub fn now(&self) -> GlobalTick

Returns

GlobalTick

source

methodpop_earliestsource

vihaco_stdlib::clock::GlobalClock::pop_earliest

pub fn pop_earliest(&mut self) -> Option<(GlobalTick, E)>

Returns

Option<(GlobalTick, E)>

Removes the earliest event and advances the current global tick to it.

source

methodschedule_aftersource

vihaco_stdlib::clock::GlobalClock::schedule_after

Signature
pub fn schedule_after(&mut self, after: GlobalDuration, event: E) -> Result<(), ClockFault>

Parameters

NameTypeDescription
afterGlobalDuration
eventE

Returns

Result<(), ClockFault>

Converts relative work into an absolute global tick.

source

methodschedule_atsource

vihaco_stdlib::clock::GlobalClock::schedule_at

Signature
pub fn schedule_at(&mut self, tick: GlobalTick, event: E) -> Result<(), ClockFault>

Parameters

NameTypeDescription
tickGlobalTick
eventE

Returns

Result<(), ClockFault>

Inserts owned scheduling work at an absolute global tick.

source

classGlobalDurationsource

vihaco_stdlib::clock::GlobalDuration

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq, PartialOrd, Ord

Rust struct. A distance between two positions on the modeled global timeline.

pub struct GlobalDuration

Fields

NameTypeDescription
0u64
source

classGlobalTicksource

vihaco_stdlib::clock::GlobalTick

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq, PartialOrd, Ord

Rust struct. An absolute position on the modeled global timeline.

pub struct GlobalTick

Fields

NameTypeDescription
0u64
source

methodchecked_addsource

vihaco_stdlib::clock::GlobalTick::checked_add

Signature
pub fn checked_add(self, duration: GlobalDuration) -> Result<Self, ClockFault>

Parameters

NameTypeDescription
durationGlobalDuration

Returns

Result<Self, ClockFault>

source

classGlobalTicksPerLocalCyclesource

vihaco_stdlib::clock::GlobalTicksPerLocalCycle

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq, PartialOrd, Ord

Rust struct. The conversion ratio from local cycles to global ticks.

pub struct GlobalTicksPerLocalCycle

Fields

NameTypeDescription
0u64
source

methodnewsource

vihaco_stdlib::clock::GlobalTicksPerLocalCycle::new

pub fn new(value: u64) -> Result<Self, ClockFault>

Parameters

NameTypeDescription
valueu64

Returns

Result<Self, ClockFault>

source

classLocalCyclessource

vihaco_stdlib::clock::LocalCycles

Bases: Debug, Clone, Copy, StructuralPartialEq, PartialEq, Eq, PartialOrd, Ord

Rust struct. Work measured in the local clock domain of a component.

pub struct LocalCycles

Fields

NameTypeDescription
0u64
source

methodchecked_addsource

vihaco_stdlib::clock::LocalCycles::checked_add

pub fn checked_add(self, other: Self) -> Result<Self, ClockFault>

Parameters

NameTypeDescription
otherSelf

Returns

Result<Self, ClockFault>

source

methodchecked_mulsource

vihaco_stdlib::clock::LocalCycles::checked_mul

Signature
pub fn checked_mul(self, ratio: GlobalTicksPerLocalCycle) -> Result<GlobalDuration, ClockFault>

Parameters

NameTypeDescription
ratioGlobalTicksPerLocalCycle

Returns

Result<GlobalDuration, ClockFault>

source

classSchedulesource

vihaco_stdlib::clock::Schedule

Bases: Debug, StructuralPartialEq, PartialEq, Eq

Rust struct. Owned scheduling work returned by a clocked component.

pub struct Schedule<E>

Fields

NameTypeDescription
atGlobalTick
eventE
source

classClockFaultsource

vihaco_stdlib::clock::ClockFault

Bases: Debug, StructuralPartialEq, PartialEq, Eq, Display, Error

Rust enum. Errors produced while validating or advancing a modeled clock.

pub enum ClockFault

Variants

NameTypeDescription
ZeroTickRatio—
LocalCycleOverflow—
DurationOverflow—
GlobalTickOverflow—
SequenceOverflow—
SchedulingInPast—
source

classClockedComponentsource

vihaco_stdlib::clock::ClockedComponent

Rust trait. Generic boundary for a component that participates in a global event loop.

pub trait ClockedComponent: Sized

Associated items

NameTypeDescription
Eventtype Eventassociated type
Completiontype Completionassociated type
Faulttype Faultassociated type
source

methodnext_boundary_atsource

vihaco_stdlib::clock::ClockedComponent::next_boundary_at

Signature
fn next_boundary_at(&self, global_tick: GlobalTick, ticks_per_local_cycle: GlobalTicksPerLocalCycle) -> Result<GlobalTick, <Self as >::Fault>

Parameters

NameTypeDescription
global_tickGlobalTick
ticks_per_local_cycleGlobalTicksPerLocalCycle

Returns

Result<GlobalTick, <Self as >::Fault>

source

methodresumesource

vihaco_stdlib::clock::ClockedComponent::resume

Signature
fn resume(&mut self, completion: <Self as >::Completion, global_tick: GlobalTick, ticks_per_local_cycle: GlobalTicksPerLocalCycle) -> Result<Option<Schedule<<Self as >::Event>>, <Self as >::Fault>

Parameters

NameTypeDescription
completion&lt;Self as &gt;::Completion
global_tickGlobalTick
ticks_per_local_cycleGlobalTicksPerLocalCycle

Returns

Result<Option<Schedule<<Self as >::Event>>, <Self as >::Fault>

source

methodstep_atsource

vihaco_stdlib::clock::ClockedComponent::step_at

Signature
fn step_at(&mut self, global_tick: GlobalTick, ticks_per_local_cycle: GlobalTicksPerLocalCycle) -> Result<Option<Schedule<<Self as >::Event>>, <Self as >::Fault>

Parameters

NameTypeDescription
global_tickGlobalTick
ticks_per_local_cycleGlobalTicksPerLocalCycle

Returns

Result<Option<Schedule<<Self as >::Event>>, <Self as >::Fault>

source

classTimedInstructionsource

vihaco_stdlib::clock::TimedInstruction

Rust trait. Runtime instructions provide the local duration of their operation.

pub trait TimedInstruction
source

methodlocal_cyclessource

vihaco_stdlib::clock::TimedInstruction::local_cycles

fn local_cycles(&self) -> LocalCycles

Returns

LocalCycles

source