scatter_net/legacy/packet/methods/from_bytes.rs
1use anyhow::Result;
2use ps_deflate::decompress;
3
4use crate::Packet;
5
6impl Packet {
7 pub fn from_bytes<B>(bytes: B) -> Result<Self>
8 where
9 B: AsRef<[u8]>,
10 {
11 let bytes = bytes.as_ref();
12
13 let size = bytes.get(4..8).unwrap_or(&[]).try_into()?;
14 let size = usize::try_from(u32::from_be_bytes(size))?;
15
16 let bytes = decompress(&bytes[8..], size)?;
17
18 let packet = bitcode::deserialize(&bytes)?;
19
20 Ok(packet)
21 }
22}