1use std::io;
2use std::convert;
3use std::sync::PoisonError;
4use byteorder;
5use std::sync::mpsc::{SendError, RecvError};
6use protocol;
7
8#[derive(Debug)]
9pub enum ThriftError {
10 Other,
11 NotReady,
12 Str(String),
13 IO(io::Error),
14 ByteOrder(byteorder::Error),
15 PoisonError,
16 RecvError(RecvError),
17 SendError,
18}
19
20pub type ThriftResult<T> = Result<T, ThriftError>;
21
22impl convert::From<io::Error> for ThriftError {
23 fn from(val: io::Error) -> ThriftError {
24 ThriftError::IO(val)
25 }
26}
27
28impl<T> convert::From<SendError<T>> for ThriftError {
29 fn from(_val: SendError<T>) -> ThriftError {
30 ThriftError::SendError
31 }
32}
33
34impl convert::From<protocol::Error> for ThriftError {
35 fn from(_val: protocol::Error) -> ThriftError {
36 ThriftError::Other
37 }
38}
39
40impl convert::From<RecvError> for ThriftError {
41 fn from(_val: RecvError) -> ThriftError {
42 ThriftError::RecvError(RecvError)
43 }
44}
45
46impl convert::From<byteorder::Error> for ThriftError {
47 fn from(val: byteorder::Error) -> ThriftError {
48 ThriftError::ByteOrder(val)
49 }
50}
51
52impl<T> convert::From<PoisonError<T>> for ThriftError {
53 fn from(_val: PoisonError<T>) -> ThriftError {
54 ThriftError::PoisonError
55 }
56}