145abfa1fSHarlanC use { 22f7fa101SHarlanC crate::{ 32f7fa101SHarlanC amf0::errors::{Amf0ReadError, Amf0WriteError}, 42f7fa101SHarlanC chunk::errors::PackError, 52f7fa101SHarlanC }, 645abfa1fSHarlanC failure::{Backtrace, Fail}, 745abfa1fSHarlanC std::fmt, 845abfa1fSHarlanC }; 9c2f3fbfaSHarlanC 10c2f3fbfaSHarlanC #[derive(Debug)] 110cb485b3SHarlanC pub struct NetConnectionError { 120cb485b3SHarlanC pub value: NetConnectionErrorValue, 130cb485b3SHarlanC } 14c2f3fbfaSHarlanC #[derive(Debug, Fail)] 150cb485b3SHarlanC pub enum NetConnectionErrorValue { 16*69de9bbdSHarlanC #[fail(display = "amf0 write error: {}", _0)] 170cb485b3SHarlanC Amf0WriteError(Amf0WriteError), 18*69de9bbdSHarlanC #[fail(display = "amf0 read error: {}", _0)] 19dd301212SHarlanC Amf0ReadError(Amf0ReadError), 20*69de9bbdSHarlanC #[fail(display = "pack error")] 212f7fa101SHarlanC PackError(PackError), 220cb485b3SHarlanC } 230cb485b3SHarlanC 240cb485b3SHarlanC impl From<Amf0WriteError> for NetConnectionError { from(error: Amf0WriteError) -> Self250cb485b3SHarlanC fn from(error: Amf0WriteError) -> Self { 260cb485b3SHarlanC NetConnectionError { 270cb485b3SHarlanC value: NetConnectionErrorValue::Amf0WriteError(error), 280cb485b3SHarlanC } 290cb485b3SHarlanC } 300cb485b3SHarlanC } 31dd301212SHarlanC 32dd301212SHarlanC impl From<Amf0ReadError> for NetConnectionError { from(error: Amf0ReadError) -> Self33dd301212SHarlanC fn from(error: Amf0ReadError) -> Self { 34dd301212SHarlanC NetConnectionError { 35dd301212SHarlanC value: NetConnectionErrorValue::Amf0ReadError(error), 36dd301212SHarlanC } 37dd301212SHarlanC } 38dd301212SHarlanC } 39c2f3fbfaSHarlanC 402f7fa101SHarlanC impl From<PackError> for NetConnectionError { from(error: PackError) -> Self412f7fa101SHarlanC fn from(error: PackError) -> Self { 422f7fa101SHarlanC NetConnectionError { 432f7fa101SHarlanC value: NetConnectionErrorValue::PackError(error), 442f7fa101SHarlanC } 452f7fa101SHarlanC } 462f7fa101SHarlanC } 472f7fa101SHarlanC 48c2f3fbfaSHarlanC impl fmt::Display for NetConnectionError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result49c2f3fbfaSHarlanC fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 50c2f3fbfaSHarlanC fmt::Display::fmt(&self.value, f) 51c2f3fbfaSHarlanC } 52c2f3fbfaSHarlanC } 53c2f3fbfaSHarlanC 54c2f3fbfaSHarlanC impl Fail for NetConnectionError { cause(&self) -> Option<&dyn Fail>55c2f3fbfaSHarlanC fn cause(&self) -> Option<&dyn Fail> { 56c2f3fbfaSHarlanC self.value.cause() 57c2f3fbfaSHarlanC } 58c2f3fbfaSHarlanC backtrace(&self) -> Option<&Backtrace>59c2f3fbfaSHarlanC fn backtrace(&self) -> Option<&Backtrace> { 60c2f3fbfaSHarlanC self.value.backtrace() 61c2f3fbfaSHarlanC } 62c2f3fbfaSHarlanC } 63