summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-01-13 20:42:38 +0100
committermetamuffin <metamuffin@disroot.org>2025-01-13 20:42:38 +0100
commit9574d4c489fa34c143d80b23fea7e6c2f43338ae (patch)
tree52de78630299dabf1a1da5cda07d58a2fd685bcb /shared
parent3f97e424b36ee403291c20e82b0cc65f6dadd7a6 (diff)
downloadweareserver-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.rs7
-rw-r--r--shared/src/store.rs4
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(())
}
}