change any again and fix not building

This commit is contained in:
Maple Nebel 2026-04-28 13:37:00 +02:00
commit 368bc2e45a
2 changed files with 50 additions and 30 deletions

48
Cargo.lock generated
View file

@ -1038,10 +1038,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
[[package]]
name = "futures-channel"
version = "0.3.31"
name = "futures"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10"
checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d"
dependencies = [
"futures-channel",
"futures-core",
"futures-executor",
"futures-io",
"futures-sink",
"futures-task",
"futures-util",
]
[[package]]
name = "futures-channel"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d"
dependencies = [
"futures-core",
"futures-sink",
@ -1049,15 +1064,15 @@ dependencies = [
[[package]]
name = "futures-core"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e"
checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d"
[[package]]
name = "futures-executor"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f"
checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d"
dependencies = [
"futures-core",
"futures-task",
@ -1083,9 +1098,9 @@ checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718"
[[package]]
name = "futures-macro"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650"
checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b"
dependencies = [
"proc-macro2",
"quote",
@ -1094,22 +1109,23 @@ dependencies = [
[[package]]
name = "futures-sink"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7"
checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893"
[[package]]
name = "futures-task"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988"
checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393"
[[package]]
name = "futures-util"
version = "0.3.31"
version = "0.3.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81"
checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6"
dependencies = [
"futures-channel",
"futures-core",
"futures-io",
"futures-macro",
@ -1117,7 +1133,6 @@ dependencies = [
"futures-task",
"memchr",
"pin-project-lite",
"pin-utils",
"slab",
]
@ -2206,6 +2221,7 @@ dependencies = [
"cfg-if",
"chrono",
"dotenv",
"futures",
"hex",
"hmac",
"json",

View file

@ -12,32 +12,29 @@ pub struct Any {
impl RmcSerialize for Any {
fn serialize(&self, writer: &mut impl Write) -> Result<()> {
self.name.serialize(writer)?;
let u32_len = self.data.len() as u32;
let u32_len = self.data.len() as u32 - 1;
(u32_len + 4).serialize(writer)?;
self.data.serialize(writer)?;
u32_len.serialize(writer)?;
writer.write_all(&self.data)?;
Ok(())
}
fn deserialize(reader: &mut impl Read) -> Result<Self> {
let name = String::deserialize(reader)?;
let data = Vec::deserialize(reader)?;
let mut cursor = Cursor::new(&data);
// also length ?
let size = u32::deserialize(reader)? as usize + 1;
let mut buf = vec![0; size];
reader.read_exact(&mut buf[..])?;
let mut cursor = Cursor::new(&buf);
let len2: u32 = cursor.read_struct(IS_BIG_ENDIAN)?;
if len2 as usize != data.len().overflowing_sub(4).0 {
warn!(
"mismatched sizes on any: {} vs {}",
data.len().overflowing_sub(4).0,
len2
);
if len2 as usize + 1 != size {
warn!("mismatched sizes on any: {} vs {}", size, len2 + 1);
}
Ok(Any {
name,
data: (&data[4..]).to_owned(),
data: (&buf[4..]).to_owned(),
})
}
}
@ -59,7 +56,10 @@ impl Any {
#[cfg(test)]
mod test {
use std::io::Cursor;
use crate::rmc::structures::{
RmcSerialize,
any::Any,
matchmake::{Gathering, MatchmakeSession},
};
@ -89,9 +89,13 @@ mod test {
session_key: [].into(),
};
let any = Any::new(&sess).unwrap();
let any = Any::new(&sess).unwrap().to_data().unwrap();
let sess2: MatchmakeSession = any.try_get().unwrap().unwrap();
let sess2: MatchmakeSession = Any::deserialize(&mut Cursor::new(any))
.unwrap()
.try_get()
.unwrap()
.unwrap();
assert_eq!(sess, sess2);
}