diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-27 18:17:34 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-27 18:17:34 +0100 |
commit | 40afd6fa42ad937148c6812b8df8efff6c78e4b5 (patch) | |
tree | 09b5200598d9a9d93757745461fe34fbe28e1a81 /shared/src/packets.rs | |
parent | 9f16507564354422b64e437e547d8403b22b70c7 (diff) | |
download | weareserver-40afd6fa42ad937148c6812b8df8efff6c78e4b5.tar weareserver-40afd6fa42ad937148c6812b8df8efff6c78e4b5.tar.bz2 weareserver-40afd6fa42ad937148c6812b8df8efff6c78e4b5.tar.zst |
spatial tree, graphics and some unit tests
Diffstat (limited to 'shared/src/packets.rs')
-rw-r--r-- | shared/src/packets.rs | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/shared/src/packets.rs b/shared/src/packets.rs index c03f5e5..c1e9fc0 100644 --- a/shared/src/packets.rs +++ b/shared/src/packets.rs @@ -60,12 +60,12 @@ impl<T> Resource<T> { #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct Object(pub u128); -#[derive(Clone)] +#[derive(Clone, PartialEq)] pub struct Data(pub Vec<u8>); -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub struct Message(pub String); -#[derive(Debug, Clone)] +#[derive(Debug, Clone, PartialEq)] pub enum Packet { Connect(u128), Disconnect, @@ -174,6 +174,7 @@ impl ReadWrite for Packet { let packet_len = u32::read(r)?; Ok(match u8::read(r)? { 0x00 => Packet::Connect(read_u128(r)?), + 0xff => Packet::Disconnect, 0x01 => Packet::RequestResource(Resource::read(r)?), 0x02 => Packet::RespondResource(Resource::read(r)?, Data::read(r)?), 0x03 => Packet::Add(Object::read(r)?, Resource::read(r)?), @@ -249,3 +250,25 @@ impl Display for Object { impl Object { pub const ROOT: Object = Object(0); } + +#[test] +#[cfg(test)] +fn test_ser() { + use std::io::Cursor; + fn a(packet: Packet) { + let mut buf = Vec::new(); + packet.write(&mut buf).unwrap(); + let mut buf = Cursor::new(buf); + let p = Packet::read(&mut buf).unwrap(); + assert_eq!(packet, p); + assert_eq!(buf.get_ref().len(), buf.position() as usize) + } + a(Packet::Add(Object(5), Resource([5; 32], PhantomData))); + a(Packet::Disconnect); + a(Packet::Disconnect); + a(Packet::Chat( + Object(132), + Message("Hello world".to_string()), + )); + a(Packet::Parent(Object(4), Object(5))) +} |