hyperi_rustlib/transport/
error.rs1use thiserror::Error;
10
11pub type TransportResult<T> = Result<T, TransportError>;
13
14#[derive(Debug, Error)]
16pub enum TransportError {
17 #[error("transport config error: {0}")]
19 Config(String),
20
21 #[error("transport connection error: {0}")]
23 Connection(String),
24
25 #[error("transport send error: {0}")]
27 Send(String),
28
29 #[error("transport receive error: {0}")]
31 Recv(String),
32
33 #[error("transport commit error: {0}")]
35 Commit(String),
36
37 #[error("transport closed")]
39 Closed,
40
41 #[error("transport operation timed out")]
43 Timeout,
44
45 #[error("transport backpressure")]
47 Backpressure,
48
49 #[error("transport internal error: {0}")]
51 Internal(String),
52
53 #[error("transport admin error: {0}")]
55 Admin(String),
56}
57
58impl TransportError {
59 #[must_use]
61 pub fn is_recoverable(&self) -> bool {
62 matches!(self, Self::Timeout | Self::Backpressure)
63 }
64
65 #[must_use]
67 pub fn is_fatal(&self) -> bool {
68 matches!(self, Self::Closed | Self::Config(_))
69 }
70}