use std::fmt;
#[derive(Debug)]
pub enum Origin {
Ip(String),
EnterpriseId(String),
Software(String),
Version(String),
}
impl fmt::Display for Origin {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use self::Origin::*;
let val = match self {
Ip(s) => format!(r#" ip="{}""#, s),
EnterpriseId(s) => format!(r#" enterpriseId="{}""#, s),
Software(s) => format!(r#" software="{}""#, s),
Version(s) => format!(r#" swVersion="{}""#, s),
};
write!(f, "{}", val)
}
}
#[derive(Debug, Copy, Clone)]
pub enum TimeQuality {
TzKnown(bool),
IsSynced(bool),
SyncAccuracy(u32),
}
impl fmt::Display for TimeQuality {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
use self::TimeQuality::*;
let val = match self {
TzKnown(s) => if *s {
r#" tzKnown="1""#.to_string()
} else {
r#" tz_known="0""#.to_string()
},
IsSynced(s) => if *s {
r#" isSynced="1""#.to_string()
} else {
r#" isSynced="0""#.to_string()
},
SyncAccuracy(s) => format!(r#" syncAccuracy="{}""#, s),
};
write!(f, "{}", val)
}
}