Skip to main content

Clock

Trait Clock 

Source
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 7
  • MockClock (deterministic testing)

Required Methods§

Source

fn now(&self) -> Result<NtpTimestamp, ClockError>

Read current time from this clock.

Source

fn step(&self, offset: NtpDuration) -> Result<(), ClockError>

Apply a step adjustment (instant offset). Requires privilege.

Source

fn adjust_frequency(&self, ppm: f64) -> Result<(), ClockError>

Apply a slew adjustment (frequency change in PPM). Requires privilege.

Source

fn frequency_offset(&self) -> Result<f64, ClockError>

Read current frequency offset in PPM.

Source

fn resolution(&self) -> NtpDuration

Get clock resolution as a duration.

Source

fn max_frequency_adjustment(&self) -> f64

Maximum allowed frequency adjustment in PPM.

Source

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".

Implementors§