use std::cmp::Ordering;
use std::time::Duration;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct MockInstant {
timeline_id: u64,
nanos_since_origin: u128,
}
impl MockInstant {
pub(crate) const fn from_nanos_since_origin(timeline_id: u64, nanos_since_origin: u128) -> Self {
Self {
timeline_id,
nanos_since_origin,
}
}
#[inline]
pub const fn timeline_id(&self) -> u64 {
self.timeline_id
}
#[inline]
pub const fn nanos_since_origin(&self) -> u128 {
self.nanos_since_origin
}
#[inline]
pub fn saturating_add(self, duration: Duration) -> Self {
Self {
timeline_id: self.timeline_id,
nanos_since_origin: self.nanos_since_origin.saturating_add(duration.as_nanos()),
}
}
}
impl PartialOrd for MockInstant {
fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
if self.timeline_id == other.timeline_id {
Some(self.nanos_since_origin.cmp(&other.nanos_since_origin))
} else {
None
}
}
}