diff --git a/Cargo.lock b/Cargo.lock index 6431aed..d8b52f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2546,6 +2546,7 @@ dependencies = [ "chrono", "futures", "hex", + "indexmap", "jsonwebtoken", "libfj", "log", @@ -2749,10 +2750,12 @@ dependencies = [ [[package]] name = "oj_serdes" -version = "0.1.0" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "986fe9d0d1382b2e04678db42e8e3754b8263203b590bfca72b18751250bbb72" dependencies = [ + "quick-xml", "serde", - "serde_json", ] [[package]] @@ -3138,6 +3141,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "quinn" version = "0.11.9" diff --git a/Cargo.toml b/Cargo.toml index e8632f3..9a026ed 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,4 +50,5 @@ rand = { version = "0.9", features = [ "thread_rng" ] } num-quaternion = "1.0" hex = "0.4" base64 = "0.22" -oj_serdes = { version = "0.1.0", path = "../oj_core/serdes" } +#oj_serdes = { version = "0.2.0", path = "../oj_core/serdes" } +oj_serdes = "0.2.0" diff --git a/rc_lobby_room/src/lobby.rs b/rc_lobby_room/src/lobby.rs index a50824e..69e3bfb 100644 --- a/rc_lobby_room/src/lobby.rs +++ b/rc_lobby_room/src/lobby.rs @@ -25,6 +25,17 @@ struct QueueKey { auto_heal: bool, } +impl QueueKey { + fn guid(&self) -> String { + use std::hash::Hasher; + let mut hasher = std::hash::DefaultHasher::new(); + self.hash(&mut hasher); + //chrono::Utc::now().timestamp_micros().hash(&mut hasher); + let guid = oj_rc_core::persist::user::uuid_sanitize(hasher.finish() as i64); + oj_rc_core::persist::user::i64_as_uuid_str(guid) + } +} + struct QueueUser { emitter: polariton_server::events::EventEmitter, player: oj_rc_core::data::player_data::PlayerData, @@ -62,12 +73,7 @@ impl QueueHandler { } async fn enter_match(&self, key: QueueKey, mut players: Vec, user: &(dyn oj_rc_core::persist::user::LobbyUser + Send + Sync)) { - use std::hash::Hasher; - let mut hasher = std::hash::DefaultHasher::new(); - key.hash(&mut hasher); - chrono::Utc::now().timestamp_micros().hash(&mut hasher); - let guid = oj_rc_core::persist::user::uuid_sanitize(hasher.finish() as i64); - let guid_str = oj_rc_core::persist::user::i64_as_uuid_str(guid); + let guid_str = key.guid(); let game_desc = oj_rc_core::persist::user::GameDescriptor { guid: guid_str.clone(), map: key.map.clone(), @@ -104,7 +110,7 @@ impl QueueHandler { port: self.hostport, map: key.map.clone(), mode: key.mode, - guid: guid_str, + guid: guid_str.clone(), is_ranked: false, is_custom: false, visibility: Some(key.visibility), @@ -116,6 +122,7 @@ impl QueueHandler { for player in players.iter() { tokio::spawn(Self::send_events_to_player(arc_event.clone(), player.emitter.clone())); } + log::info!("{} players are entering match {}", players.len(), guid_str); }, Err(e) => { if let Some(msg) = e.error_msg() { @@ -174,7 +181,7 @@ impl QueueHandler { } *lock = new_queue_map; if count != 0 { - log::info!("Upgraded {} users in queue to new gamemode", count); + log::info!("Upgraded {} users in queue to new gamemode {}", count, key.guid()); } }, GamemodeChangeStrategy::Notify => { @@ -189,18 +196,20 @@ impl QueueHandler { } } if count != 0 { - log::info!("Notified {} users in queue of new gamemode", count); + log::info!("Notified {} users in queue of new gamemode {}", count, key.guid()); } }, GamemodeChangeStrategy::Ignore => { - log::debug!("Gamemode appears to have changed, ignoring already-queued players"); + log::debug!("Gamemode appears to have changed to {}, ignoring already-queued players", key.guid()); } } } let players_len = if let Some(players) = lock.get_mut(&key) { + log::info!("User {} entered queue for existing match {}", new_player.user_id, key.guid()); players.push(new_player); players.len() } else { + log::info!("User {} entered queue for new match {}", new_player.user_id, key.guid()); lock.insert(key.clone(), vec![new_player]); 1 };