FakeSFTP/src/packet/header.rs

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
}
}