diff options
author | Katharina Fey <kookie@spacekookie.de> | 2021-02-11 20:29:42 +0100 |
---|---|---|
committer | Katharina Fey <kookie@spacekookie.de> | 2021-02-11 20:29:42 +0100 |
commit | 5dab336049dbc6817e9ff212998690f59f6bbfa8 (patch) | |
tree | 2a87939d5ebde379524c2b8f3ec27b920e82c97b /games/rstnode/rst-core/src/wire | |
parent | 6e8e37406d16a09e4cfbe77bfba3a8d64279e473 (diff) |
rstnode: add network packet envelope to wire types
Diffstat (limited to 'games/rstnode/rst-core/src/wire')
-rw-r--r-- | games/rstnode/rst-core/src/wire/env.rs | 20 | ||||
-rw-r--r-- | games/rstnode/rst-core/src/wire/mod.rs | 13 |
2 files changed, 26 insertions, 7 deletions
diff --git a/games/rstnode/rst-core/src/wire/env.rs b/games/rstnode/rst-core/src/wire/env.rs new file mode 100644 index 000000000000..fd5ed690453e --- /dev/null +++ b/games/rstnode/rst-core/src/wire/env.rs @@ -0,0 +1,20 @@ +use serde::{de::DeserializeOwned, Deserialize, Serialize}; + +#[repr(C)] +#[derive(Serialize, Deserialize)] +pub struct Envelope { + size: u64, + data: Vec<u8>, +} + +impl Envelope { + pub fn pack<T: Serialize>(d: T) -> Self { + let data = bincode::serialize(&d).unwrap(); + let size = data.len() as u64; + Self { size, data } + } + + pub fn unpack<T: DeserializeOwned>(self) -> T { + bincode::deserialize(&self.data).unwrap() + } +} diff --git a/games/rstnode/rst-core/src/wire/mod.rs b/games/rstnode/rst-core/src/wire/mod.rs index cd311383a83a..493f0bcb6885 100644 --- a/games/rstnode/rst-core/src/wire/mod.rs +++ b/games/rstnode/rst-core/src/wire/mod.rs @@ -3,20 +3,19 @@ mod action; pub use action::*; -mod req; -pub use req::*; +mod env; +pub use env::*; mod resp; pub use resp::*; +mod req; +pub use req::*; + mod update; pub use update::*; -use crate::{ - data::{Color, Player}, - map::Map, - Id, -}; +use crate::{data::Color, Id}; use serde::{Deserialize, Serialize}; /// An alias for a User's ID |