1use hopr_crypto_packet::errors::PacketError;
2pub use hopr_transport_probe::errors::ProbeError;
3
4#[derive(thiserror::Error, Debug)]
6pub enum NetworkError {
7 #[error("performing an operation on own PeerId")]
8 DisallowedOperationOnOwnPeerIdError,
9}
10use hopr_transport_session::errors::TransportSessionError;
11use thiserror::Error;
12
13pub use crate::protocol::errors::ProtocolError;
14
15#[derive(Error, Debug)]
17pub enum HoprTransportError {
18 #[error("API error: {0}")]
19 Api(String),
20
21 #[error("General error: {0}")]
22 General(#[from] hopr_api::types::primitive::errors::GeneralError),
23
24 #[error("Path error: {0}")]
25 Path(#[from] hopr_api::types::internal::errors::PathError),
26
27 #[error("Protocol error: {0}")]
28 Protocol(#[from] ProtocolError),
29
30 #[error("Probe error: {0}")]
31 Probe(#[from] ProbeError),
32
33 #[error("Transport session error: {0}")]
34 Session(#[from] TransportSessionError),
35
36 #[error("Packet error: {0}")]
37 Packet(#[from] PacketError),
38
39 #[error("Type error: {0}")]
40 Types(#[from] hopr_api::types::internal::errors::CoreTypesError),
41
42 #[error("Network monitoring error: {0}")]
43 NetworkError(#[from] NetworkError),
44
45 #[error(transparent)]
46 ApplicationLayerError(#[from] hopr_protocol_app::errors::ApplicationLayerError),
47
48 #[error("tag allocator error: {0}")]
49 TagAllocator(#[from] hopr_transport_tag_allocator::TagAllocatorError),
50
51 #[error("chain error: {0}")]
52 Chain(#[source] anyhow::Error),
53
54 #[error("unspecified error: {0}")]
55 Other(#[source] anyhow::Error),
56}
57
58impl HoprTransportError {
59 pub fn chain<E: Into<anyhow::Error>>(e: E) -> Self {
60 Self::Chain(e.into())
61 }
62
63 pub fn other<E: Into<anyhow::Error>>(e: E) -> Self {
64 Self::Other(e.into())
65 }
66}
67
68pub type Result<T> = core::result::Result<T, HoprTransportError>;