From f28ecc9f8beb5239c0db769a76ed0973f8029115 Mon Sep 17 00:00:00 2001 From: ddidderr Date: Mon, 3 Mar 2025 17:33:09 +0100 Subject: [PATCH] [code] RwLock instead of Mutex makes more sense for the GameDB --- crates/lanspread-server/src/req.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/crates/lanspread-server/src/req.rs b/crates/lanspread-server/src/req.rs index 1e48379..e56567f 100644 --- a/crates/lanspread-server/src/req.rs +++ b/crates/lanspread-server/src/req.rs @@ -8,18 +8,18 @@ use lanspread_db::db::{GameDB, GameFileDescription}; use lanspread_proto::{Request, Response}; use lanspread_utils::maybe_addr; use s2n_quic::stream::SendStream; -use tokio::sync::Mutex; +use tokio::sync::RwLock; use walkdir::WalkDir; #[derive(Clone, Debug)] pub(crate) struct RequestHandler { - db: Arc>, + db: Arc>, } impl RequestHandler { pub(crate) fn new(games: GameDB) -> RequestHandler { RequestHandler { - db: Arc::new(Mutex::new(games)), + db: Arc::new(RwLock::new(games)), } } @@ -27,11 +27,11 @@ impl RequestHandler { match request { Request::Ping => Response::Pong, Request::ListGames => { - let db = self.db.lock().await; + let db = self.db.read().await; Response::Games(db.all_games().into_iter().cloned().collect()) } Request::GetGame { id } => { - if self.db.lock().await.get_game_by_id(&id).is_none() { + if self.db.read().await.get_game_by_id(&id).is_none() { tracing::error!("Game not found in DB: {id}"); return Response::GameNotFound(id); }