diff --git a/server/stat/src/app/user_app.rs b/server/stat/src/app/user_app.rs index 7b32594..dca529f 100644 --- a/server/stat/src/app/user_app.rs +++ b/server/stat/src/app/user_app.rs @@ -5,12 +5,11 @@ use r9_macro_derive::SharedFromSelf; use r9_macro_derive::Singleton; use r9::Queue; use f9::app::App; -use f9::app::HttpContext; use crate::listener::WsListener; use crate::upstream::UpStreamMgr; use bytes::BytesMut; use r9::xtimer::TimerList; -//use crate::ss; +use std::sync::OnceLock; pub struct DownStreamPack { pub holder: Option>>, @@ -22,12 +21,11 @@ pub struct DownStreamPack { unsafe impl Send for DownStreamPack {} unsafe impl Sync for DownStreamPack {} -#[derive(SharedFromSelf)] -#[derive(Singleton)] pub struct UserApp { - _self_wp: Weak::>, net_msg_queue: Rc::>>, } +unsafe impl Send for UserApp {} +unsafe impl Sync for UserApp {} impl f9::app::UserApp for UserApp { @@ -35,29 +33,12 @@ impl f9::app::UserApp for UserApp { return "statserver".to_string(); } - fn init(&mut self) { - App::instance().borrow_mut().add_http_handler( - "Ops$selfChecking".to_string(), - Rc::new(RefCell::new( - move |ctx: &mut HttpContext| { - ctx.rsp = "Ops$selfChecking".to_string(); - App::instance().borrow_mut().add_http_handler( - "Ops$selfChecking3".to_string(), - Rc::new(RefCell::new( - move |ctx: &mut HttpContext| { - ctx.rsp = "Ops$selfChecking3".to_string(); - } - )), - ); - } - ) - ), - ); + fn init(&self) { WsListener::instance().borrow_mut().init(); UpStreamMgr::instance().borrow_mut().init(); } - fn update(&mut self) { + fn update(&self) { self.net_msg_queue.borrow_mut().fetch(); let work_list = self.net_msg_queue.borrow().work_list.lock().unwrap().clone(); while !work_list.borrow().empty() { @@ -68,7 +49,7 @@ impl f9::app::UserApp for UserApp { WsListener::instance().borrow().update(); } - fn uninit(&mut self) { + fn uninit(&self) { WsListener::instance().borrow_mut().uninit(); } @@ -78,8 +59,14 @@ impl f9::app::UserApp for UserApp { } +static UserAppInstance: OnceLock = OnceLock::new(); + impl UserApp { + pub fn instance() -> &'static UserApp { + return UserAppInstance.get_or_init(|| UserApp::new()); + } + pub fn add_down_stream_pack(&self, socket_handle: u16, data: bytes::BytesMut) { println!("add_down_stream_pack1 len:{0}", data.len()); let node = Rc::new(RefCell::new(DownStreamPack{ @@ -95,7 +82,6 @@ impl UserApp { pub fn new() -> Self { let p = UserApp{ - _self_wp: Default::default(), net_msg_queue: r9::Queue::::new(), }; return p; diff --git a/server/stat/src/listener/wslistener.rs b/server/stat/src/listener/wslistener.rs index a5bc5d2..e6cfd87 100644 --- a/server/stat/src/listener/wslistener.rs +++ b/server/stat/src/listener/wslistener.rs @@ -114,7 +114,7 @@ impl WsConn { println!("recv buf_len:{0}", tmp_bytes.len()); } { - UserApp::instance().borrow().add_down_stream_pack(self.socket_handle, tmp_bytes); + UserApp::instance().add_down_stream_pack(self.socket_handle, tmp_bytes); } offset += (pack_len as usize) + 12; } diff --git a/third_party/librust b/third_party/librust index 902db5e..1e0615b 160000 --- a/third_party/librust +++ b/third_party/librust @@ -1 +1 @@ -Subproject commit 902db5e1bf1789c5055b0e9015f513a409cac4c6 +Subproject commit 1e0615b6e7a0b7321a58f508ae745c9fdf3987b1