1use flex_error::{define_error, DisplayError};
4use tendermint_proto::v0_38::abci::response::Value;
5
6define_error! {
7 Error {
8 Io
9 [ DisplayError<std::io::Error> ]
10 | _ | { "I/O error" },
11
12 Encode
13 [ DisplayError<prost::EncodeError> ]
14 | _ | { "error encoding protocol buffer" },
15
16 Decode
17 [ DisplayError<prost::DecodeError> ]
18 | _ | { "error encoding protocol buffer" },
19
20 ServerConnectionTerminated
21 | _ | { "server connection terminated" },
22
23 MalformedServerResponse
24 | _ | { "malformed server response" },
25
26 UnexpectedServerResponseType
27 {
28 expected: String,
29 got: Value,
30 }
31 | e | {
32 format_args!("unexpected server response type: expected {0}, but got {1:?}",
33 e.expected, e.got)
34 },
35
36 ChannelSend
37 | _ | { "channel send error" },
38
39 ChannelRecv
40 [ DisplayError<std::sync::mpsc::RecvError> ]
41 | _ | { "channel recv error" },
42 }
43}
44
45impl Error {
46 pub fn send<T>(_e: std::sync::mpsc::SendError<T>) -> Error {
47 Error::channel_send()
48 }
49}