diff --git a/src/main.rs b/src/main.rs index 67b37a2..d34557d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -21,10 +21,13 @@ use crate::slash_handles::{HandleContext, HandleTextMessage, HandleTextMessageTi use crate::slash_handles::{HandleTextMessageExit, HandleTextMessageStatics}; use crate::slash_handles::{HandleTextMessagePass, HandleTextMessageRoom}; use crate::slash_handles::{HandleTextMessageRooms, HandleTextMessageVersion}; +use std::sync::atomic::{AtomicU64, Ordering}; const NAME: &str = env!("CARGO_PKG_NAME"); const VERSION: &str = env!("CARGO_PKG_VERSION"); +static TOTAL_CREATED_CONN: AtomicU64 = AtomicU64::new(0); + lazy_static! { static ref TEXT_MESSAGE_HANDLES: Vec>= { let handles:Vec> = vec![ @@ -321,25 +324,21 @@ async fn main() -> Result<(), IoError> { let admin_pass = env::var("PASS").ok(); let listen_addr = env::args().nth(1).unwrap_or_else(|| "127.0.0.1:8080".to_string()); - let state = PeerMap::new(Mutex::new(HashMap::new())); - let room = RoomMap::new(Mutex::new(BTreeMap::new())); - let handle_context = HandleContext { - peer_map: state, - room_map: room, + peer_map: PeerMap::new(Mutex::new(HashMap::new())), + room_map: RoomMap::new(Mutex::new(BTreeMap::new())), admin_pass, is_admin: false, room_id: None, client_id: None, }; - // Create the event loop and TCP listener we'll accept connections on. let try_socket = TcpListener::bind(&listen_addr).await; let listener = try_socket.unwrap_or_else(|_| panic!("Failed to bind ok: {}", listen_addr)); success!("Listening on: {}", listen_addr); - // Let's spawn the handling of each connection in a separate task. while let Ok((stream, addr)) = listener.accept().await { + TOTAL_CREATED_CONN.fetch_add(1, Ordering::Relaxed); tokio::spawn(handle_connection(handle_context.clone(), stream, addr)); } diff --git a/src/slash_handles.rs b/src/slash_handles.rs index f24a00f..ff769a6 100644 --- a/src/slash_handles.rs +++ b/src/slash_handles.rs @@ -2,7 +2,8 @@ use crate::types::{PeerMap, RoomMap, Tx, TxSendMessage}; use std::net::SocketAddr; use chrono::Local; use crate::msg::RoomMessageDown; -use crate::{NAME, VERSION}; +use crate::{NAME, VERSION, TOTAL_CREATED_CONN}; +use std::sync::atomic::Ordering; #[derive(Debug, Clone)] pub struct HandleContext { @@ -37,9 +38,10 @@ impl HandleTextMessage for HandleTextMessageStatics { fn handle(&self, handle_context: &mut HandleContext, tx: &Tx, _addr: SocketAddr, _msg: &str) { tx.send_text(format!( - "room count: {}\npeer count: {}", + "room count: {}\npeer count: {}\ntotal conn count:{}", handle_context.room_map.lock().unwrap().len(), handle_context.peer_map.lock().unwrap().len(), + TOTAL_CREATED_CONN.load(Ordering::Relaxed), )); } }