Use threadpool instead of threads directly

This commit is contained in:
p11
2023-07-21 20:38:29 +02:00
parent 1b039b0494
commit 18cc1c9db6
3 changed files with 39 additions and 4 deletions

View File

@@ -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,