1use thiserror::Error;
2
3#[derive(Debug, Error, Clone)]
4pub enum IIIError {
5 #[error("iii is not connected")]
6 NotConnected,
7 #[error("invocation timed out")]
8 Timeout,
9 #[error("remote error ({code}): {message}")]
10 Remote { code: String, message: String },
11 #[error("handler error: {0}")]
12 Handler(String),
13 #[error("serialization error: {0}")]
14 Serde(String),
15 #[error("websocket error: {0}")]
16 WebSocket(String),
17}
18
19impl From<serde_json::Error> for IIIError {
20 fn from(err: serde_json::Error) -> Self {
21 IIIError::Serde(err.to_string())
22 }
23}
24
25impl From<tokio_tungstenite::tungstenite::Error> for IIIError {
26 fn from(err: tokio_tungstenite::tungstenite::Error) -> Self {
27 IIIError::WebSocket(err.to_string())
28 }
29}