hopr_lib/
errors.rs

1pub use hopr_transport::errors::{HoprTransportError, ProbeError, ProtocolError};
2use thiserror::Error;
3
4use crate::state::HoprState;
5
6/// Enumeration of status errors thrown from this library.
7#[derive(Error, Debug)]
8pub enum HoprStatusError {
9    #[error("HOPR status general error: '{0}'")]
10    General(String),
11
12    #[error("HOPR status error: '{0}'")]
13    NotThereYet(HoprState, String),
14}
15
16/// Enumeration of errors thrown from this library.
17#[derive(Error, Debug)]
18pub enum HoprLibError {
19    #[error("HOPR lib Error: '{0}'")]
20    GeneralError(String),
21
22    #[error("configuration validation failed: {0}")]
23    ConfigurationError(#[from] validator::ValidationErrors),
24
25    #[error(transparent)]
26    DbError(anyhow::Error),
27
28    #[error(transparent)]
29    ChainError(anyhow::Error),
30
31    #[error(transparent)]
32    StatusError(#[from] HoprStatusError),
33
34    #[error(transparent)]
35    TransportError(#[from] HoprTransportError),
36
37    #[error(transparent)]
38    TypeError(#[from] hopr_primitive_types::errors::GeneralError),
39
40    #[error(transparent)]
41    NetworkTypeError(#[from] hopr_network_types::errors::NetworkTypeError),
42
43    #[error(transparent)]
44    Other(anyhow::Error),
45}
46
47pub type Result<T> = std::result::Result<T, HoprLibError>;
48
49impl HoprLibError {
50    pub fn chain<E: Into<anyhow::Error>>(e: E) -> Self {
51        Self::ChainError(e.into())
52    }
53
54    pub fn db<E: Into<anyhow::Error>>(e: E) -> Self {
55        Self::DbError(e.into())
56    }
57
58    pub fn other(e: impl Into<anyhow::Error>) -> Self {
59        Self::Other(e.into())
60    }
61}