feat: add total created conn

This commit is contained in:
2021-05-17 23:45:18 +08:00
parent 37d3553ab7
commit 323cbf6d45
2 changed files with 10 additions and 9 deletions

View File

@@ -21,10 +21,13 @@ use crate::slash_handles::{HandleContext, HandleTextMessage, HandleTextMessageTi
use crate::slash_handles::{HandleTextMessageExit, HandleTextMessageStatics}; use crate::slash_handles::{HandleTextMessageExit, HandleTextMessageStatics};
use crate::slash_handles::{HandleTextMessagePass, HandleTextMessageRoom}; use crate::slash_handles::{HandleTextMessagePass, HandleTextMessageRoom};
use crate::slash_handles::{HandleTextMessageRooms, HandleTextMessageVersion}; use crate::slash_handles::{HandleTextMessageRooms, HandleTextMessageVersion};
use std::sync::atomic::{AtomicU64, Ordering};
const NAME: &str = env!("CARGO_PKG_NAME"); const NAME: &str = env!("CARGO_PKG_NAME");
const VERSION: &str = env!("CARGO_PKG_VERSION"); const VERSION: &str = env!("CARGO_PKG_VERSION");
static TOTAL_CREATED_CONN: AtomicU64 = AtomicU64::new(0);
lazy_static! { lazy_static! {
static ref TEXT_MESSAGE_HANDLES: Vec<Box<dyn HandleTextMessage>>= { static ref TEXT_MESSAGE_HANDLES: Vec<Box<dyn HandleTextMessage>>= {
let handles:Vec<Box<dyn HandleTextMessage>> = vec![ let handles:Vec<Box<dyn HandleTextMessage>> = vec![
@@ -321,25 +324,21 @@ async fn main() -> Result<(), IoError> {
let admin_pass = env::var("PASS").ok(); 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 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 { let handle_context = HandleContext {
peer_map: state, peer_map: PeerMap::new(Mutex::new(HashMap::new())),
room_map: room, room_map: RoomMap::new(Mutex::new(BTreeMap::new())),
admin_pass, admin_pass,
is_admin: false, is_admin: false,
room_id: None, room_id: None,
client_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 try_socket = TcpListener::bind(&listen_addr).await;
let listener = try_socket.unwrap_or_else(|_| panic!("Failed to bind ok: {}", listen_addr)); let listener = try_socket.unwrap_or_else(|_| panic!("Failed to bind ok: {}", listen_addr));
success!("Listening on: {}", 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 { 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)); tokio::spawn(handle_connection(handle_context.clone(), stream, addr));
} }

View File

@@ -2,7 +2,8 @@ use crate::types::{PeerMap, RoomMap, Tx, TxSendMessage};
use std::net::SocketAddr; use std::net::SocketAddr;
use chrono::Local; use chrono::Local;
use crate::msg::RoomMessageDown; use crate::msg::RoomMessageDown;
use crate::{NAME, VERSION}; use crate::{NAME, VERSION, TOTAL_CREATED_CONN};
use std::sync::atomic::Ordering;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct HandleContext { pub struct HandleContext {
@@ -37,9 +38,10 @@ impl HandleTextMessage for HandleTextMessageStatics {
fn handle(&self, handle_context: &mut HandleContext, tx: &Tx, _addr: SocketAddr, _msg: &str) { fn handle(&self, handle_context: &mut HandleContext, tx: &Tx, _addr: SocketAddr, _msg: &str) {
tx.send_text(format!( tx.send_text(format!(
"room count: {}\npeer count: {}", "room count: {}\npeer count: {}\ntotal conn count:{}",
handle_context.room_map.lock().unwrap().len(), handle_context.room_map.lock().unwrap().len(),
handle_context.peer_map.lock().unwrap().len(), handle_context.peer_map.lock().unwrap().len(),
TOTAL_CREATED_CONN.load(Ordering::Relaxed),
)); ));
} }
} }