use std::time::Duration;
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LinkMetrics {
pub max_data_rate_rx_bps: u64,
pub max_data_rate_tx_bps: u64,
pub current_data_rate_rx_bps: u64,
pub current_data_rate_tx_bps: u64,
pub latency: Duration,
pub resources: Option<u8>,
pub rlq_rx: Option<u8>,
pub rlq_tx: Option<u8>,
pub mtu: Option<u16>,
}
impl LinkMetrics {
pub fn supported_by(&self, initial: &Self) -> bool {
(self.resources.is_none() || initial.resources.is_some())
&& (self.rlq_rx.is_none() || initial.rlq_rx.is_some())
&& (self.rlq_tx.is_none() || initial.rlq_tx.is_some())
&& (self.mtu.is_none() || initial.mtu.is_some())
}
}
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LinkCharacteristics {
pub current_data_rate_rx_bps: Option<u64>,
pub current_data_rate_tx_bps: Option<u64>,
pub latency: Option<Duration>,
}
impl LinkCharacteristics {
pub fn is_empty(&self) -> bool {
self.current_data_rate_rx_bps.is_none()
&& self.current_data_rate_tx_bps.is_none()
&& self.latency.is_none()
}
}