use canadensis_header::RawHeader;
use zerocopy::FromBytes;
const HEADER_BYTES: usize = canadensis_header::SIZE;
pub struct HeaderCollector {
bytes: [u8; HEADER_BYTES],
len: u8,
}
impl HeaderCollector {
pub fn new() -> Self {
HeaderCollector {
bytes: [0; HEADER_BYTES],
len: 0,
}
}
pub fn is_done(&self) -> bool {
usize::from(self.len) == HEADER_BYTES
}
pub fn push(&mut self, byte: u8) {
self.bytes[usize::from(self.len)] = byte;
self.len += 1;
}
pub fn as_header(&self) -> RawHeader {
RawHeader::read_from_bytes(&self.bytes[..]).expect("Incorrect byte length or alignment")
}
}