From e22e368d380ce173c9216ea485d5f907260a6c63 Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Tue, 18 May 2021 00:34:19 +0800 Subject: [PATCH] feat: add startup --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/main.rs | 4 +++- src/slash_handles.rs | 8 +++++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 05640e7..0092e18 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -533,7 +533,7 @@ dependencies = [ [[package]] name = "room-rs" -version = "0.1.0" +version = "0.1.2" dependencies = [ "chrono", "futures-channel", diff --git a/Cargo.toml b/Cargo.toml index e514e5f..0707512 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "room-rs" -version = "0.1.0" +version = "0.1.2" authors = ["Hatter Jiang@Pixelbook "] edition = "2018" diff --git a/src/main.rs b/src/main.rs index f27269f..787b74e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,6 +15,7 @@ use futures_channel::mpsc::unbounded; use futures_util::{future, pin_mut, stream::TryStreamExt, StreamExt}; use tokio::net::{TcpListener, TcpStream}; use tungstenite::protocol::Message; +use rust_util::util_time; use rust_util::XResult; use crate::types::{PeerMap, RoomMap, Tx, TxSendMessage}; use crate::msg::{RoomMessageDown, RoomMessage, RoomMessageType, RoomMessageDownType}; @@ -29,6 +30,7 @@ const VERSION: &str = env!("CARGO_PKG_VERSION"); static TOTAL_CREATED_CONN: AtomicU64 = AtomicU64::new(0); lazy_static! { + static ref STARTUP_MILLIS: u128 = util_time::get_current_millis(); static ref TEXT_MESSAGE_HANDLES: Vec>= { let handles:Vec> = vec![ Box::new(HandleTextMessageExit), @@ -328,7 +330,7 @@ async fn main() -> Result<(), IoError> { 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); + success!("Listening on: {}, startup at millis: {}", listen_addr, *STARTUP_MILLIS); while let Ok((stream, addr)) = listener.accept().await { TOTAL_CREATED_CONN.fetch_add(1, Ordering::Relaxed); diff --git a/src/slash_handles.rs b/src/slash_handles.rs index bb8c72c..f7743df 100644 --- a/src/slash_handles.rs +++ b/src/slash_handles.rs @@ -1,9 +1,12 @@ use std::net::SocketAddr; use std::sync::atomic::Ordering; use chrono::Local; +use rust_util::util_time; use crate::msg::RoomMessageDown; use crate::types::{PeerMap, RoomMap, Tx, TxSendMessage}; use crate::{NAME, VERSION, TOTAL_CREATED_CONN}; +use simpledateformat::format_human; +use std::time::Duration; #[derive(Debug, Clone)] pub struct HandleContext { @@ -37,11 +40,14 @@ impl HandleTextMessage for HandleTextMessageStatics { } fn handle(&self, handle_context: &mut HandleContext, tx: &Tx, _addr: SocketAddr, _msg: &str) { + let current_millis = util_time::get_current_millis(); + let diff_millis = iff!(current_millis > *crate::STARTUP_MILLIS, current_millis - *crate::STARTUP_MILLIS, 0); tx.send_text(format!( - "room count: {}\npeer count: {}\ntotal conn count:{}", + "room count: {}\npeer count: {}\ntotal created conn count:{}\nstartup: {}", handle_context.room_map.lock().unwrap().len(), handle_context.peer_map.lock().unwrap().len(), TOTAL_CREATED_CONN.load(Ordering::Relaxed), + format_human(Duration::from_millis(diff_millis as u64)), )); } }