1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
/*
* Created on Sun Aug 01 2021
*
* Copyright (c) storycraft. Licensed under the MIT Licence.
*/
use std::io::Cursor;
use byteorder::{LittleEndian, ReadBytesExt};
use crate::command::{Command, HEADER_SIZE, HEAD_SIZE, Header};
use super::StreamError;
/// Decode [Header] and data_size into empty [Command].
pub fn decode_head(buf: &[u8]) -> Result<Command, StreamError> {
let header = bincode::deserialize::<Header>(&buf[..HEADER_SIZE])?;
let data_size = Cursor::new(&buf[HEADER_SIZE..HEAD_SIZE]).read_u32::<LittleEndian>()?;
Ok(Command {
header,
data: vec![0_u8; data_size as usize]
})
}