Join room, send disconnect message to old room send join message to new room.
(&mut self, conn_id: ConnId, room: RoomId)
| 168 | |
| 169 | /// Join room, send disconnect message to old room send join message to new room. |
| 170 | async fn join_room(&mut self, conn_id: ConnId, room: RoomId) { |
| 171 | let mut rooms = Vec::new(); |
| 172 | |
| 173 | // remove session from all rooms |
| 174 | for (n, sessions) in &mut self.rooms { |
| 175 | if sessions.remove(&conn_id) { |
| 176 | rooms.push(n.to_owned()); |
| 177 | } |
| 178 | } |
| 179 | // send message to other users |
| 180 | for room in rooms { |
| 181 | self.send_system_message(&room, 0, "Someone disconnected") |
| 182 | .await; |
| 183 | } |
| 184 | |
| 185 | self.rooms.entry(room.clone()).or_default().insert(conn_id); |
| 186 | |
| 187 | self.send_system_message(&room, conn_id, "Someone connected") |
| 188 | .await; |
| 189 | } |
| 190 | |
| 191 | pub async fn run(mut self) -> io::Result<()> { |
| 192 | while let Some(cmd) = self.cmd_rx.recv().await { |
no test coverage detected