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