pale/
error.rs

1use thiserror::Error;
2use tokio_tungstenite::tungstenite::{self};
3
4use crate::{NotisResponse, RPCError, RPCRequest, RPCResponse};
5
6pub type Result<T> = std::result::Result<T, PaleError>;
7
8#[derive(Debug, Error)]
9pub enum PaleError {
10    #[error("{0:?}")]
11    RPC(RPCError),
12    #[error("Neither result or error was populated")]
13    NoReturnedRPCData,
14    #[error("Request timeout")]
15    RequestTimeout,
16    #[error("The request either timeout or got None")]
17    RequestTimeoutOrError,
18    #[error("The underlying connection was either dropped or took too long to reconnect")]
19    ClientDisconnected,
20    #[error("The client is already connected")]
21    ClientAlreadyConnected,
22    #[error("Client timeout on connection: {0:?}")]
23    ClientTimeout(#[from] tokio::time::error::Elapsed),
24    #[error(transparent)]
25    Tungstenite(#[from] tungstenite::Error),
26    #[error(transparent)]
27    SerdeJson(#[from] serde_json::Error),
28    #[error(transparent)]
29    InvalidUri(#[from] tokio_tungstenite::tungstenite::http::uri::InvalidUri),
30    #[error(transparent)]
31    RequestSendError(#[from] tokio::sync::broadcast::error::SendError<RPCRequest>),
32    #[error(transparent)]
33    CloseSendError(#[from] tokio::sync::mpsc::error::SendError<()>),
34    #[error(transparent)]
35    ResponseSendError(#[from] tokio::sync::broadcast::error::SendError<RPCResponse>),
36    #[error(transparent)]
37    ValueSendError(#[from] tokio::sync::broadcast::error::SendError<NotisResponse>),
38}