use crate::{DefaultLayout, Layout};
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ParsedId {
pub ts: u64,
pub pid: u16,
pub seq: u32,
}
#[inline]
pub fn parse(id: u64) -> ParsedId {
parse_with::<DefaultLayout>(id)
}
pub fn parse_with<L: Layout>(id: u64) -> ParsedId {
ParsedId {
ts: id >> L::TS_SHIFT,
pid: ((id >> L::SEQ_BITS) & L::PID_MASK) as u16,
seq: (id & L::SEQ_MASK) as u32,
}
}