1 use {
2     crate::amf0::errors::Amf0WriteError,
3     failure::{Backtrace, Fail},
4     networkio::bytes_errors::{BytesReadError, BytesWriteError},
5     std::fmt,
6 };
7 
8 #[derive(Debug)]
9 pub struct EventMessagesError {
10     pub value: EventMessagesErrorValue,
11 }
12 
13 #[derive(Debug, Fail)]
14 pub enum EventMessagesErrorValue {
15     #[fail(display = "amf0 write error: {}\n", _0)]
16     Amf0WriteError(Amf0WriteError),
17     #[fail(display = "bytes write error: {}\n", _0)]
18     BytesWriteError(BytesWriteError),
19     #[fail(display = "bytes read error: {}\n", _0)]
20     BytesReadError(BytesReadError),
21     #[fail(display = "unknow event message type")]
22     UnknowEventMessageType,
23 }
24 
25 impl From<Amf0WriteError> for EventMessagesError {
26     fn from(error: Amf0WriteError) -> Self {
27         EventMessagesError {
28             value: EventMessagesErrorValue::Amf0WriteError(error),
29         }
30     }
31 }
32 
33 impl From<BytesWriteError> for EventMessagesError {
34     fn from(error: BytesWriteError) -> Self {
35         EventMessagesError {
36             value: EventMessagesErrorValue::BytesWriteError(error),
37         }
38     }
39 }
40 
41 impl From<BytesReadError> for EventMessagesError {
42     fn from(error: BytesReadError) -> Self {
43         EventMessagesError {
44             value: EventMessagesErrorValue::BytesReadError(error),
45         }
46     }
47 }
48 
49 impl fmt::Display for EventMessagesError {
50     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
51         fmt::Display::fmt(&self.value, f)
52     }
53 }
54 
55 impl Fail for EventMessagesError {
56     fn cause(&self) -> Option<&dyn Fail> {
57         self.value.cause()
58     }
59 
60     fn backtrace(&self) -> Option<&Backtrace> {
61         self.value.backtrace()
62     }
63 }
64