use super::backend::{ClockBackend, SystemClockError};
use jiff::Timestamp;
#[derive(Debug, Clone, Copy)]
pub struct MemoryBackend {
anchor: Timestamp,
anchored_at: Timestamp,
}
impl MemoryBackend {
pub fn new(start: Timestamp) -> Self {
Self {
anchor: start,
anchored_at: Timestamp::now(),
}
}
}
impl ClockBackend for MemoryBackend {
fn now(&self) -> Timestamp {
self.anchor + (Timestamp::now() - self.anchored_at)
}
fn set(&mut self, ts: Timestamp) -> Result<(), SystemClockError> {
self.anchor = ts;
self.anchored_at = Timestamp::now();
Ok(())
}
}