tokio_ddmw/
err.rs

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// vim: set ft=rust et sw=2 ts=2 sts=2 cinoptions=2 tw=79 :