28 lines
829 B
Rust
28 lines
829 B
Rust
use std::convert::TryInto;
|
|
pub struct PacketHeader {
|
|
pub length: u32,
|
|
pub type_packet: u8,
|
|
}
|
|
|
|
impl PacketHeader {
|
|
pub fn deserialize(x: &[u8; 5]) -> PacketHeader {
|
|
let mut u32_byte_array: [u8; 4] = [0; 4];
|
|
u32_byte_array.copy_from_slice(&x[0..4]);
|
|
PacketHeader {
|
|
length: u32::from_be_bytes(u32_byte_array),
|
|
type_packet: x[4],
|
|
}
|
|
}
|
|
pub fn serialize(&self) -> [u8; 5] {
|
|
let length = self.length.to_be_bytes();
|
|
let type_packet = self.type_packet;
|
|
let mut return_bytes = length.to_vec();
|
|
return_bytes.extend(&[type_packet][..]);
|
|
let boxed_return_bytes: Box<[u8; 5]> = return_bytes
|
|
.into_boxed_slice()
|
|
.try_into()
|
|
.expect("Unable to serialize.");
|
|
*boxed_return_bytes
|
|
}
|
|
}
|