pub mod auto_eject;
pub mod client;
pub mod conn;
pub mod dispatcher;
pub mod dnode_client;
pub mod dnode_proxy;
pub mod dnode_server;
pub mod listener;
pub mod pool;
pub mod proxy;
pub mod server;
pub mod tls;
#[cfg(feature = "quic")]
pub mod quic;
use std::io;
use thiserror::Error;
pub use self::auto_eject::{AutoEject, AutoEjectState};
pub use self::client::{ClientHandler, ClientLoopOutcome};
pub use self::conn::{Conn, ConnHandle, ConnStats};
pub use self::dispatcher::{
DispatchOutcome, Dispatcher, NoopDispatcher, OutboundEnvelope, ServerSink,
};
pub use self::dnode_client::DnodeClientHandler;
pub use self::dnode_proxy::DnodeProxy;
pub use self::dnode_server::DnodeServerConn;
pub use self::listener::{bind_dual_stack, BindOptions};
pub use self::pool::{ConnFactory, ConnHandle as PoolHandle, ConnPool, ConnPoolConfig};
pub use self::proxy::Proxy;
pub use self::server::ServerConn;
pub use self::tls::{
acceptor_from, connector_from, load_client_config, load_server_config, server_name_owned,
SharedTlsProfiles, TlsClientTransport, TlsError, TlsServerTransport,
};
#[derive(Debug, Error)]
pub enum NetError {
#[error("io error: {0}")]
Io(#[from] io::Error),
#[error("protocol parse error: {0}")]
Parse(String),
#[error("dnode error: {0}")]
Dnode(String),
#[error("server has been auto-ejected")]
Ejected,
#[error("connection pool exhausted")]
PoolExhausted,
#[error("connection pool shut down")]
PoolShutdown,
#[error("connection closed")]
Closed,
#[error("tls error: {0}")]
Tls(String),
}
impl From<crate::net::tls::TlsError> for NetError {
fn from(value: crate::net::tls::TlsError) -> Self {
NetError::Tls(value.to_string())
}
}
impl From<crate::proto::dnode::DnodeError> for NetError {
fn from(value: crate::proto::dnode::DnodeError) -> Self {
NetError::Dnode(format!("{value:?}"))
}
}