Skip to main content

pb_mapper_client/server/
error.rs

1use std::time::Duration;
2
3use snafu::Snafu;
4
5// The `common::error::Error` spellings below are the source type on nearly every
6// variant; aliasing keeps them as they were.
7use pb_mapper_core as common;
8
9#[derive(Debug, Snafu)]
10#[snafu(visibility(pub(super)))]
11pub enum Error {
12    #[snafu(display("send register request error"))]
13    SendRegisterReq { source: common::error::Error },
14    #[snafu(display("encode register request error"))]
15    EncodeRegisterReq { source: common::error::Error },
16    #[snafu(display("read register response error"))]
17    ReadRegisterResp { source: common::error::Error },
18    #[snafu(display("decode register response error"))]
19    DecodeRegisterResp { source: common::error::Error },
20    #[snafu(display("register response not `PbConnResponse::Register`"))]
21    RegisterRespNotMatch,
22    #[snafu(display("read stream request error"))]
23    ReadStreamReq { source: common::error::Error },
24    #[snafu(display("decode stream request error"))]
25    DecodeStreamReq { source: common::error::Error },
26    #[snafu(display("encode pb connect stream request error"))]
27    EncodePbConnStreamReq { source: common::error::Error },
28    #[snafu(display("connect local stream error"))]
29    ConnectLocalStream { source: std::io::Error },
30    #[snafu(display("connect remote stream error"))]
31    ConnectRemoteStream { source: std::io::Error },
32    #[snafu(display("write pb conn stream request error"))]
33    WritePbConnStreamReq { source: common::error::Error },
34    #[snafu(display("decode pb conn stream response error"))]
35    DecodePbConnStreamResp { source: common::error::Error },
36    #[snafu(display("we expected `PbConnResponse::Stream`,but actual response is `{resp}`"))]
37    PbConnStreamRespNotMatch {
38        // Structured representation of response
39        resp: String,
40    },
41    #[snafu(display("Failed to write ping message"))]
42    WritePingMsg { source: common::error::Error },
43    #[snafu(display("Failed to encode ping message"))]
44    EncodePingMsg { source: common::error::Error },
45    #[snafu(display("Failed to write stream ack message"))]
46    WriteStreamAckMsg { source: common::error::Error },
47    #[snafu(display("Failed to encode stream ack message"))]
48    EncodeStreamAckMsg { source: common::error::Error },
49    #[snafu(display("control writer closed while scheduling `{action}`"))]
50    ControlWriterClosed { action: &'static str },
51    #[snafu(display("header msg tool:`{action}` create failed!"))]
52    CreateHeaderTool {
53        // Must be `reader/writer`
54        action: &'static str,
55        source: common::error::Error,
56    },
57    #[snafu(display("control io `{action}` timed out after {timeout:?}"))]
58    ControlIoTimeout {
59        action: &'static str,
60        timeout: Duration,
61    },
62}
63
64pub type Result<T, E = Error> = std::result::Result<T, E>;