karyon_p2p/
error.rs

1use thiserror::Error as ThisError;
2
3pub type Result<T> = std::result::Result<T, Error>;
4
5/// Represents karyon's p2p Error.
6#[derive(ThisError, Debug)]
7pub enum Error {
8    #[error(transparent)]
9    IO(#[from] std::io::Error),
10
11    #[error("Unsupported Protocol Error: {0}")]
12    UnsupportedProtocol(String),
13
14    #[error("Unsupported Endpoint: {0}")]
15    UnsupportedEndpoint(String),
16
17    #[error("PeerID Try From PublicKey Error")]
18    PeerIDTryFromPublicKey,
19
20    #[error("PeerID Try From String Error")]
21    PeerIDTryFromString,
22
23    #[error("Invalid Message Error: {0}")]
24    InvalidMsg(String),
25
26    #[error("Incompatible Peer")]
27    IncompatiblePeer,
28
29    #[error("Timeout Error")]
30    Timeout,
31
32    #[error(transparent)]
33    ParseIntError(#[from] std::num::ParseIntError),
34
35    #[error(transparent)]
36    ParseIntError2(#[from] base64::DecodeError),
37
38    #[error(transparent)]
39    ParseFloatError(#[from] std::num::ParseFloatError),
40
41    #[error(transparent)]
42    SemverError(#[from] semver::Error),
43
44    #[error("Parse Error: {0}")]
45    ParseError(String),
46
47    #[error("Incompatible Version Error: {0}")]
48    IncompatibleVersion(String),
49
50    #[error("Config Error: {0}")]
51    Config(String),
52
53    #[error("Peer Shutdown")]
54    PeerShutdown,
55
56    #[error("Invalid Pong Msg")]
57    InvalidPongMsg,
58
59    #[error("Discovery error: {0}")]
60    Discovery(String),
61
62    #[error("Lookup error: {0}")]
63    Lookup(String),
64
65    #[error("Peer Already Connected")]
66    PeerAlreadyConnected,
67
68    #[error("Yasna Error: {0}")]
69    Yasna(#[from] yasna::ASN1Error),
70
71    #[error("X509 Parser Error: {0}")]
72    X509Parser(#[from] x509_parser::error::X509Error),
73
74    #[error("Rcgen Error: {0}")]
75    Rcgen(#[from] rcgen::Error),
76
77    #[cfg(feature = "smol")]
78    #[error("Tls Error: {0}")]
79    Rustls(#[from] futures_rustls::rustls::Error),
80
81    #[cfg(feature = "tokio")]
82    #[error("Tls Error: {0}")]
83    Rustls(#[from] tokio_rustls::rustls::Error),
84
85    #[error("Invalid DNS Name: {0}")]
86    InvalidDnsNameError(#[from] rustls_pki_types::InvalidDnsNameError),
87
88    #[error("Channel Send Error: {0}")]
89    ChannelSend(String),
90
91    #[error(transparent)]
92    ChannelRecv(#[from] async_channel::RecvError),
93
94    #[error(transparent)]
95    KaryonCore(#[from] karyon_core::error::Error),
96
97    #[error(transparent)]
98    KaryonNet(#[from] karyon_net::Error),
99
100    #[error("Other Error: {0}")]
101    Other(String),
102}
103
104impl<T> From<async_channel::SendError<T>> for Error {
105    fn from(error: async_channel::SendError<T>) -> Self {
106        Error::ChannelSend(error.to_string())
107    }
108}