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("Error: {message}")]
94 Other { message: String },
95}
96
97impl HeliaError {
98 pub fn other(message: impl Into<String>) -> Self {
100 Self::Other {
101 message: message.into(),
102 }
103 }
104
105 pub fn datastore(message: impl Into<String>) -> Self {
107 Self::Datastore {
108 message: message.into(),
109 }
110 }
111
112 pub fn routing(message: impl Into<String>) -> Self {
114 Self::Routing {
115 message: message.into(),
116 }
117 }
118
119 pub fn network(message: impl Into<String>) -> Self {
121 Self::Network {
122 message: message.into(),
123 }
124 }
125
126 pub fn invalid_input(message: impl Into<String>) -> Self {
128 Self::InvalidInput {
129 message: message.into(),
130 }
131 }
132}