oxigdal_websocket/
error.rs1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, Error>;
7
8#[derive(Error, Debug)]
10pub enum Error {
11 #[error("WebSocket error: {0}")]
13 WebSocket(String),
14
15 #[error("Connection error: {0}")]
17 Connection(String),
18
19 #[error("Protocol error: {0}")]
21 Protocol(String),
22
23 #[error("Serialization error: {0}")]
25 Serialization(String),
26
27 #[error("Compression error: {0}")]
29 Compression(String),
30
31 #[error("Broadcast error: {0}")]
33 Broadcast(String),
34
35 #[error("Room error: {0}")]
37 Room(String),
38
39 #[error("Subscription error: {0}")]
41 Subscription(String),
42
43 #[error("Channel error: {0}")]
45 Channel(String),
46
47 #[error("Timeout error: {0}")]
49 Timeout(String),
50
51 #[error("Invalid message: {0}")]
53 InvalidMessage(String),
54
55 #[error("Invalid state: {0}")]
57 InvalidState(String),
58
59 #[error("Resource exhausted: {0}")]
61 ResourceExhausted(String),
62
63 #[error("IO error: {0}")]
65 Io(#[from] std::io::Error),
66
67 #[error("JSON error: {0}")]
69 Json(#[from] serde_json::Error),
70
71 #[error("MessagePack error: {0}")]
73 MessagePack(String),
74
75 #[error("OxiGDAL core error: {0}")]
77 Core(#[from] oxigdal_core::error::OxiGdalError),
78}
79
80impl From<tokio_tungstenite::tungstenite::Error> for Error {
81 fn from(err: tokio_tungstenite::tungstenite::Error) -> Self {
82 Error::WebSocket(err.to_string())
83 }
84}
85
86impl<T> From<tokio::sync::mpsc::error::SendError<T>> for Error {
87 fn from(err: tokio::sync::mpsc::error::SendError<T>) -> Self {
88 Error::Channel(err.to_string())
89 }
90}
91
92impl From<rmp_serde::encode::Error> for Error {
93 fn from(err: rmp_serde::encode::Error) -> Self {
94 Error::MessagePack(err.to_string())
95 }
96}
97
98impl From<rmp_serde::decode::Error> for Error {
99 fn from(err: rmp_serde::decode::Error) -> Self {
100 Error::MessagePack(err.to_string())
101 }
102}