1use native_tls::TlsStream;
2use std::io;
3use std::net::TcpStream;
4use thiserror::Error;
5use tungstenite::ClientHandshake;
6
7pub type Result<T, E = EIMZOError> = std::result::Result<T, E>;
13
14#[derive(Error, Debug)]
16pub enum EIMZOError {
17 #[error("A websocket server went down: {0}")]
18 Io(#[from] io::Error),
19 #[error("JsonParse error: {0}")]
20 JsonParse(#[from] serde_json::Error),
21 #[error("UrlParseError error: {0}")]
22 UrlParseError(#[from] url::ParseError),
23 #[error("TlsError error: {0}")]
25 TlsError(#[from] native_tls::Error),
26 #[error("TlsHandshakeError error: {0}")]
27 TlsHandshakeError(#[from] native_tls::HandshakeError<TcpStream>),
28 #[error("HandshakeError error: {0}")]
29 HandshakeError(#[from] tungstenite::HandshakeError<ClientHandshake<TlsStream<TcpStream>>>),
30
31 #[error("Websocket error: {0}")]
32 Websocket(#[from] tungstenite::Error),
33 #[error(
34 "Server closed the connection. Maybe reconnect again with `EIMZO::new()`,
35 {0:?}"
36 )]
37 WebsocketClosed(Option<tungstenite::protocol::CloseFrame>),
38 #[error(
39 "Return type is not tungstenite::Message, it's something Binary or Frame.
40 Other Text, Close, Ping, Pong cases handled on client.rs
41 {0:?}"
42 )]
43 NotTextWebsocketMessage(tungstenite::Message),
44
45 #[error("Error while changing SDK language {0}")]
46 LocaleError(#[from] locale_rs::error::LocaleError),
47
48 #[error("Something aggressive is going on")]
50 Unknown,
51}