diff options
Diffstat (limited to 'games/rstnode/rst-core/src/wire/env.rs')
-rw-r--r-- | games/rstnode/rst-core/src/wire/env.rs | 20 |
1 files changed, 20 insertions, 0 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() + } +} |