Skip to main content

hopr_transport/
errors.rs

1use hopr_crypto_packet::errors::PacketError;
2pub use hopr_transport_probe::errors::ProbeError;
3
4/// Errors from the network peer store.
5#[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/// Errors produced by the crate.
16#[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
68/// Result produced by the crate, uses the [HoprTransportError] as the error type.
69pub type Result<T> = core::result::Result<T, HoprTransportError>;