pub async fn handle_client(
stream: TcpStream,
router: Arc<Router>,
middlewares: Arc<Vec<Arc<dyn Middleware>>>,
state: Arc<State>,
rate_limit: Arc<RateLimit>,
peer_addr: SocketAddr,
shutdown_rx: Receiver<bool>,
max_body_size: usize,
read_timeout_sec: u64,
write_timeout_sec: u64,
)