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:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user