#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct Stats {
pub inject_emits: u32,
pub tx_drops: u16,
pub tx_merges: u16,
pub tx_maxdepth: u8,
pub tx_wedges: u8,
pub wakeups: u16,
pub reset_count: u16,
pub config_count: u16,
}
impl Stats {
pub(crate) fn from_payload(p: &[u8]) -> Option<Self> {
if p.len() < 17 {
return None;
}
Some(Stats {
inject_emits: u32::from_le_bytes([p[1], p[2], p[3], p[4]]),
tx_drops: u16::from_le_bytes([p[5], p[6]]),
tx_merges: u16::from_le_bytes([p[7], p[8]]),
tx_maxdepth: p[9],
tx_wedges: p[10],
wakeups: u16::from_le_bytes([p[11], p[12]]),
reset_count: u16::from_le_bytes([p[13], p[14]]),
config_count: u16::from_le_bytes([p[15], p[16]]),
})
}
}