1use thiserror::Error;
18
19#[derive(Debug, Error)]
20pub enum Error {
21 #[error("I/O error: {0}")]
22 Io(#[from] std::io::Error),
23
24 #[error("TLS error: {0}")]
25 Tls(#[from] native_tls::Error),
26
27 #[error("protobuf encode error: {0}")]
28 Encode(#[from] prost::EncodeError),
29
30 #[error("protobuf decode error: {0}")]
31 Decode(#[from] prost::DecodeError),
32
33 #[error("cTrader API error [{error_code}]: {description}")]
34 Api {
35 error_code: String,
36 description: String,
37 },
38
39 #[error("unexpected response payload type: {0}")]
40 UnexpectedPayload(u32),
41
42 #[error("request timed out")]
43 Timeout,
44
45 #[error("channel closed — client disconnected")]
46 Disconnected,
47
48 #[error("unknown payload type: {0}")]
49 UnknownPayloadType(u32),
50}