1e2687b83SHarlanC use { 2e2687b83SHarlanC crate::{ 3e2687b83SHarlanC amf0::errors::Amf0ReadError, 4e2687b83SHarlanC protocol_control_messages::errors::ProtocolControlMessageReaderError, 5e2687b83SHarlanC user_control_messages::errors::EventMessagesError, 6e2687b83SHarlanC }, 7e2687b83SHarlanC failure::{Backtrace, Fail}, 888325f54SHarlanC bytesio::bytes_errors::BytesReadError, 9e2687b83SHarlanC std::fmt, 10e2687b83SHarlanC }; 11c2f3fbfaSHarlanC 12c2f3fbfaSHarlanC #[derive(Debug, Fail)] 13dd301212SHarlanC pub enum MessageErrorValue { 14*69de9bbdSHarlanC #[fail(display = "bytes read error: {}", _0)] 154ff0d3acSHarlanC BytesReadError(BytesReadError), 16c2f3fbfaSHarlanC #[fail(display = "unknow read state")] 17dd301212SHarlanC UnknowReadState, 18*69de9bbdSHarlanC #[fail(display = "amf0 read error: {}", _0)] 19dd301212SHarlanC Amf0ReadError(Amf0ReadError), 20c2f3fbfaSHarlanC #[fail(display = "unknown message type")] 2178ae0aa7SHarlanC UnknowMessageType, 22*69de9bbdSHarlanC #[fail(display = "protocol control message read error: {}", _0)] 238a60cc5aSHarlanC ProtocolControlMessageReaderError(ProtocolControlMessageReaderError), 24*69de9bbdSHarlanC #[fail(display = "user control message read error: {}", _0)] 2597f0b5afSHarlanC EventMessagesError(EventMessagesError), 26dd301212SHarlanC } 27dd301212SHarlanC 28c2f3fbfaSHarlanC #[derive(Debug)] 29dd301212SHarlanC pub struct MessageError { 30dd301212SHarlanC pub value: MessageErrorValue, 31dd301212SHarlanC } 32dd301212SHarlanC 33dd301212SHarlanC impl From<MessageErrorValue> for MessageError { from(val: MessageErrorValue) -> Self34dd301212SHarlanC fn from(val: MessageErrorValue) -> Self { 35dd301212SHarlanC MessageError { value: val } 36dd301212SHarlanC } 37dd301212SHarlanC } 38dd301212SHarlanC 394ff0d3acSHarlanC impl From<BytesReadError> for MessageError { from(error: BytesReadError) -> Self404ff0d3acSHarlanC fn from(error: BytesReadError) -> Self { 41dd301212SHarlanC MessageError { 424ff0d3acSHarlanC value: MessageErrorValue::BytesReadError(error), 43dd301212SHarlanC } 44dd301212SHarlanC } 45dd301212SHarlanC } 46dd301212SHarlanC 47dd301212SHarlanC impl From<Amf0ReadError> for MessageError { from(error: Amf0ReadError) -> Self48dd301212SHarlanC fn from(error: Amf0ReadError) -> Self { 49dd301212SHarlanC MessageError { 50dd301212SHarlanC value: MessageErrorValue::Amf0ReadError(error), 51dd301212SHarlanC } 52dd301212SHarlanC } 53dd301212SHarlanC } 548a60cc5aSHarlanC 558a60cc5aSHarlanC impl From<ProtocolControlMessageReaderError> for MessageError { from(error: ProtocolControlMessageReaderError) -> Self568a60cc5aSHarlanC fn from(error: ProtocolControlMessageReaderError) -> Self { 578a60cc5aSHarlanC MessageError { 588a60cc5aSHarlanC value: MessageErrorValue::ProtocolControlMessageReaderError(error), 598a60cc5aSHarlanC } 608a60cc5aSHarlanC } 618a60cc5aSHarlanC } 62c2f3fbfaSHarlanC 6397f0b5afSHarlanC impl From<EventMessagesError> for MessageError { from(error: EventMessagesError) -> Self6497f0b5afSHarlanC fn from(error: EventMessagesError) -> Self { 6597f0b5afSHarlanC MessageError { 6697f0b5afSHarlanC value: MessageErrorValue::EventMessagesError(error), 6797f0b5afSHarlanC } 6897f0b5afSHarlanC } 6997f0b5afSHarlanC } 7097f0b5afSHarlanC 71c2f3fbfaSHarlanC impl fmt::Display for MessageError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result72c2f3fbfaSHarlanC fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 73c2f3fbfaSHarlanC fmt::Display::fmt(&self.value, f) 74c2f3fbfaSHarlanC } 75c2f3fbfaSHarlanC } 76c2f3fbfaSHarlanC 77c2f3fbfaSHarlanC impl Fail for MessageError { cause(&self) -> Option<&dyn Fail>78c2f3fbfaSHarlanC fn cause(&self) -> Option<&dyn Fail> { 79c2f3fbfaSHarlanC self.value.cause() 80c2f3fbfaSHarlanC } 81c2f3fbfaSHarlanC backtrace(&self) -> Option<&Backtrace>82c2f3fbfaSHarlanC fn backtrace(&self) -> Option<&Backtrace> { 83c2f3fbfaSHarlanC self.value.backtrace() 84c2f3fbfaSHarlanC } 85c2f3fbfaSHarlanC } 86