#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub enum SyncQuality {
Ptp,
Ntp,
#[default]
Fallback,
}
impl SyncQuality {
#[must_use]
pub const fn as_str(&self) -> &'static str {
match self {
Self::Ptp => "ptp",
Self::Ntp => "ntp",
Self::Fallback => "fallback",
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum ClockSource {
Tsc,
Cntvct,
Instant,
LibcMono,
Mock,
External,
}
impl ClockSource {
#[must_use]
pub const fn as_str(&self) -> &'static str {
match self {
Self::Tsc => "tsc",
Self::Cntvct => "cntvct",
Self::Instant => "instant",
Self::LibcMono => "libc-mono",
Self::Mock => "mock",
Self::External => "external",
}
}
}
#[cfg(test)]
mod tests {
use super::{ClockSource, SyncQuality};
#[test]
fn names_are_stable() {
assert_eq!(SyncQuality::Ptp.as_str(), "ptp");
assert_eq!(SyncQuality::Ntp.as_str(), "ntp");
assert_eq!(SyncQuality::Fallback.as_str(), "fallback");
assert_eq!(ClockSource::Tsc.as_str(), "tsc");
assert_eq!(ClockSource::Cntvct.as_str(), "cntvct");
assert_eq!(ClockSource::Instant.as_str(), "instant");
assert_eq!(ClockSource::LibcMono.as_str(), "libc-mono");
assert_eq!(ClockSource::Mock.as_str(), "mock");
assert_eq!(ClockSource::External.as_str(), "external");
assert_eq!(SyncQuality::default(), SyncQuality::Fallback);
}
}