use slip::slip;
use anyhow::{Result, Context, anyhow};
pub fn main() {
deserialize(vec![3, 1, 2]).expect(slip!("failed to parse packet"));
}
pub fn deserialize(data: Vec<u8>) -> Result<Message> {
let packet_id = data.get(0).context(slip!("received empty packet"))?;
let res = match packet_id {
0 => deserialize_auth(&data[1..]).context(slip!("could not parse auth packet")),
1 => deserialize_request(&data[1..]).context(slip!("could not parse request packet")),
_ => Err(anyhow!(slip!("received invalid message type")))
};
res.with_context(|| [slip!("packet data: "), &format!("{:?}", data)].concat())
}
pub enum Message {
Authentication { token: u64 },
Resource { id: u64 },
}
fn deserialize_auth(_data: &[u8]) -> Option<Message> {
None }
fn deserialize_request(_data: &[u8]) -> Option<Message> {
None }