diff options
author | metamuffin <metamuffin@disroot.org> | 2025-01-13 20:42:38 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-01-13 20:42:38 +0100 |
commit | 9574d4c489fa34c143d80b23fea7e6c2f43338ae (patch) | |
tree | 52de78630299dabf1a1da5cda07d58a2fd685bcb /shared | |
parent | 3f97e424b36ee403291c20e82b0cc65f6dadd7a6 (diff) | |
download | weareserver-9574d4c489fa34c143d80b23fea7e6c2f43338ae.tar weareserver-9574d4c489fa34c143d80b23fea7e6c2f43338ae.tar.bz2 weareserver-9574d4c489fa34c143d80b23fea7e6c2f43338ae.tar.zst |
send resource hash within res response packet
Diffstat (limited to 'shared')
-rw-r--r-- | shared/src/packets.rs | 7 | ||||
-rw-r--r-- | shared/src/store.rs | 4 |
2 files changed, 6 insertions, 5 deletions
diff --git a/shared/src/packets.rs b/shared/src/packets.rs index 093247d..de69ffd 100644 --- a/shared/src/packets.rs +++ b/shared/src/packets.rs @@ -53,7 +53,7 @@ pub enum Packet { Connect(u128), Disconnect, RequestResource(Resource), - RespondResource(Data), + RespondResource(Resource, Data), Add(Object, Resource<Prefab>), Remove(Object), Position(Object, Vec3A, Vec3A), @@ -83,8 +83,9 @@ impl Packet { w.write_all(&[0x01])?; w.write_all(&resource.0)?; } - Packet::RespondResource(data) => { + Packet::RespondResource(resource, data) => { w.write_all(&[0x02])?; + resource.write(w)?; data.write(w)?; } Packet::Add(object, resource) => { @@ -142,7 +143,7 @@ impl ReadWrite for Packet { Ok(match u8::read(r)? { 0x00 => Packet::Connect(read_u128(r)?), 0x01 => Packet::RequestResource(Resource::read(r)?), - 0x02 => Packet::RespondResource(Data::read(r)?), + 0x02 => Packet::RespondResource(Resource::read(r)?, Data::read(r)?), 0x03 => Packet::Add(Object::read(r)?, Resource::read(r)?), 0x04 => Packet::Remove(Object::read(r)?), 0x05 => Packet::Position( diff --git a/shared/src/store.rs b/shared/src/store.rs index 86ae053..548a402 100644 --- a/shared/src/store.rs +++ b/shared/src/store.rs @@ -119,12 +119,12 @@ impl ResourceStore { } Ok(key) } - pub fn iter(&self, mut cb: impl FnMut(&[u8])) -> Result<()> { + pub fn iter(&self, mut cb: impl FnMut(Resource, &[u8])) -> Result<()> { match self { ResourceStore::Redb(_database) => todo!(), ResourceStore::Filesystem(_root) => todo!(), ResourceStore::Memory(mutex) => { - mutex.lock().unwrap().values().for_each(|v| cb(v)); + mutex.lock().unwrap().iter().for_each(|(k, v)| cb(*k, v)); Ok(()) } } |