use crate::error::ZerustError;
use byteorder::{LittleEndian, ReadBytesExt, WriteBytesExt};
use std::io::Cursor;
pub struct DataPack;
impl DataPack {
pub fn unpack_header(header: &[u8]) -> Result<(u32, u32), ZerustError> {
let mut cursor = Cursor::new(header);
let msg_id = cursor.read_u32::<LittleEndian>()?;
let data_len = cursor.read_u32::<LittleEndian>()?;
Ok((msg_id, data_len))
}
pub fn pack(msg_id: u32, data: &[u8]) -> Vec<u8> {
let mut buf = Vec::with_capacity(8 + data.len());
buf.write_u32::<LittleEndian>(msg_id).unwrap();
buf.write_u32::<LittleEndian>(data.len() as u32).unwrap();
buf.extend_from_slice(data);
buf
}
}