From f195ae4a1059270f14163b62e7860c3630ee5895 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Sun, 26 Jan 2025 19:32:46 +0100 Subject: reparenting checks and conn owned objects --- shared/src/helper.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'shared/src/helper.rs') diff --git a/shared/src/helper.rs b/shared/src/helper.rs index 14fb2bd..3ae7c37 100644 --- a/shared/src/helper.rs +++ b/shared/src/helper.rs @@ -14,7 +14,7 @@ You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ -use crate::packets::{Data, Object, Resource}; +use crate::packets::{Data, Message, Object, Resource}; use anyhow::Result; use glam::{Affine3A, Vec2, Vec3, Vec3A}; use std::{ @@ -304,6 +304,21 @@ impl ReadWrite for Data { Ok(Self(buf)) } } +impl ReadWrite for Message { + fn write(&self, w: &mut dyn Write) -> Result<()> { + w.write_all(&(self.0.len() as u32).to_be_bytes())?; + w.write_all(&self.0.as_bytes())?; + Ok(()) + } + fn read(r: &mut dyn Read) -> Result { + let mut size = [0; { size_of::() }]; + r.read_exact(&mut size)?; + let size = u32::from_be_bytes(size); + let mut buf = vec![0; size as usize]; + r.read_exact(&mut buf)?; + Ok(Self(String::from_utf8_lossy_owned(buf))) + } +} impl ReadWrite for Resource { fn write(&self, w: &mut dyn Write) -> Result<()> { w.write_all(&self.0)?; -- cgit v1.2.3-70-g09d2