From 3f661aa2b8aede166ac184a116c7d3c3fc4c7293 Mon Sep 17 00:00:00 2001 From: Titouan Rigoudy Date: Fri, 2 Dec 2022 00:08:11 +0000 Subject: [PATCH] Move {insert,remove}_member() from RoomMap to RoomEntry. --- client/src/client.rs | 34 ++++++++++++++++++++-------------- client/src/room/map.rs | 41 +++++++++++++---------------------------- 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/client/src/client.rs b/client/src/client.rs index d68cbfc..b6df70d 100644 --- a/client/src/client.rs +++ b/client/src/client.rs @@ -648,13 +648,16 @@ impl Client { &mut self, response: server::RoomUserJoinedResponse, ) { - let result = self - .rooms - .insert_member(&response.room_name, response.user.name.clone()); - if let Err(err) = result { - error!("RoomUserJoinedResponse: {}", err); - return; - } + let room = match self.rooms.get_mut_strict(&response.room_name) { + Ok(room) => room, + Err(err) => { + error!("RoomUserJoinedResponse: {}", err); + return; + } + }; + + room.insert_member(response.user.name.clone()); + self.send_to_controller(control::Response::RoomUserJoinedResponse( control::RoomUserJoinedResponse { room_name: response.room_name, @@ -667,13 +670,16 @@ impl Client { &mut self, response: server::RoomUserLeftResponse, ) { - let result = self - .rooms - .remove_member(&response.room_name, &response.user_name); - if let Err(err) = result { - error!("RoomUserLeftResponse: {}", err); - return; - } + let room = match self.rooms.get_mut_strict(&response.room_name) { + Ok(room) => room, + Err(err) => { + error!("RoomUserLeftResponse: {}", err); + return; + } + }; + + room.remove_member(&response.user_name); + self.send_to_controller(control::Response::RoomUserLeftResponse( control::RoomUserLeftResponse { room_name: response.room_name, diff --git a/client/src/room/map.rs b/client/src/room/map.rs index a8f000f..9e38ae4 100644 --- a/client/src/room/map.rs +++ b/client/src/room/map.rs @@ -95,9 +95,8 @@ impl RoomEntry { self.state.members = members.iter().map(|user| user.name.clone()).collect(); } - /// Records that we are now trying to leave the given room. - /// If the room is not found, or if its membership status is not `Member`, - /// returns an error. + /// Records that we are now trying to leave this room. + /// Returns an error if its membership status is not `Member`, #[cfg(test)] pub fn start_leaving(&mut self) -> Result<(), RoomMembershipChangeError> { match self.state.membership { @@ -113,7 +112,7 @@ impl RoomEntry { } } - /// Records that we have now left the given room. + /// Records that we have now left this room. pub fn leave(&mut self) { match self.state.membership { RoomMembership::Leaving => info!("Left room {:?}", self.name), @@ -126,6 +125,16 @@ impl RoomEntry { self.state.membership = RoomMembership::NonMember; } + + /// Adds the given user to this room's members. + pub fn insert_member(&mut self, user_name: String) { + self.state.members.insert(user_name); + } + + /// Removes the given user from this room's members. + pub fn remove_member(&mut self, user_name: &str) { + self.state.members.remove(user_name); + } } /// Contains the mapping from room names to room data and provides a clean @@ -249,30 +258,6 @@ impl RoomMap { // TODO: Move remaining methods to `RoomEntry`. - /// Inserts the given user in the given room's set of members. - /// Returns an error if the room is not found. - pub fn insert_member( - &mut self, - room_name: &str, - user_name: String, - ) -> Result<(), RoomError> { - let room = self.get_mut_strict(room_name)?; - room.state.members.insert(user_name); - Ok(()) - } - - /// Removes the given user from the given room's set of members. - /// Returns an error if the room is not found. - pub fn remove_member( - &mut self, - room_name: &str, - user_name: &str, - ) -> Result<(), RoomError> { - let room = self.get_mut_strict(room_name)?; - room.state.members.remove(user_name); - Ok(()) - } - /*---------* * Tickers * *---------*/