11use core:: client:: Client ;
22use core:: client_p2p:: ClientP2P ;
33use core:: log:: * ;
4+ use core:: panic;
5+ use std:: future:: Future ;
46
57pub static mut SERVER : Option < String > = None ;
68pub static mut PORT : u16 = 0 ;
@@ -18,6 +20,7 @@ fn print_help() {
1820}
1921
2022fn main ( ) {
23+ panic:: custom_panic ( ) ;
2124 let mut args = std:: env:: args ( ) ;
2225 if args. len ( ) < 5 {
2326 return print_help ( ) ;
@@ -31,7 +34,6 @@ fn main() {
3134 }
3235 v => v,
3336 } ;
34- // Some(args.nth(1).unwrap());
3537 let port = args. next ( ) . unwrap ( ) ;
3638 PORT = match port. parse ( ) {
3739 Ok ( p) => p,
@@ -48,45 +50,47 @@ fn main() {
4850 }
4951 LOCAL_SERVICE = args. next ( ) . map ( |s| s. to_string ( ) ) ;
5052 }
51- if is_p2p {
52- serv_p2p ( ) ;
53- return ;
54- }
5553 loop {
56- serv ( ) ;
54+ if is_p2p {
55+ serv_p2p ( ) ;
56+ } else {
57+ serv ( ) ;
58+ }
5759 std:: thread:: sleep ( std:: time:: Duration :: from_millis ( 5000 ) ) ;
5860 }
5961}
6062
61- fn serv_p2p ( ) {
62- let server = unsafe { SERVER . as_ref ( ) . unwrap ( ) } ;
63- let port = unsafe { PORT } ;
64- let local_service = unsafe { LOCAL_SERVICE . as_ref ( ) . unwrap ( ) } ;
63+ fn task_guard ( future : impl Future < Output = ( ) > + Send + ' static ) {
6564 tokio:: runtime:: Builder :: new_multi_thread ( )
6665 . enable_all ( )
6766 . build ( )
6867 . unwrap ( )
69- . block_on ( async {
70- let p2p = ClientP2P :: new ( server. into ( ) , port, local_service. into ( ) ) ;
71- match p2p. serv ( ) . await {
72- Err ( e) => {
73- e ! ( "启动失败:{e}" ) ;
74- } ,
75- _ => ( )
76- } ;
68+ . block_on ( async move {
69+ let _ = tokio:: spawn ( future) . await ;
7770 } ) ;
7871}
7972
73+ fn serv_p2p ( ) {
74+ let server = unsafe { SERVER . as_ref ( ) . unwrap ( ) } ;
75+ let port = unsafe { PORT } ;
76+ let local_service = unsafe { LOCAL_SERVICE . as_ref ( ) . unwrap ( ) } ;
77+ task_guard ( async move {
78+ let p2p = ClientP2P :: new ( server. into ( ) , port, local_service. into ( ) ) ;
79+ match p2p. serv ( ) . await {
80+ Err ( e) => {
81+ e ! ( "启动失败:{e}" ) ;
82+ } ,
83+ _ => ( )
84+ } ;
85+ } ) ;
86+ }
87+
8088fn serv ( ) {
8189 let server = unsafe { SERVER . as_ref ( ) . unwrap ( ) } ;
8290 let port = unsafe { PORT } ;
8391 let password = unsafe { PASSWORD . as_ref ( ) . unwrap ( ) } ;
8492 let local_service = unsafe { LOCAL_SERVICE . as_ref ( ) . unwrap ( ) } ;
85- tokio:: runtime:: Builder :: new_multi_thread ( )
86- . enable_all ( )
87- . build ( )
88- . unwrap ( )
89- . block_on ( boot ( server. into ( ) , port, password. into ( ) , local_service. into ( ) ) ) ;
93+ task_guard ( boot ( server. into ( ) , port, password. into ( ) , local_service. into ( ) ) ) ;
9094}
9195
9296async fn boot ( server : String , port : u16 , password : String , local_service : String ) {
0 commit comments