error.rs

 1use std::io;
 2
 3use std::net::TcpStream;
 4
 5use openssl::ssl::HandshakeError;
 6use openssl::error::ErrorStack;
 7
 8use xml::reader::Error as XmlError;
 9use xml::writer::Error as EmitterError;
10
11use minidom::Error as MinidomError;
12
13#[derive(Debug)]
14pub enum Error {
15    XmlError(XmlError),
16    EmitterError(EmitterError),
17    IoError(io::Error),
18    HandshakeError(HandshakeError<TcpStream>),
19    OpenSslErrorStack(ErrorStack),
20    MinidomError(MinidomError),
21    StreamError,
22    EndOfDocument,
23}
24
25impl From<XmlError> for Error {
26    fn from(err: XmlError) -> Error {
27        Error::XmlError(err)
28    }
29}
30
31impl From<EmitterError> for Error {
32    fn from(err: EmitterError) -> Error {
33        Error::EmitterError(err)
34    }
35}
36
37impl From<io::Error> for Error {
38    fn from(err: io::Error) -> Error {
39        Error::IoError(err)
40    }
41}
42
43impl From<HandshakeError<TcpStream>> for Error {
44    fn from(err: HandshakeError<TcpStream>) -> Error {
45        Error::HandshakeError(err)
46    }
47}
48
49impl From<ErrorStack> for Error {
50    fn from(err: ErrorStack) -> Error {
51        Error::OpenSslErrorStack(err)
52    }
53}
54
55impl From<MinidomError> for Error {
56    fn from(err: MinidomError) -> Error {
57        Error::MinidomError(err)
58    }
59}