From 8147d03b44323172454601523a18060edbb0ab9f Mon Sep 17 00:00:00 2001 From: metamuffin Date: Fri, 9 Sep 2022 20:15:54 +0200 Subject: clean code --- server/src/main.rs | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'server/src') diff --git a/server/src/main.rs b/server/src/main.rs index 9f5cb91..ddc00af 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -102,24 +102,12 @@ async fn handle_rejection(err: Rejection) -> Result { fn signaling_connect(rname: String, rooms: Rooms, ws: warp::ws::Ws) -> impl Reply { async fn inner(sock: WebSocket, rname: String, rooms: Rooms) { debug!("ws upgrade"); - let guard = rooms.read().await; - let room = match guard.get(&rname) { - Some(r) => { - let x = r.to_owned(); - drop(guard); - x - } - None => { - debug!("aquire lock for insertion"); - drop(guard); // make sure read-lock is dropped to avoid deadlock - let mut guard = rooms.write().await; - debug!("create new room"); - guard.insert(rname.to_owned(), Default::default()); - let x = guard.get(&rname).unwrap().to_owned(); - drop(guard); - x - } - }; + let mut guard = rooms.write().await; + let room = guard + .entry(rname.clone()) + .or_insert_with(|| Default::default()) + .to_owned(); + drop(guard); room.client_connect(sock).await; if room.should_remove().await { -- cgit v1.2.3-70-g09d2