Use threadpool instead of threads directly
This commit is contained in:
10
src/main.rs
10
src/main.rs
@@ -6,7 +6,6 @@ use std::{
|
||||
net::{TcpListener, TcpStream},
|
||||
path::Path,
|
||||
sync::{Arc, Mutex},
|
||||
thread,
|
||||
};
|
||||
|
||||
use data_stream::{
|
||||
@@ -16,12 +15,15 @@ use data_stream::{
|
||||
use maud::html;
|
||||
use percent_encoding::percent_decode_str;
|
||||
use pukram2html::{convert, convert_extended, convert_subheader, Settings};
|
||||
use threadpool::ThreadPool;
|
||||
|
||||
mod request;
|
||||
use request::Request;
|
||||
|
||||
fn main() {
|
||||
let mut context = Context::default();
|
||||
let pool = ThreadPool::new(4);
|
||||
|
||||
let mut args = env::args();
|
||||
args.next();
|
||||
let address = args.next().unwrap_or("127.0.0.1:8080".to_string());
|
||||
@@ -36,7 +38,7 @@ fn main() {
|
||||
continue;
|
||||
};
|
||||
|
||||
context.handle_connection(stream);
|
||||
context.handle_connection(stream, &pool);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +120,7 @@ struct Context {
|
||||
}
|
||||
|
||||
impl Context {
|
||||
fn handle_connection(&mut self, mut stream: TcpStream) {
|
||||
fn handle_connection(&mut self, mut stream: TcpStream, pool: &ThreadPool) {
|
||||
let Some(request) = Request::from(&stream) else {
|
||||
eprintln!("Invalid request!");
|
||||
return;
|
||||
@@ -207,7 +209,7 @@ impl Context {
|
||||
.clone(),
|
||||
};
|
||||
|
||||
thread::spawn(move || {
|
||||
pool.execute(move || {
|
||||
handle_relative_connection(
|
||||
info,
|
||||
stream,
|
||||
|
||||
Reference in New Issue
Block a user