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: {}\n", _0)] 16 BytesWriteError(BytesWriteError), 17 } 18 19 impl From<BytesWriteError> for ControlMessagesError { 20 fn from(error: BytesWriteError) -> Self { 21 ControlMessagesError { 22 value: ControlMessagesErrorValue::BytesWriteError(error), 23 } 24 } 25 } 26 27 impl fmt::Display for ControlMessagesError { 28 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 29 fmt::Display::fmt(&self.value, f) 30 } 31 } 32 33 impl Fail for ControlMessagesError { 34 fn cause(&self) -> Option<&dyn Fail> { 35 self.value.cause() 36 } 37 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: {}\n", _0)] 51 BytesReadError(BytesReadError), 52 } 53 54 impl From<BytesReadError> for ProtocolControlMessageReaderError { 55 fn from(error: BytesReadError) -> Self { 56 ProtocolControlMessageReaderError { 57 value: ProtocolControlMessageReaderErrorValue::BytesReadError(error), 58 } 59 } 60 } 61 62 impl fmt::Display for ProtocolControlMessageReaderError { 63 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 64 fmt::Display::fmt(&self.value, f) 65 } 66 } 67 68 impl Fail for ProtocolControlMessageReaderError { 69 fn cause(&self) -> Option<&dyn Fail> { 70 self.value.cause() 71 } 72 73 fn backtrace(&self) -> Option<&Backtrace> { 74 self.value.backtrace() 75 } 76 } 77