workflow_websocket/server/
error.rs1use thiserror::Error;
5use tokio::sync::mpsc::error::SendError;
6
7#[derive(Debug, Error)]
9pub enum Error {
10 #[error("{0}")]
11 Other(String),
12
13 #[error("{0}")]
14 Listen(String),
15
16 #[error("Connection timeout")]
19 ConnectionTimeout,
20
21 #[error("Malformed handshake message")]
24 MalformedHandshake,
25
26 #[error("Malformed handshake message")]
29 MalformedMessage,
30
31 #[error("Negotiation failure")]
35 NegotiationFailure,
36
37 #[error("Negotiation failure: {0}")]
42 NegotiationFailureWithReason(String),
43
44 #[error("Response channel send error {0:?}")]
47 ResponseChannelError(#[from] SendError<tungstenite::Message>),
48
49 #[error("WebSocket error: {0}")]
52 WebSocketError(#[from] tungstenite::Error),
53
54 #[error("Connection closed abnormally")]
56 AbnormalClose,
57
58 #[error("Server closed connection")]
60 ServerClose,
61
62 #[error("Error signaling listener shutdown: {0}")]
63 Stop(String),
64
65 #[error("Error signaling listener shutdown: {0}")]
66 Done(String),
67
68 #[error("Error waiting for listener shutdown: {0}")]
69 Join(String),
70
71 #[error(transparent)]
72 IoError(#[from] std::io::Error),
73}
74
75impl From<String> for Error {
76 fn from(value: String) -> Self {
77 Error::Other(value)
78 }
79}