feat: add version

This commit is contained in:
2021-05-17 00:40:06 +08:00
parent 29734dddf6
commit 776348c798

View File

@@ -16,6 +16,9 @@ type Tx = UnboundedSender<Message>;
type PeerMap = Arc<Mutex<HashMap<SocketAddr, Tx>>>; type PeerMap = Arc<Mutex<HashMap<SocketAddr, Tx>>>;
type RoomMap = Arc<Mutex<BTreeMap<String, BTreeMap<String, SocketAddr>>>>; type RoomMap = Arc<Mutex<BTreeMap<String, BTreeMap<String, SocketAddr>>>>;
const NAME: &str = env!("CARGO_PKG_NAME");
const VERSION: &str = env!("CARGO_PKG_VERSION");
#[derive(Clone, Copy, Debug, Serialize, Deserialize)] #[derive(Clone, Copy, Debug, Serialize, Deserialize)]
enum RoomMessageType { enum RoomMessageType {
#[serde(rename = "Enter")] #[serde(rename = "Enter")]
@@ -191,6 +194,12 @@ async fn inner_handle_connection(
} }
return future::ok(()); return future::ok(());
} }
if msg == "/version" {
tx.unbounded_send(Message::Text(
format!("{} - v{}", NAME, VERSION)
)).ok();
return future::ok(());
}
} }
let room_message = match serde_json::from_str::<RoomMessage>(&msg) { let room_message = match serde_json::from_str::<RoomMessage>(&msg) {
Ok(room_message) => room_message, Ok(room_message) => room_message,
@@ -220,8 +229,7 @@ async fn inner_handle_connection(
"Replace client: {:?} - {:?}, from {:?} -> {:?}", "Replace client: {:?} - {:?}, from {:?} -> {:?}",
msg_room_id, msg_client_id, peer_addr, addr msg_room_id, msg_client_id, peer_addr, addr
); );
let tx = peer_map.lock().unwrap().remove(peer_addr); if let Some(tx) = peer_map.lock().unwrap().remove(peer_addr) {
if let Some(tx) = tx {
tx.unbounded_send(Message::Close(None)).ok(); tx.unbounded_send(Message::Close(None)).ok();
} }
client_map.insert(msg_client_id.clone(), addr); client_map.insert(msg_client_id.clone(), addr);
@@ -279,8 +287,7 @@ async fn inner_handle_connection(
let client_map = room_map.remove(room_id); let client_map = room_map.remove(room_id);
if let Some(client_map) = client_map { if let Some(client_map) = client_map {
for (_client_id, client_addr) in client_map { for (_client_id, client_addr) in client_map {
let client_tx = peer_map.lock().unwrap().remove(&client_addr); if let Some(client_tx) = peer_map.lock().unwrap().remove(&client_addr) {
if let Some(client_tx) = client_tx {
client_tx.unbounded_send(Message::Close(None)).ok(); client_tx.unbounded_send(Message::Close(None)).ok();
} }
} }