Skip to main content

rs_netty/
error.rs

1use std::net::AddrParseError;
2
3/// Error type returned by rs-netty operations.
4#[derive(Debug, thiserror::Error)]
5pub enum Error {
6    /// Underlying I/O error.
7    #[error("io error: {0}")]
8    Io(#[from] std::io::Error),
9
10    /// Socket address parsing failed.
11    #[error("address parse error: {0}")]
12    AddrParse(#[from] AddrParseError),
13
14    /// Tokio task join failed.
15    #[error("task join error: {0}")]
16    Join(#[from] tokio::task::JoinError),
17
18    /// Connection or socket is closed.
19    #[error("connection closed")]
20    Closed,
21
22    /// Command channel is closed.
23    #[error("channel closed")]
24    ChannelClosed,
25
26    /// Stream frame exceeded the configured limit.
27    #[error("frame too large: current={current}, max={max}")]
28    FrameTooLarge { current: usize, max: usize },
29
30    /// Datagram payload exceeded the configured limit.
31    #[error("datagram too large: current={current}, max={max}")]
32    DatagramTooLarge { current: usize, max: usize },
33
34    /// Decoder returned an error.
35    #[error("decode error: {0}")]
36    Decode(String),
37
38    /// Encoder returned an error.
39    #[error("encode error: {0}")]
40    Encode(String),
41
42    /// Pipeline stage returned a framework-level error.
43    #[error("pipeline error: {0}")]
44    Pipeline(String),
45
46    /// TLS configuration or handshake failed.
47    #[error("tls error: {0}")]
48    Tls(String),
49
50    /// Datagram write required a default peer but none was available.
51    #[error("missing default peer for datagram write")]
52    MissingDatagramPeer,
53}
54
55/// Convenience result alias for rs-netty operations.
56pub type Result<T> = std::result::Result<T, Error>;