use std::net::SocketAddr;
use crate::connection::Connection;
#[derive(Default, Clone, Debug)]
pub struct EndpointConfig;
#[derive(Default, Clone, Debug)]
pub struct ServerConfig;
#[derive(Default, Clone, Debug)]
pub struct ClientConfig;
pub struct Endpoint {
config: EndpointConfig,
server_config: Option<ServerConfig>,
}
pub struct Connecting;
pub struct Incoming;
impl Endpoint {
pub fn new(config: EndpointConfig, server_config: Option<ServerConfig>) -> Self {
Self { config, server_config }
}
pub async fn bind(_addr: SocketAddr) -> std::io::Result<Self> {
Ok(Self::new(EndpointConfig::default(), None))
}
pub async fn connect(&self, _addr: SocketAddr, _server_name: &str) -> std::io::Result<Connecting> {
Ok(Connecting)
}
pub async fn accept(&self) -> Option<Incoming> {
None
}
}
impl Connecting {
pub async fn await_connection(self) -> std::io::Result<Connection> {
Ok(Connection::new())
}
}
impl Incoming {
pub async fn accept(self) -> std::io::Result<Connection> {
Ok(Connection::new())
}
}