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