tendermint_abci/
error.rs

1//! tendermint-abci errors
2
3use 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}