1use std::fmt;
2
3use tokio::io;
4
5use blather::Params;
6
7#[derive(Debug)]
8pub enum Error {
9 Blather(String),
10 IO(String),
11 BadFormat(String),
12 SerializeError(String),
13 ServerError(Params),
14 BadState(String),
15 InvalidSize(String),
16 InvalidCredentials,
17 Disconnected,
18 MissingData(String),
19 UnknownData(String)
20}
21
22impl std::error::Error for Error {}
23
24impl fmt::Display for Error {
25 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
26 match &*self {
27 Error::Blather(s) => write!(f, "Msg buffer error; {}", s),
28 Error::IO(s) => write!(f, "I/O error; {}", s),
29 Error::BadFormat(s) => write!(f, "Bad format; {}", s),
30 Error::SerializeError(s) => write!(f, "Unable to serialize; {}", s),
31 Error::ServerError(p) => write!(f, "Server replied: {}", p),
32 Error::BadState(s) => {
33 write!(f, "Encountred an unexpected/bad state: {}", s)
34 }
35 Error::InvalidSize(s) => write!(f, "Invalid size; {}", s),
36 Error::InvalidCredentials => write!(f, "Invalid credentials"),
37 Error::Disconnected => write!(f, "Disconnected"),
38 Error::MissingData(s) => write!(f, "Missing data; {}", s),
39 Error::UnknownData(s) => write!(f, "Unknown data; {}", s)
40 }
41 }
42}
43
44impl From<io::Error> for Error {
45 fn from(err: io::Error) -> Self {
46 Error::IO(err.to_string())
47 }
48}
49
50impl From<blather::Error> for Error {
51 fn from(err: blather::Error) -> Self {
52 Error::Blather(err.to_string())
53 }
54}
55
56