use crate::{ net::Client, server::Server, wire::{Request, Response}, }; use async_std::sync::{Arc, Receiver, Sender}; use std::net::SocketAddr; /// A handler task wrapper to execute pub struct Handler { peer: SocketAddr, tx: Sender<(SocketAddr, Response)>, server: Arc, } impl Handler { pub fn new(peer: SocketAddr, tx: Sender<(SocketAddr, Response)>, server: Arc) -> Self { Self { peer, tx, server } } /// Start a message handler with a handle to send a reply back to the clients pub async fn run(self, req: Request) { let resp = crate::net::parser::request(req, self.server).await; self.tx.send((self.peer, resp)).await; } }