exc_binance/websocket/
error.rs

1use thiserror::Error;
2use tower::BoxError;
3
4use crate::http::error::RestError;
5
6use super::protocol::frame::Name;
7
8/// Websocket API errors.
9#[derive(Debug, Error)]
10pub enum WsError {
11    /// Errors from tokio-tower.
12    #[error("tokio-tower: {0}")]
13    TokioTower(anyhow::Error),
14    /// Transport timeout.
15    #[error("transport timeout")]
16    TransportTimeout,
17    /// Transport is borken.
18    #[error("transport is broken")]
19    TransportIsBoken,
20    /// Websocket errors.
21    #[error("websocket: {0}")]
22    Websocket(#[from] tokio_tungstenite::tungstenite::Error),
23    /// Remote close.
24    #[error("websocket: remote close (received a close frame)")]
25    RemoteClose,
26    /// Json errors.
27    #[error("json: {0}")]
28    Json(#[from] serde_json::Error),
29    /// Duplicate stream id.
30    #[error("duplicate stream id")]
31    DuplicateStreamId,
32    /// No response.
33    #[error("no response")]
34    NoResponse,
35    /// Unexpected frame.
36    #[error("unexpected frame: {0}")]
37    UnexpectedFrame(anyhow::Error),
38    /// Stream has been subscribed.
39    #[error("stream {0} has been subscribed")]
40    StreamSubscribed(Name),
41    /// Empty stream name.
42    #[error("empty stream name")]
43    EmptyStreamName,
44    /// Unknown connection error.
45    #[error("unknown connection error: {0}")]
46    UnknownConnection(BoxError),
47    /// Main stream not found.
48    #[error("main stream not found")]
49    MainStreamNotFound,
50    /// Invalid Uri.
51    #[error("invalid uri")]
52    InvalidUri(#[from] http::uri::InvalidUri),
53    /// Login error.
54    #[error("login: {0}")]
55    Login(#[from] RestError),
56    /// Listen key is expired.
57    #[error("listen key is expired: at={0}")]
58    ListenKeyExpired(i64),
59}