1 use { 2 failure::{Backtrace, Fail}, 3 bytesio::bytes_errors::{BytesReadError, BytesWriteError}, 4 std::fmt, 5 }; 6 7 #[derive(Debug)] 8 pub struct ControlMessagesError { 9 pub value: ControlMessagesErrorValue, 10 } 11 12 #[derive(Debug, Fail)] 13 pub enum ControlMessagesErrorValue { 14 //Amf0WriteError(Amf0WriteError), 15 #[fail(display = "bytes write error: {}", _0)] 16 BytesWriteError(BytesWriteError), 17 } 18 19 impl From<BytesWriteError> for ControlMessagesError { from(error: BytesWriteError) -> Self20 fn from(error: BytesWriteError) -> Self { 21 ControlMessagesError { 22 value: ControlMessagesErrorValue::BytesWriteError(error), 23 } 24 } 25 } 26 27 impl fmt::Display for ControlMessagesError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result28 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 29 fmt::Display::fmt(&self.value, f) 30 } 31 } 32 33 impl Fail for ControlMessagesError { cause(&self) -> Option<&dyn Fail>34 fn cause(&self) -> Option<&dyn Fail> { 35 self.value.cause() 36 } 37 backtrace(&self) -> Option<&Backtrace>38 fn backtrace(&self) -> Option<&Backtrace> { 39 self.value.backtrace() 40 } 41 } 42 43 #[derive(Debug)] 44 pub struct ProtocolControlMessageReaderError { 45 pub value: ProtocolControlMessageReaderErrorValue, 46 } 47 48 #[derive(Debug, Fail)] 49 pub enum ProtocolControlMessageReaderErrorValue { 50 #[fail(display = "bytes read error: {}", _0)] 51 BytesReadError(BytesReadError), 52 } 53 54 impl From<BytesReadError> for ProtocolControlMessageReaderError { from(error: BytesReadError) -> Self55 fn from(error: BytesReadError) -> Self { 56 ProtocolControlMessageReaderError { 57 value: ProtocolControlMessageReaderErrorValue::BytesReadError(error), 58 } 59 } 60 } 61 62 impl fmt::Display for ProtocolControlMessageReaderError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 64 fmt::Display::fmt(&self.value, f) 65 } 66 } 67 68 impl Fail for ProtocolControlMessageReaderError { cause(&self) -> Option<&dyn Fail>69 fn cause(&self) -> Option<&dyn Fail> { 70 self.value.cause() 71 } 72 backtrace(&self) -> Option<&Backtrace>73 fn backtrace(&self) -> Option<&Backtrace> { 74 self.value.backtrace() 75 } 76 } 77