pub trait Clock: Send + Sync {
// Required methods
fn now(&self) -> Result<NtpTimestamp, ClockError>;
fn step(&self, offset: NtpDuration) -> Result<(), ClockError>;
fn adjust_frequency(&self, ppm: f64) -> Result<(), ClockError>;
fn frequency_offset(&self) -> Result<f64, ClockError>;
fn resolution(&self) -> NtpDuration;
fn max_frequency_adjustment(&self) -> f64;
fn is_adjustable(&self) -> bool;
}Expand description
Abstraction over system clock access.
Implementations:
UnixClock(real system clock via clock_gettime/clock_adjtime)PhcClock(PTP hardware clock via /dev/ptpN ioctl) – Phase 7MockClock(deterministic testing)
Required Methods§
Sourcefn now(&self) -> Result<NtpTimestamp, ClockError>
fn now(&self) -> Result<NtpTimestamp, ClockError>
Read current time from this clock.
Sourcefn step(&self, offset: NtpDuration) -> Result<(), ClockError>
fn step(&self, offset: NtpDuration) -> Result<(), ClockError>
Apply a step adjustment (instant offset). Requires privilege.
Sourcefn adjust_frequency(&self, ppm: f64) -> Result<(), ClockError>
fn adjust_frequency(&self, ppm: f64) -> Result<(), ClockError>
Apply a slew adjustment (frequency change in PPM). Requires privilege.
Sourcefn frequency_offset(&self) -> Result<f64, ClockError>
fn frequency_offset(&self) -> Result<f64, ClockError>
Read current frequency offset in PPM.
Sourcefn resolution(&self) -> NtpDuration
fn resolution(&self) -> NtpDuration
Get clock resolution as a duration.
Sourcefn max_frequency_adjustment(&self) -> f64
fn max_frequency_adjustment(&self) -> f64
Maximum allowed frequency adjustment in PPM.
Sourcefn is_adjustable(&self) -> bool
fn is_adjustable(&self) -> bool
Whether this clock supports discipline (has CAP_SYS_TIME or equivalent).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".