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