aboutsummaryrefslogtreecommitdiff
path: root/games/rstnode/rst-core/src
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2021-02-11 20:29:42 +0100
committerKatharina Fey <kookie@spacekookie.de>2021-02-11 20:29:42 +0100
commit5dab336049dbc6817e9ff212998690f59f6bbfa8 (patch)
tree2a87939d5ebde379524c2b8f3ec27b920e82c97b /games/rstnode/rst-core/src
parent6e8e37406d16a09e4cfbe77bfba3a8d64279e473 (diff)
rstnode: add network packet envelope to wire types
Diffstat (limited to 'games/rstnode/rst-core/src')
-rw-r--r--games/rstnode/rst-core/src/wire/env.rs20
-rw-r--r--games/rstnode/rst-core/src/wire/mod.rs13
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