1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Log lobby queue keys compactly

This commit is contained in:
NG (Graham)
2026-02-02 21:15:39 -05:00
parent c17e6493c5
commit a31c382c3e

View File

@@ -26,13 +26,23 @@ struct QueueKey {
} }
impl QueueKey { impl QueueKey {
fn display_guid(&self) -> String { fn short(&self) -> impl std::fmt::Display {
use std::hash::Hasher; let mode = match self.mode {
let mut hasher = std::hash::DefaultHasher::new(); oj_rc_core::data::game_mode::GameMode::BattleArena => "BA",
self.hash(&mut hasher); oj_rc_core::data::game_mode::GameMode::SuddenDeath => "Classic",
//chrono::Utc::now().timestamp_micros().hash(&mut hasher); oj_rc_core::data::game_mode::GameMode::Pit => "P",
let guid = oj_rc_core::persist::user::uuid_sanitize(hasher.finish() as i64); oj_rc_core::data::game_mode::GameMode::TestMode => "T",
oj_rc_core::persist::user::i64_as_uuid_str(guid) oj_rc_core::data::game_mode::GameMode::SinglePlayer => "SP",
oj_rc_core::data::game_mode::GameMode::TeamDeathmatch => "TDM",
oj_rc_core::data::game_mode::GameMode::Campaign => "C",
};
let visibility = match self.visibility {
oj_rc_core::data::game_mode::MapVisibility::Good => "0",
oj_rc_core::data::game_mode::MapVisibility::Poor => "o",
oj_rc_core::data::game_mode::MapVisibility::Bad => ".",
};
let auto_heal = if self.auto_heal { "+" } else { "" };
format!("{}@{}|{}{}", mode, self.map, visibility, auto_heal)
} }
fn unique_guid(&self) -> String { fn unique_guid(&self) -> String {
@@ -319,7 +329,7 @@ impl QueueHandler {
} }
*lock = new_queue_map; *lock = new_queue_map;
if count != 0 { if count != 0 {
log::info!("Upgraded {} users in queue to new gamemode {}", count, key.display_guid()); log::info!("Upgraded {} users in queue to new gamemode {}", count, key.short());
} }
}, },
GamemodeChangeStrategy::Notify => { GamemodeChangeStrategy::Notify => {
@@ -334,20 +344,20 @@ impl QueueHandler {
} }
} }
if count != 0 { if count != 0 {
log::info!("Notified {} users in queue of new gamemode {}", count, key.display_guid()); log::info!("Notified {} users in queue of new gamemode {}", count, key.short());
} }
}, },
GamemodeChangeStrategy::Ignore => { GamemodeChangeStrategy::Ignore => {
log::debug!("Gamemode appears to have changed to {}, ignoring already-queued players", key.display_guid()); log::debug!("Gamemode appears to have changed to {}, ignoring already-queued players", key.short());
} }
} }
} }
let players_len = if let Some(players) = lock.get_mut(&key) { let players_len = if let Some(players) = lock.get_mut(&key) {
log::info!("User {} entered queue for existing match {}", new_player.user_id, key.display_guid()); log::info!("User {} entered queue for existing match {}", new_player.user_id, key.short());
players.push(new_player); players.push(new_player);
players.len() players.len()
} else { } else {
log::info!("User {} entered queue for new match {}", new_player.user_id, key.display_guid()); log::info!("User {} entered queue for new match {}", new_player.user_id, key.short());
lock.insert(key.clone(), vec![new_player]); lock.insert(key.clone(), vec![new_player]);
1 1
}; };
@@ -369,10 +379,10 @@ impl QueueHandler {
pub async fn leave_queue(&self, user: std::sync::Arc<Box<dyn oj_rc_core::persist::user::User<()> + Send + Sync>>) { pub async fn leave_queue(&self, user: std::sync::Arc<Box<dyn oj_rc_core::persist::user::User<()> + Send + Sync>>) {
let user_id = oj_rc_core::persist::user::LobbyUser::user_id(user.as_ref().as_ref()); let user_id = oj_rc_core::persist::user::LobbyUser::user_id(user.as_ref().as_ref());
for queue in self.users_in_queue.lock().await.values_mut() { for (queue_key, queue) in self.users_in_queue.lock().await.iter_mut() {
if let Some((i, _)) = queue.iter().enumerate().find(|(_, user)| user.user_id == user_id) { if let Some((i, _)) = queue.iter().enumerate().find(|(_, user)| user.user_id == user_id) {
queue.remove(i); queue.remove(i);
log::info!("User {} was removed from a queue", user_id); log::info!("User {} was removed from queue {}", user_id, queue_key.short());
break; break;
} }
} }