@@ -31,7 +31,7 @@ pub trait Handler {
3131
3232pub trait HTTPServer : Send + Sync {
3333 fn start ( & self ) ;
34- fn register_handler ( & self , handler : impl Handler + ' static ) ;
34+ fn register_handler ( & self , handler : Box < dyn Handler + Send + Sync > ) ;
3535}
3636
3737pub struct DefaultHTTPServer {
@@ -81,26 +81,28 @@ impl HTTPServer for DefaultHTTPServer {
8181 }
8282 }
8383
84- fn register_handler ( & self , handler : impl Handler + ' static ) {
84+ fn register_handler ( & self , handler : Box < dyn Handler + Send + Sync > ) {
8585 let mut handlers = self . handlers . lock ( ) . unwrap ( ) ;
86- handlers. push ( Box :: new ( handler) ) ;
86+ handlers. push ( handler) ;
8787 }
8888}
8989
90- pub struct HttpService ;
90+ pub struct HttpService {
91+ _server : Box < dyn HTTPServer > ,
92+ }
9193
9294impl HttpService {
9395 pub fn init ( ) -> Self {
94- let server = DefaultHTTPServer :: new ( ) ;
96+ let server = Box :: new ( DefaultHTTPServer :: new ( ) ) ;
9597 #[ cfg( feature = "jemalloc-pprof" ) ]
9698 {
9799 use crate :: http:: pprof:: PProfHandler ;
98- server. register_handler ( PProfHandler :: default ( ) ) ;
100+ server. register_handler ( Box :: new ( PProfHandler :: default ( ) ) ) ;
99101
100102 use crate :: http:: memory_profiling:: MemoryProfileHandler ;
101- server. register_handler ( MemoryProfileHandler :: default ( ) ) ;
103+ server. register_handler ( Box :: new ( MemoryProfileHandler :: default ( ) ) ) ;
102104 }
103105 server. start ( ) ;
104- Self
106+ Self { _server : server }
105107 }
106108}
0 commit comments