1 use { 2 crate::amf0::errors::Amf0WriteError, 3 failure::{Backtrace, Fail}, 4 bytesio::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: {}", _0)] 16 Amf0WriteError(Amf0WriteError), 17 #[fail(display = "bytes write error: {}", _0)] 18 BytesWriteError(BytesWriteError), 19 #[fail(display = "bytes read error: {}", _0)] 20 BytesReadError(BytesReadError), 21 #[fail(display = "unknow event message type")] 22 UnknowEventMessageType, 23 } 24 25 impl From<Amf0WriteError> for EventMessagesError { from(error: Amf0WriteError) -> Self26 fn from(error: Amf0WriteError) -> Self { 27 EventMessagesError { 28 value: EventMessagesErrorValue::Amf0WriteError(error), 29 } 30 } 31 } 32 33 impl From<BytesWriteError> for EventMessagesError { from(error: BytesWriteError) -> Self34 fn from(error: BytesWriteError) -> Self { 35 EventMessagesError { 36 value: EventMessagesErrorValue::BytesWriteError(error), 37 } 38 } 39 } 40 41 impl From<BytesReadError> for EventMessagesError { from(error: BytesReadError) -> Self42 fn from(error: BytesReadError) -> Self { 43 EventMessagesError { 44 value: EventMessagesErrorValue::BytesReadError(error), 45 } 46 } 47 } 48 49 impl fmt::Display for EventMessagesError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result50 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 51 fmt::Display::fmt(&self.value, f) 52 } 53 } 54 55 impl Fail for EventMessagesError { cause(&self) -> Option<&dyn Fail>56 fn cause(&self) -> Option<&dyn Fail> { 57 self.value.cause() 58 } 59 backtrace(&self) -> Option<&Backtrace>60 fn backtrace(&self) -> Option<&Backtrace> { 61 self.value.backtrace() 62 } 63 } 64