Skip to main content

karyon_net/
error.rs

1use thiserror::Error as ThisError;
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5#[derive(ThisError, Debug)]
6pub enum Error {
7    #[error(transparent)]
8    IO(#[from] std::io::Error),
9
10    #[error("Try From Endpoint Error")]
11    TryFromEndpoint,
12
13    #[error("Unsupported Endpoint: {0}")]
14    UnsupportedEndpoint(String),
15
16    #[error("Parse Endpoint Error: {0}")]
17    ParseEndpoint(String),
18
19    #[error("Buffer Full: {0}")]
20    BufferFull(String),
21
22    #[error("Missing Config: {0}")]
23    MissingConfig(String),
24
25    #[error("SOCKS5 Error: {0}")]
26    Socks5(String),
27
28    #[error("TLS Config Error: {0}")]
29    TlsConfig(String),
30
31    #[error("QUIC Config Error: {0}")]
32    QuicConfigError(String),
33
34    #[error("Connection Closed")]
35    ConnectionClosed,
36
37    #[cfg(feature = "ws")]
38    #[error("WebSocket Error: {0}")]
39    WsError(#[from] Box<async_tungstenite::tungstenite::Error>),
40
41    #[cfg(feature = "tls")]
42    #[error("Invalid DNS Name: {0}")]
43    InvalidDnsNameError(#[from] rustls_pki_types::InvalidDnsNameError),
44
45    #[cfg(feature = "quic")]
46    #[error("QUIC Connection Error: {0}")]
47    QuicConnection(#[from] quinn::ConnectionError),
48
49    #[cfg(feature = "quic")]
50    #[error("QUIC Connect Error: {0}")]
51    QuicConnect(#[from] quinn::ConnectError),
52
53    #[error(transparent)]
54    BincodeDecode(#[from] bincode::error::DecodeError),
55
56    #[error(transparent)]
57    BincodeEncode(#[from] bincode::error::EncodeError),
58
59    #[error(transparent)]
60    KaryonCore(#[from] karyon_core::Error),
61}