#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct RevisionTick {
revision: u64,
logical_tick: u64,
}
impl RevisionTick {
pub fn new(revision: u64, logical_tick: u64) -> Self {
Self {
revision,
logical_tick,
}
}
pub fn revision(self) -> u64 {
self.revision
}
pub fn logical_tick(self) -> u64 {
self.logical_tick
}
pub(crate) fn next_after(self) -> Self {
Self {
revision: self.revision + 1,
logical_tick: self.logical_tick + 1,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct WallTimeMs(u64);
impl WallTimeMs {
pub fn new(unix_millis: u64) -> Self {
Self(unix_millis)
}
pub fn unix_millis(self) -> u64 {
self.0
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub struct Stamp {
revision_tick: RevisionTick,
wall_time_ms: Option<WallTimeMs>,
}
impl Stamp {
pub fn new(revision_tick: RevisionTick, wall_time_ms: Option<WallTimeMs>) -> Self {
Self {
revision_tick,
wall_time_ms,
}
}
pub fn revision_tick(self) -> RevisionTick {
self.revision_tick
}
pub fn wall_time_ms(self) -> Option<WallTimeMs> {
self.wall_time_ms
}
}