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 {}