11use crate :: model:: RoomInfo ;
22use crate :: room:: { Client , ClientId , ClientSender , Room , RoomId , RoomStatus } ;
33
4- use anyhow:: Result ;
54use dashmap:: DashMap ;
65use dashmap:: mapref:: one:: { Ref , RefMut } ;
76use rand:: RngExt ;
@@ -36,7 +35,7 @@ impl State {
3635 ) -> Option < ( ClientId , RoomId ) > {
3736 match room_id {
3837 None if self . room_count ( ) == MAX_ROOM_COUNT => None ,
39- None => Some ( self . add_room_and_host ( name. to_string ( ) , tx) . ok ( ) ? ) ,
38+ None => Some ( self . add_room_and_host ( name, tx) ) ,
4039 Some ( room_id) => self
4140 . add_client_to_room ( name, tx, & room_id)
4241 . map ( |client_id| ( client_id, room_id) ) ,
@@ -48,13 +47,9 @@ impl State {
4847 room. get_sender ( client_id)
4948 }
5049
51- pub fn add_room_and_host (
52- & self ,
53- host_name : String ,
54- host_tx : ClientSender ,
55- ) -> Result < ( ClientId , RoomId ) > {
50+ pub fn add_room_and_host ( & self , host_name : & str , host_tx : ClientSender ) -> ( ClientId , RoomId ) {
5651 let host_id = Uuid :: new_v4 ( ) ;
57- let room = Room :: new_with_host ( & host_id, & host_name, host_tx) ;
52+ let room = Room :: new_with_host ( & host_id, host_name, host_tx) ;
5853
5954 let room_id = loop {
6055 let code = generate_6_digit_code ( ) ;
@@ -68,7 +63,7 @@ impl State {
6863 self . users . insert ( host_id, room_id. clone ( ) ) ;
6964 self . rooms . insert ( room_id. clone ( ) , room) ;
7065
71- Ok ( ( host_id, room_id) )
66+ ( host_id, room_id)
7267 }
7368
7469 /// # Safety
@@ -168,6 +163,7 @@ impl State {
168163 let mut room = self . rooms . get_mut ( room_id) ?;
169164 room. locked = !room. locked ;
170165 let locked = room. locked ;
166+ drop ( room) ;
171167
172168 if locked {
173169 info_room ! ( room_id, "Room Locked" ) ;
@@ -295,9 +291,7 @@ mod tests {
295291 fn create_room_adds_host ( ) {
296292 log_tx ( ) ;
297293 let state = State :: new ( ) ;
298- state
299- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
300- . unwrap ( ) ;
294+ state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
301295 assert_eq ! ( state. room_count( ) , 1 ) ;
302296
303297 let rooms = state. list_rooms ( ) ;
@@ -309,9 +303,7 @@ mod tests {
309303 fn join_existing_room ( ) {
310304 log_tx ( ) ;
311305 let state = State :: new ( ) ;
312- let ( _, room_id) = state
313- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
314- . unwrap ( ) ;
306+ let ( _, room_id) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
315307
316308 assert ! (
317309 state
@@ -336,9 +328,7 @@ mod tests {
336328 fn join_locked_room_returns_none ( ) {
337329 log_tx ( ) ;
338330 let state = State :: new ( ) ;
339- let ( _, room_id) = state
340- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
341- . unwrap ( ) ;
331+ let ( _, room_id) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
342332 state. toggle_room_lock ( & room_id) ;
343333
344334 assert ! (
@@ -352,9 +342,7 @@ mod tests {
352342 fn last_client_leaving_closes_room ( ) {
353343 log_tx ( ) ;
354344 let state = State :: new ( ) ;
355- let ( client_id, _) = state
356- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
357- . unwrap ( ) ;
345+ let ( client_id, _) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
358346 state. remove_client ( & client_id) ;
359347
360348 assert_eq ! ( state. room_count( ) , 0 ) ;
@@ -364,9 +352,7 @@ mod tests {
364352 fn host_leaving_transfers_to_next_member ( ) {
365353 log_tx ( ) ;
366354 let state = State :: new ( ) ;
367- let ( host_id, room_id) = state
368- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
369- . unwrap ( ) ;
355+ let ( host_id, room_id) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
370356
371357 state
372358 . add_client_to_room ( "Bob" , client_tx ( ) , & room_id)
@@ -398,9 +384,7 @@ mod tests {
398384 let state = State :: new ( ) ;
399385 assert ! ( state. list_rooms( ) . is_empty( ) ) ;
400386
401- let ( _, room_id) = state
402- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
403- . unwrap ( ) ;
387+ let ( _, room_id) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
404388 state. toggle_room_lock ( & room_id) ;
405389 let rooms = state. list_rooms ( ) ;
406390
@@ -413,9 +397,7 @@ mod tests {
413397 fn toggle_lock_flips_state ( ) {
414398 log_tx ( ) ;
415399 let state = State :: new ( ) ;
416- let ( _, room_id) = state
417- . add_room_and_host ( "Alice" . to_string ( ) , client_tx ( ) )
418- . unwrap ( ) ;
400+ let ( _, room_id) = state. add_room_and_host ( "Alice" , client_tx ( ) ) ;
419401
420402 assert_eq ! ( state. toggle_room_lock( & room_id) , Some ( true ) ) ;
421403 assert_eq ! ( state. toggle_room_lock( & room_id) , Some ( false ) ) ;
@@ -426,9 +408,7 @@ mod tests {
426408 log_tx ( ) ;
427409 let state = State :: new ( ) ;
428410 for i in 0 ..MAX_ROOM_COUNT {
429- state
430- . add_room_and_host ( format ! ( "Client{i}" ) , client_tx ( ) )
431- . unwrap ( ) ;
411+ state. add_room_and_host ( & format ! ( "Client{i}" ) , client_tx ( ) ) ;
432412 }
433413
434414 assert ! (
0 commit comments