helia_interface/
errors.rs1use thiserror::Error;
4
5#[derive(Error, Debug)]
7pub enum HeliaError {
8 #[error("Libp2p error: {0}")]
10 Libp2p(String),
11
12 #[error("CID error: {0}")]
14 Cid(#[from] cid::Error),
15
16 #[error("Multihash error: {0}")]
18 Multihash(#[from] multihash::Error),
19
20 #[error("Multiaddr error: {0}")]
22 Multiaddr(String),
23
24 #[error("I/O error: {0}")]
26 Io(#[from] std::io::Error),
27
28 #[error("Serialization error: {0}")]
30 Serialization(#[from] serde_json::Error),
31
32 #[error("Block not found: {cid}")]
34 BlockNotFound { cid: cid::Cid },
35
36 #[error("Peer not found: {peer_id}")]
38 PeerNotFound { peer_id: libp2p::PeerId },
39
40 #[error("Operation timed out")]
42 Timeout,
43
44 #[error("Operation was aborted")]
46 Aborted,
47
48 #[error("Invalid input: {message}")]
50 InvalidInput { message: String },
51
52 #[error("Node not started")]
54 NodeNotStarted,
55
56 #[error("Node already started")]
58 NodeAlreadyStarted,
59
60 #[error("Codec not found: {code}")]
62 CodecNotFound { code: u64 },
63
64 #[error("Hasher not found: {code}")]
66 HasherNotFound { code: u64 },
67
68 #[error("Pin not found: {cid}")]
70 PinNotFound { cid: cid::Cid },
71
72 #[error("Pin already exists: {cid}")]
74 PinAlreadyExists { cid: cid::Cid },
75
76 #[error("Datastore error: {message}")]
78 Datastore { message: String },
79
80 #[error("Routing error: {message}")]
82 Routing { message: String },
83
84 #[error("Network error: {message}")]
86 Network { message: String },
87
88 #[error("DNS error: {0}")]
90 Dns(#[from] trust_dns_resolver::error::ResolveError),
91
92 #[error("Not found: {0}")]
94 NotFound(String),
95
96 #[error("Operation not supported: {0}")]
98 OperationNotSupported(String),
99
100 #[error("Error: {message}")]
102 Other { message: String },
103}
104
105impl HeliaError {
106 pub fn other(message: impl Into<String>) -> Self {
108 Self::Other {
109 message: message.into(),
110 }
111 }
112
113 pub fn datastore(message: impl Into<String>) -> Self {
115 Self::Datastore {
116 message: message.into(),
117 }
118 }
119
120 pub fn routing(message: impl Into<String>) -> Self {
122 Self::Routing {
123 message: message.into(),
124 }
125 }
126
127 pub fn network(message: impl Into<String>) -> Self {
129 Self::Network {
130 message: message.into(),
131 }
132 }
133
134 pub fn invalid_input(message: impl Into<String>) -> Self {
136 Self::InvalidInput {
137 message: message.into(),
138 }
139 }
140}