use crate::protocol;
use crate::unix_time;
#[cfg(feature = "ntpv5")]
use ntp_proto::protocol::bloom::BloomFilter;
#[cfg(feature = "ntpv5")]
use ntp_proto::protocol::ntpv5::Timescale;
#[derive(Clone, Debug)]
pub struct ServerSystemState {
pub leap_indicator: protocol::LeapIndicator,
pub stratum: protocol::Stratum,
pub precision: i8,
pub root_delay: protocol::ShortFormat,
pub root_dispersion: protocol::ShortFormat,
pub reference_id: protocol::ReferenceIdentifier,
pub reference_timestamp: protocol::TimestampFormat,
#[cfg(feature = "ntpv5")]
pub timescale: Timescale,
#[cfg(feature = "ntpv5")]
pub era: u8,
#[cfg(feature = "ntpv5")]
pub bloom_filter: BloomFilter,
#[cfg(feature = "ntpv5")]
pub v5_reference_id: [u8; 15],
}
impl Default for ServerSystemState {
fn default() -> Self {
ServerSystemState {
leap_indicator: protocol::LeapIndicator::NoWarning,
stratum: protocol::Stratum::PRIMARY,
precision: -20,
root_delay: protocol::ShortFormat::default(),
root_dispersion: protocol::ShortFormat::default(),
reference_id: protocol::ReferenceIdentifier::PrimarySource(
protocol::PrimarySource::Locl,
),
reference_timestamp: unix_time::Instant::now().into(),
#[cfg(feature = "ntpv5")]
timescale: Timescale::Utc,
#[cfg(feature = "ntpv5")]
era: 0,
#[cfg(feature = "ntpv5")]
bloom_filter: BloomFilter::new(),
#[cfg(feature = "ntpv5")]
v5_reference_id: [0u8; 15],
}
}
}