]> git.lizzy.rs Git - dragonblocks-rs.git/blob - src/pkt.rs
Initial commit
[dragonblocks-rs.git] / src / pkt.rs
1 use connect::{ConnectDatagram, ConnectionWriter, SinkExt};
2 use serde::{Deserialize, Serialize};
3 use tokio::sync::Mutex as AsyncMutex;
4
5 pub fn get<'a, T: Deserialize<'a>>(pkt: &'a ConnectDatagram) -> Option<T> {
6     serde_cbor::from_slice(pkt.data()?).ok()
7 }
8
9 pub async fn put<T: Serialize>(conn: &AsyncMutex<ConnectionWriter>, id: u16, pkt: &T) {
10     conn.lock()
11         .await
12         .send(ConnectDatagram::new(id, serde_cbor::to_vec(pkt).unwrap()).unwrap())
13         .await
14         .unwrap();
15 }