wetstring/src/connection.rs

31 lines
875 B
Rust

use crate::{Request, RequestParser};
use mio::{net::TcpStream, Token};
use std::net::SocketAddr;
pub struct Connection<Req: Request> {
pub stream: TcpStream,
pub state: ConnectionState<Req>,
pub client_address: SocketAddr,
pub token: Token,
}
impl<Req: Request> Connection<Req> {
pub fn new(stream: TcpStream, client_address: SocketAddr, token: Token) -> Self {
Self {
stream,
client_address,
token,
state: ConnectionState::Incoming(Req::Parser::new(client_address)),
}
}
}
pub enum ConnectionState<Req: Request> {
/// The request has not yet been fully received.
Incoming(Req::Parser),
/// The request is valid and needs to be processed.
Processing(Req),
/// A response has been generated for the request and is waiting to be sent.
Outgoing(Req::Response),
}