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