diff --git a/macros/src/lib.rs b/macros/src/lib.rs index 67486ef..d088561 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -126,7 +126,6 @@ fn gen_serialize_data_struct( let ident = f.ident.as_ref().unwrap(); - let ty = &f.ty; size_content.append_all(quote! { + rnex_core::rmc::structures::RmcSerialize::serialize_write_size(&self.#ident)? @@ -259,7 +258,7 @@ pub fn rmc_serialize(input: TokenStream) -> TokenStream { let mut inner_match_de = quote! {}; let mut inner_match_se = quote! {}; - let mut inner_match_len = quote!{}; + //let mut inner_match_len = quote!{}; for variant in e.variants { let Some((_, val)) = variant.discriminant else { diff --git a/rnex-core/src/grpc/account.rs b/rnex-core/src/grpc/account.rs index 5314006..a70149f 100644 --- a/rnex-core/src/grpc/account.rs +++ b/rnex-core/src/grpc/account.rs @@ -1,7 +1,6 @@ use std::{env, result}; use std::array::TryFromSliceError; use std::ops::Deref; -use std::str::FromStr; use json::{object, JsonValue}; use once_cell::sync::Lazy; use thiserror::Error; @@ -50,7 +49,7 @@ impl Client{ } async fn do_request(&self, request_data: JsonValue) -> Result{ - let mut request = ureq::post(CLIENT_URI.as_str()) + let request = ureq::post(CLIENT_URI.as_str()) .header("X-API-Key", API_KEY.deref()) .content_type("application/json"); let mut response = spawn_blocking(move || request.send(request_data.to_string())).await??; diff --git a/rnex-core/src/kerberos/mod.rs b/rnex-core/src/kerberos/mod.rs index a54764e..b118651 100644 --- a/rnex-core/src/kerberos/mod.rs +++ b/rnex-core/src/kerberos/mod.rs @@ -158,7 +158,6 @@ impl Ticket{ #[cfg(test)] mod test{ - use chrono::{Datelike, Utc}; use crate::kerberos::KerberosDateTime; #[test] diff --git a/rnex-core/src/main.rs b/rnex-core/src/main.rs index 9ff052f..eda5915 100644 --- a/rnex-core/src/main.rs +++ b/rnex-core/src/main.rs @@ -10,18 +10,8 @@ extern crate self as rust_nex; -use crate::nex::account::Account; -use chrono::{Local, SecondsFormat}; use once_cell::sync::Lazy; -use simplelog::{ - ColorChoice, CombinedLogger, Config, LevelFilter, TermLogger, TerminalMode, WriteLogger, -}; -use std::fs::File; -use std::net::{Ipv4Addr}; -use std::sync::Once; -use std::{env, fs}; use std::hint::black_box; -use criterion::{criterion_group, criterion_main, Criterion}; mod prudp; pub mod rmc; @@ -118,7 +108,7 @@ static DUMMY: Lazy = Lazy::new(|| AutoMatchmakeParam{ static DUMMY_SER: Lazy> = Lazy::new(|| serialize_to_vec(DUMMY.deref())); fn serialize_to_vec(r: &impl RmcSerialize) -> Vec{ - let mut vec = r.to_data(); + let vec = r.to_data(); vec.unwrap() } @@ -126,15 +116,6 @@ fn serialize_to_vec(r: &impl RmcSerialize) -> Vec{ fn read_struct(r: &[u8]) -> T{ T::deserialize(&mut Cursor::new(r)).unwrap() } -fn matchmake_with_param(c: &mut Criterion) { - let raw = DUMMY.deref(); - let ser = DUMMY_SER.deref().as_slice(); - c.bench_function("mmparam: ser", |b| b.iter(move || serialize_to_vec(black_box(raw)))); - c.bench_function("mmparam: de", |b| b.iter(move || read_struct::(black_box(ser)))); -} - -criterion_group!(benches, matchmake_with_param); -//criterion_main!(benches); fn main(){ for _ in 0..10000000 { diff --git a/rnex-core/src/nex/auth_handler.rs b/rnex-core/src/nex/auth_handler.rs index e5184d0..9b67fca 100644 --- a/rnex-core/src/nex/auth_handler.rs +++ b/rnex-core/src/nex/auth_handler.rs @@ -171,14 +171,14 @@ mod test { let stuff = hex::decode("200100000a0106000000028000000100010051b3995774000000a6321c7f78847c1c5e9fb825eb26bd91841f1a40d92fc694159666119cb13527f1463ac48ad42a63e6613ede67041554b1770978112e6f1f3e177a2bfc75933216dbe38f70133a1eb28e2ae32a4b5c4b0c3e3efd4c02907992e259b257270b57a9dbe7792f4721b07f8fafb9e32d50f2555c616a015c0000004b007072756470733a2f5049443d323b7369643d313b73747265616d3d31303b747970653d323b616464726573733d322e3234332e39352e3131333b706f72743d31303030313b4349443d3100000000000100002c153ba51f00000033006272616e63683a6f726967696e2f70726f6a6563742f7775702d61676d6a206275696c643a335f385f31355f323030345f3000").unwrap(); let stuff = RMCResponse::new(&mut Cursor::new(stuff)).unwrap(); - let rnex_core::rmc::response::RMCResponseResult::Success { call_id, method_id, data: stuff} = stuff.response_result else { + let rnex_core::rmc::response::RMCResponseResult::Success { .. } = stuff.response_result else { panic!() }; // let stuff = hex::decode("0100010051B399577400000085F1736FCFBE93660275A3FE36FED6C2EFC57222AC99A9219CF54170A415B02DF1463AC48AD42A6307813FDE67041554B177097832ED000F892D9551A09F88E9CB0388DC1BC9527CC7384556A3287B2A349ABBF7E34A5A3EC14C2287CC7F78DA616BC3B03A035347FBD2E9A505C8EF42447CD809015F0000004E007072756470733A2F73747265616D3D31303B747970653D323B616464726573733D3139322E3136382E3137382E3132303B706F72743D31303030313B4349443D313B5049443D323B7369643D310000000000010000CDF53AA51F00000033006272616E63683A6F726967696E2F70726F6A6563742F7775702D61676D6A206275696C643A335F385F31355F323030345F3000").unwrap(); - // let stuff = hex::decode("0100010051b399577400000037d3d4814d2b16dd546c94a75d32637b45f856b5abe73cf26cfaa235c5f2c1cef1463ac48ad42a637d873fde67041554b177097880cfa7e10bb810eaf686bfb0a0cf3d65b1f476ebc046d0855327986f557dca14fbb8594883c186b863f2206f22baa0309dbcc81da2f883cb2cdc12628ec7fced015c0000004b007072756470733a2f5049443d323b7369643d313b73747265616d3d31303b747970653d323b616464726573733d322e3234332e39352e3131333b706f72743d31303030313b4349443d310000000000010000b7f33aa51f00000033006272616e63683a6f726967696e2f70726f6a6563742f7775702d61676d6a206275696c643a335f385f31355f323030345f3000").unwrap(); + let stuff = hex::decode("0100010051b399577400000037d3d4814d2b16dd546c94a75d32637b45f856b5abe73cf26cfaa235c5f2c1cef1463ac48ad42a637d873fde67041554b177097880cfa7e10bb810eaf686bfb0a0cf3d65b1f476ebc046d0855327986f557dca14fbb8594883c186b863f2206f22baa0309dbcc81da2f883cb2cdc12628ec7fced015c0000004b007072756470733a2f5049443d323b7369643d313b73747265616d3d31303b747970653d323b616464726573733d322e3234332e39352e3131333b706f72743d31303030313b4349443d310000000000010000b7f33aa51f00000033006272616e63683a6f726967696e2f70726f6a6563742f7775702d61676d6a206275696c643a335f385f31355f323030345f3000").unwrap(); let data = <(QResult, u32, Vec, ConnectionData, String) as RmcSerialize>::deserialize( &mut Cursor::new(stuff), diff --git a/rnex-core/src/prudp/station_url.rs b/rnex-core/src/prudp/station_url.rs index a193b21..a4665c2 100644 --- a/rnex-core/src/prudp/station_url.rs +++ b/rnex-core/src/prudp/station_url.rs @@ -170,9 +170,8 @@ impl Display for StationUrl{ impl<'a> Into for &'a StationUrl{ fn into(self) -> String { - let mut url = self.to_string(); - - + let url = self.to_string(); + url[0..url.len()-1].into() } } diff --git a/rnex-core/src/rmc/response.rs b/rnex-core/src/rmc/response.rs index a732853..c994f8b 100644 --- a/rnex-core/src/rmc/response.rs +++ b/rnex-core/src/rmc/response.rs @@ -471,7 +471,7 @@ mod test { #[test] fn test() { - let mut data_orig = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 69, 4, 20]; + let data_orig = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 69, 4, 20]; let mut data = data_orig; let mut rc4: Rc4 = diff --git a/rnex-core/src/rmc/structures/any.rs b/rnex-core/src/rmc/structures/any.rs index e76b60a..b60ca8a 100644 --- a/rnex-core/src/rmc/structures/any.rs +++ b/rnex-core/src/rmc/structures/any.rs @@ -21,7 +21,7 @@ impl RmcSerialize for Any{ Ok(()) } - fn deserialize(mut reader: &mut impl Read) -> Result { + fn deserialize(reader: &mut impl Read) -> Result { let name = String::deserialize(reader)?; // also length ? diff --git a/rnex-core/src/rmc/structures/list.rs b/rnex-core/src/rmc/structures/list.rs index 980907d..890be9a 100644 --- a/rnex-core/src/rmc/structures/list.rs +++ b/rnex-core/src/rmc/structures/list.rs @@ -20,7 +20,7 @@ impl RmcSerialize for Vec{ Ok(()) } - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { let len: u32 = reader.read_struct(IS_BIG_ENDIAN)?; //let mut vec = Vec::with_capacity(len as usize); diff --git a/rnex-core/src/rmc/structures/primitives.rs b/rnex-core/src/rmc/structures/primitives.rs index 65e732c..8918968 100644 --- a/rnex-core/src/rmc/structures/primitives.rs +++ b/rnex-core/src/rmc/structures/primitives.rs @@ -10,7 +10,7 @@ impl RmcSerialize for u8{ } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -26,7 +26,7 @@ impl RmcSerialize for i8{ } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -41,7 +41,7 @@ impl RmcSerialize for u16{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -56,7 +56,7 @@ impl RmcSerialize for i16{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -71,7 +71,7 @@ impl RmcSerialize for u32{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -86,7 +86,7 @@ impl RmcSerialize for i32{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -101,7 +101,7 @@ impl RmcSerialize for u64{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -116,7 +116,7 @@ impl RmcSerialize for i64{ Ok(writer.write_all(bytes_of(self))?) } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] @@ -132,7 +132,7 @@ impl RmcSerialize for f64{ } #[inline(always)] - fn deserialize(mut reader: &mut impl Read) -> crate::rmc::structures::Result { + fn deserialize(reader: &mut impl Read) -> crate::rmc::structures::Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } #[inline(always)] diff --git a/rnex-core/src/rmc/structures/qbuffer.rs b/rnex-core/src/rmc/structures/qbuffer.rs index d459091..fb30e64 100644 --- a/rnex-core/src/rmc/structures/qbuffer.rs +++ b/rnex-core/src/rmc/structures/qbuffer.rs @@ -17,7 +17,7 @@ impl RmcSerialize for QBuffer{ Ok(()) } - fn deserialize(mut reader: &mut impl Read) -> Result { + fn deserialize(reader: &mut impl Read) -> Result { let size: u16 = reader.read_struct(IS_BIG_ENDIAN)?; let mut vec = vec![0; size as usize]; diff --git a/rnex-core/src/rmc/structures/qresult.rs b/rnex-core/src/rmc/structures/qresult.rs index c614080..312540a 100644 --- a/rnex-core/src/rmc/structures/qresult.rs +++ b/rnex-core/src/rmc/structures/qresult.rs @@ -31,7 +31,7 @@ impl RmcSerialize for QResult{ Ok(()) } - fn deserialize(mut reader: &mut impl Read) -> Result { + fn deserialize(reader: &mut impl Read) -> Result { Ok(reader.read_struct(IS_BIG_ENDIAN)?) } } \ No newline at end of file diff --git a/rnex-core/src/rmc/structures/ranking.rs b/rnex-core/src/rmc/structures/ranking.rs index afb0698..9602553 100644 --- a/rnex-core/src/rmc/structures/ranking.rs +++ b/rnex-core/src/rmc/structures/ranking.rs @@ -25,7 +25,6 @@ struct UserData{ mod test{ use std::io::Cursor; use bytemuck::from_bytes; - use tokio::io::AsyncReadExt; use crate::rmc::structures::ranking::{UploadCompetitionData, UserData}; use rnex_core::rmc::structures::RmcSerialize; diff --git a/rnex-core/src/rmc/structures/rmc_struct.rs b/rnex-core/src/rmc/structures/rmc_struct.rs index 670b1e0..52184bb 100644 --- a/rnex-core/src/rmc/structures/rmc_struct.rs +++ b/rnex-core/src/rmc/structures/rmc_struct.rs @@ -1,15 +1,11 @@ -use std::any::Any; + use std::cmp::max; use std::fmt::Arguments; use std::io; -use std::io::{Cursor, ErrorKind, IoSlice, Read, Write}; -use std::ops::Sub; -use bytemuck::bytes_of; -use v_byte_helpers::{IS_BIG_ENDIAN, ReadExtensions}; -use crate::rmc::structures; -use crate::rmc::structures::Error::VersionMismatch; +use std::io::{ErrorKind, IoSlice, Read, Write}; use crate::rmc::structures::Result; + #[repr(C, packed)] struct StructureHeader{ version: u8, @@ -43,6 +39,8 @@ impl Write for OnlyWriteVec<'_> { #[cfg(feature = "rmc_struct_header")] pub fn write_struct(writer: &mut T, version: u8, inner_size: u32, pred: impl FnOnce(&mut T) -> Result<()> ) -> Result<()> { + use bytemuck::bytes_of; + writer.write_all(&[version])?; writer.write_all(bytes_of(&inner_size))?; @@ -55,7 +53,7 @@ pub fn write_struct(writer: &mut T, version: u8, inner_size: u32, pred #[cfg(not(feature = "rmc_struct_header"))] -pub fn write_struct(writer: &mut T, version: u8, _inner_size: u32, pred: impl FnOnce(&mut T) -> Result<()> ) -> Result<()> { +pub fn write_struct(writer: &mut T, _version: u8, _inner_size: u32, pred: impl FnOnce(&mut T) -> Result<()> ) -> Result<()> { pred(writer) } @@ -94,7 +92,10 @@ impl Read for SubRead<'_, T>{ } #[cfg(feature = "rmc_struct_header")] -pub fn read_struct(mut reader: &mut R, version: u8, pred: impl FnOnce(&mut SubRead) -> Result) -> Result { +pub fn read_struct(reader: &mut R, version: u8, pred: impl FnOnce(&mut SubRead) -> Result) -> Result { + use crate::rmc::structures::Error::VersionMismatch; + use v_byte_helpers::ReadExtensions; + use v_byte_helpers::IS_BIG_ENDIAN; let ver: u8 = reader.read_struct(IS_BIG_ENDIAN)?; if ver != version { @@ -107,6 +108,6 @@ pub fn read_struct(mut reader: &mut R, version: u8, pred: imp } #[cfg(not(feature = "rmc_struct_header"))] -pub fn read_struct(mut reader: &mut R, version: u8, pred: impl FnOnce(&mut R) -> Result) -> Result { +pub fn read_struct(mut reader: &mut R, _version: u8, pred: impl FnOnce(&mut R) -> Result) -> Result { Ok(pred(&mut reader)?) } diff --git a/rnex-core/src/rmc/structures/string.rs b/rnex-core/src/rmc/structures/string.rs index 12123fd..1231956 100644 --- a/rnex-core/src/rmc/structures/string.rs +++ b/rnex-core/src/rmc/structures/string.rs @@ -5,7 +5,7 @@ use v_byte_helpers::{IS_BIG_ENDIAN, ReadExtensions}; use super::{Result, RmcSerialize}; impl RmcSerialize for String{ - fn deserialize(mut reader: &mut impl Read) -> Result { + fn deserialize(reader: &mut impl Read) -> Result { let len: u16 = reader.read_struct(IS_BIG_ENDIAN)?; if len == 0{ return Ok("".to_string());