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 tokio::net::{TcpListener, TcpStream};
use tokio::runtime::Runtime;
use tokio::sync::OnceCell;
use tokio_io_timeout::TimeoutStream;
pub mod error;
@ -93,7 +92,10 @@ where
let server = Arc::new(server);
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 server_clone = server.clone();
@ -107,10 +109,11 @@ where
sock.set_write_timeout(timeout);
let now_server = Arc::clone(&server);
let now_handler = Arc::clone(&handler);
let handler_clone = handler.clone();
tokio::spawn((&handler_clone.get().unwrap())(now_server, sock));
threadpool.execute(move || {
(now_handler)(now_server, sock);
});
}
threadpool.join();