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
11#[derive(Debug)]
12pub enum Error {
13    XmlError(XmlError),
14    EmitterError(EmitterError),
15    IoError(io::Error),
16    HandshakeError(HandshakeError<TcpStream>),
17    OpenSslErrorStack(ErrorStack),
18    StreamError,
19}
20
21impl From<XmlError> for Error {
22    fn from(err: XmlError) -> Error {
23        Error::XmlError(err)
24    }
25}
26
27impl From<EmitterError> for Error {
28    fn from(err: EmitterError) -> Error {
29        Error::EmitterError(err)
30    }
31}
32
33impl From<io::Error> for Error {
34    fn from(err: io::Error) -> Error {
35        Error::IoError(err)
36    }
37}
38
39impl From<HandshakeError<TcpStream>> for Error {
40    fn from(err: HandshakeError<TcpStream>) -> Error {
41        Error::HandshakeError(err)
42    }
43}
44
45impl From<ErrorStack> for Error {
46    fn from(err: ErrorStack) -> Error {
47        Error::OpenSslErrorStack(err)
48    }
49}
50