feat: add total created conn
This commit is contained in:
13
src/main.rs
13
src/main.rs
@@ -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));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user