1 use crate::amf0::errors::Amf0WriteError;
2 
3 use netio::bytes_errors::BytesWriteError;
4 
5 use failure::{Backtrace, Fail};
6 use std::fmt;
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: {}", _0)]
16     Amf0WriteError(Amf0WriteError),
17     #[fail(display = "bytes write error: {}", _0)]
18     BytesWriteError(BytesWriteError),
19 }
20 
21 impl From<Amf0WriteError> for EventMessagesError {
22     fn from(error: Amf0WriteError) -> Self {
23         EventMessagesError {
24             value: EventMessagesErrorValue::Amf0WriteError(error),
25         }
26     }
27 }
28 
29 impl From<BytesWriteError> for EventMessagesError {
30     fn from(error: BytesWriteError) -> Self {
31         EventMessagesError {
32             value: EventMessagesErrorValue::BytesWriteError(error),
33         }
34     }
35 }
36 
37 impl fmt::Display for EventMessagesError {
38     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
39         fmt::Display::fmt(&self.value, f)
40     }
41 }
42 
43 impl Fail for EventMessagesError {
44     fn cause(&self) -> Option<&dyn Fail> {
45         self.value.cause()
46     }
47 
48     fn backtrace(&self) -> Option<&Backtrace> {
49         self.value.backtrace()
50     }
51 }
52