new runtime new thread

This commit is contained in:
MeexReay 2024-09-12 16:53:45 +03:00
parent 18a3a4bfe0
commit 1950328361

View File

@ -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();