diff --git a/src/main.rs b/src/main.rs index 418fe9a..f27269f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,8 +55,7 @@ fn handle_text_message(handle_context: &mut HandleContext, tx: &Tx, addr: Socket } let room_message = match serde_json::from_str::(&msg) { - Ok(room_message) => room_message, - Err(e) => { + Ok(room_message) => room_message, Err(e) => { warning!("Parse message: from: {:?} - {:?}, failed: {}", handle_context.room_id, handle_context.client_id, e); RoomMessageDown::create_error_reply(format!("Message parse failed: {}, message: {}", e, msg)).send(&tx); return Ok(()); @@ -158,12 +157,9 @@ fn handle_text_message(handle_context: &mut HandleContext, tx: &Tx, addr: Socket information!("List room peers: {:?} - {:?}", room_id, client_id); let room_map = handle_context.room_map.lock().unwrap(); let client_map = room_map.get(room_id); - let mut client_ids = vec![]; - if let Some(client_map) = client_map { - for client_id in client_map.keys() { - client_ids.push(client_id.clone()); - } - } + let client_ids = client_map + .map(|m| m.keys().cloned().collect::>()) + .unwrap_or_else(Vec::new); let client_ids_data = serde_json::to_string(&client_ids)?; let m = RoomMessageDown { r#type: RoomMessageDownType::PeerList, @@ -183,13 +179,12 @@ fn handle_text_message(handle_context: &mut HandleContext, tx: &Tx, addr: Socket let room_map = handle_context.room_map.lock().unwrap(); let client_map = room_map.get(room_id); - let data = room_message.data; let m = RoomMessageDown { r#type: RoomMessageDownType::BroadcastMessage, reply_code: Some(200), reply_message: Some("ok".into()), peer_id: Some(client_id.clone()), - data, + data: room_message.data, }; let mm = serde_json::to_string(&m)?; if let Some(client_map) = client_map { @@ -215,13 +210,12 @@ fn handle_text_message(handle_context: &mut HandleContext, tx: &Tx, addr: Socket let room_map = handle_context.room_map.lock().unwrap(); let client_map = room_map.get(room_id); - let data = room_message.data; let m = RoomMessageDown { r#type: RoomMessageDownType::PeerMessage, reply_code: Some(200), reply_message: Some("ok".into()), peer_id: Some(client_id.clone()), - data, + data: room_message.data, }; let mm = serde_json::to_string(&m)?; if let Some(client_map) = client_map { @@ -276,12 +270,10 @@ async fn inner_handle_connection( warning!("Ignore binary message from: {:?} - {:?}", handle_context.room_id, handle_context.client_id); RoomMessageDown::create_error_reply("Binary message not supported").send(&tx); }, - Message::Text(msg) => { - if !msg.is_empty() { - if let Err(e) = handle_text_message(&mut handle_context, &tx, addr, msg) { - failure!("Error in process text message: {}", e); - RoomMessageDown::create_error_reply(format!("Error in process text message: {}", e)); - } + Message::Text(msg) => if !msg.is_empty() { + if let Err(e) = handle_text_message(&mut handle_context, &tx, addr, msg) { + failure!("Error in process text message: {}", e); + RoomMessageDown::create_error_reply(format!("Error in process text message: {}", e)); } }, }