xref: /xiu/protocol/rtmp/src/netconnection/errors.rs (revision 69de9bbd)
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