exc_binance/websocket/
error.rs1use thiserror::Error;
2use tower::BoxError;
3
4use crate::http::error::RestError;
5
6use super::protocol::frame::Name;
7
8#[derive(Debug, Error)]
10pub enum WsError {
11 #[error("tokio-tower: {0}")]
13 TokioTower(anyhow::Error),
14 #[error("transport timeout")]
16 TransportTimeout,
17 #[error("transport is broken")]
19 TransportIsBoken,
20 #[error("websocket: {0}")]
22 Websocket(#[from] tokio_tungstenite::tungstenite::Error),
23 #[error("websocket: remote close (received a close frame)")]
25 RemoteClose,
26 #[error("json: {0}")]
28 Json(#[from] serde_json::Error),
29 #[error("duplicate stream id")]
31 DuplicateStreamId,
32 #[error("no response")]
34 NoResponse,
35 #[error("unexpected frame: {0}")]
37 UnexpectedFrame(anyhow::Error),
38 #[error("stream {0} has been subscribed")]
40 StreamSubscribed(Name),
41 #[error("empty stream name")]
43 EmptyStreamName,
44 #[error("unknown connection error: {0}")]
46 UnknownConnection(BoxError),
47 #[error("main stream not found")]
49 MainStreamNotFound,
50 #[error("invalid uri")]
52 InvalidUri(#[from] http::uri::InvalidUri),
53 #[error("login: {0}")]
55 Login(#[from] RestError),
56 #[error("listen key is expired: at={0}")]
58 ListenKeyExpired(i64),
59}