pub mod listener;
pub mod session;
pub use listener::*;
pub use session::*;
use std::net::SocketAddr;
use tokio::net::TcpStream;
pub type NetworkPort = u16;
pub enum NetworkStream {
Raw {
peer_addr: SocketAddr,
local_addr: SocketAddr,
stream: TcpStream,
},
TlsServer {
peer_addr: SocketAddr,
local_addr: SocketAddr,
stream: tokio_rustls::server::TlsStream<TcpStream>,
},
TlsClient {
peer_addr: SocketAddr,
local_addr: SocketAddr,
stream: tokio_rustls::client::TlsStream<TcpStream>,
},
}
pub struct NetworkStreamInfo {
pub peer_addr: SocketAddr,
pub local_addr: SocketAddr,
}
impl NetworkStream {
pub fn info(&self) -> NetworkStreamInfo {
NetworkStreamInfo {
peer_addr: self.peer_addr(),
local_addr: self.local_addr(),
}
}
pub fn peer_addr(&self) -> SocketAddr {
match self {
Self::Raw { peer_addr, .. } => *peer_addr,
Self::TlsServer { peer_addr, .. } => *peer_addr,
Self::TlsClient { peer_addr, .. } => *peer_addr,
}
}
pub fn local_addr(&self) -> SocketAddr {
match self {
Self::Raw { local_addr, .. } => *local_addr,
Self::TlsServer { local_addr, .. } => *local_addr,
Self::TlsClient { local_addr, .. } => *local_addr,
}
}
}
#[derive(Clone)]
pub enum IncomingEncryptionMode {
Raw,
Tls(tokio_rustls::TlsAcceptor),
}