new runtime new thread
This commit is contained in:
parent
18a3a4bfe0
commit
1950328361
@ -11,7 +11,6 @@ use tokio::io::AsyncReadExt;
|
|||||||
use threadpool::ThreadPool;
|
use threadpool::ThreadPool;
|
||||||
use tokio::net::{TcpListener, TcpStream};
|
use tokio::net::{TcpListener, TcpStream};
|
||||||
use tokio::runtime::Runtime;
|
use tokio::runtime::Runtime;
|
||||||
use tokio::sync::OnceCell;
|
|
||||||
use tokio_io_timeout::TimeoutStream;
|
use tokio_io_timeout::TimeoutStream;
|
||||||
|
|
||||||
pub mod error;
|
pub mod error;
|
||||||
@ -93,7 +92,10 @@ where
|
|||||||
|
|
||||||
let server = Arc::new(server);
|
let server = Arc::new(server);
|
||||||
let listener = TcpListener::bind(host).await?;
|
let listener = TcpListener::bind(host).await?;
|
||||||
let handler = Arc::new(OnceCell::new_with(Some(handler)));
|
let old_handler = handler;
|
||||||
|
let handler = Arc::new(move |now_server, sock| {
|
||||||
|
Runtime::new().unwrap().block_on(old_handler(now_server, sock));
|
||||||
|
});
|
||||||
|
|
||||||
let host_clone = String::from(host).clone();
|
let host_clone = String::from(host).clone();
|
||||||
let server_clone = server.clone();
|
let server_clone = server.clone();
|
||||||
@ -107,10 +109,11 @@ where
|
|||||||
sock.set_write_timeout(timeout);
|
sock.set_write_timeout(timeout);
|
||||||
|
|
||||||
let now_server = Arc::clone(&server);
|
let now_server = Arc::clone(&server);
|
||||||
|
let now_handler = Arc::clone(&handler);
|
||||||
|
|
||||||
let handler_clone = handler.clone();
|
threadpool.execute(move || {
|
||||||
|
(now_handler)(now_server, sock);
|
||||||
tokio::spawn((&handler_clone.get().unwrap())(now_server, sock));
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
threadpool.join();
|
threadpool.join();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user