sbp_settings/
error.rs

1pub type BoxedError = Box<dyn std::error::Error + Send + Sync>;
2
3#[derive(Debug)]
4pub enum Error {
5    SenderError(BoxedError),
6    WriteError(WriteError),
7    ParseError,
8    TimedOut,
9    Canceled,
10}
11
12impl From<BoxedError> for Error {
13    fn from(e: BoxedError) -> Self {
14        Self::SenderError(e)
15    }
16}
17
18impl From<WriteError> for Error {
19    fn from(e: WriteError) -> Self {
20        Self::WriteError(e)
21    }
22}
23
24impl std::fmt::Display for Error {
25    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
26        match self {
27            Error::SenderError(err) => write!(f, "{}", err),
28            Error::WriteError(err) => write!(f, "{}", err),
29            Error::ParseError => write!(f, "failed to parse setting"),
30            Error::TimedOut => write!(f, "timed out"),
31            Error::Canceled => write!(f, "canceled"),
32        }
33    }
34}
35
36impl std::error::Error for Error {}
37
38#[derive(Debug, Clone, Copy, PartialEq, Eq)]
39pub enum WriteError {
40    ValueRejected,
41    SettingRejected,
42    ParseFailed,
43    ReadOnly,
44    ModifyDisabled,
45    ServiceFailed,
46    Timeout,
47    Unknown,
48}
49
50impl From<u8> for WriteError {
51    fn from(n: u8) -> Self {
52        match n {
53            1 => WriteError::ValueRejected,
54            2 => WriteError::SettingRejected,
55            3 => WriteError::ParseFailed,
56            4 => WriteError::ReadOnly,
57            5 => WriteError::ModifyDisabled,
58            6 => WriteError::ServiceFailed,
59            7 => WriteError::Timeout,
60            _ => WriteError::Unknown,
61        }
62    }
63}
64
65impl std::fmt::Display for WriteError {
66    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
67        match self {
68            WriteError::ValueRejected => {
69                write!(f, "setting value invalid",)
70            }
71            WriteError::SettingRejected => {
72                write!(f, "setting does not exist")
73            }
74            WriteError::ParseFailed => {
75                write!(f, "could not parse setting value ")
76            }
77            WriteError::ReadOnly => {
78                write!(f, "setting is read only")
79            }
80            WriteError::ModifyDisabled => {
81                write!(f, "setting is not modifiable")
82            }
83            WriteError::ServiceFailed => write!(f, "system failure during setting"),
84            WriteError::Timeout => write!(f, "request wasn't replied in time"),
85            WriteError::Unknown => {
86                write!(f, "unknown settings write response")
87            }
88        }
89    }
90}
91
92impl std::error::Error for WriteError {}