xref: /xiu/protocol/rtmp/src/netstream/errors.rs (revision 69de9bbd)
145abfa1fSHarlanC use {
245abfa1fSHarlanC     crate::{amf0::errors::Amf0WriteError, chunk::errors::PackError},
345abfa1fSHarlanC     failure::{Backtrace, Fail},
445abfa1fSHarlanC     std::fmt,
545abfa1fSHarlanC };
6c2f3fbfaSHarlanC 
7c2f3fbfaSHarlanC #[derive(Debug)]
8069ff577SHarlanC pub struct NetStreamError {
9069ff577SHarlanC     pub value: NetStreamErrorValue,
10069ff577SHarlanC }
11069ff577SHarlanC 
12c2f3fbfaSHarlanC #[derive(Debug, Fail)]
13069ff577SHarlanC pub enum NetStreamErrorValue {
14*69de9bbdSHarlanC     #[fail(display = "amf0 write error: {}", _0)]
15069ff577SHarlanC     Amf0WriteError(Amf0WriteError),
16c2f3fbfaSHarlanC     #[fail(display = "invalid max chunk size")]
17069ff577SHarlanC     InvalidMaxChunkSize { chunk_size: usize },
18*69de9bbdSHarlanC     #[fail(display = "pack error")]
19383722b2SHarlanC     PackError(PackError),
20069ff577SHarlanC }
21069ff577SHarlanC 
22069ff577SHarlanC impl From<Amf0WriteError> for NetStreamError {
from(error: Amf0WriteError) -> Self23069ff577SHarlanC     fn from(error: Amf0WriteError) -> Self {
24069ff577SHarlanC         NetStreamError {
25069ff577SHarlanC             value: NetStreamErrorValue::Amf0WriteError(error),
26069ff577SHarlanC         }
27069ff577SHarlanC     }
28069ff577SHarlanC }
29c2f3fbfaSHarlanC 
30383722b2SHarlanC impl From<PackError> for NetStreamError {
from(error: PackError) -> Self31383722b2SHarlanC     fn from(error: PackError) -> Self {
32383722b2SHarlanC         NetStreamError {
33383722b2SHarlanC             value: NetStreamErrorValue::PackError(error),
34383722b2SHarlanC         }
35383722b2SHarlanC     }
36383722b2SHarlanC }
37383722b2SHarlanC 
38c2f3fbfaSHarlanC impl fmt::Display for NetStreamError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result39c2f3fbfaSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
40c2f3fbfaSHarlanC         fmt::Display::fmt(&self.value, f)
41c2f3fbfaSHarlanC     }
42c2f3fbfaSHarlanC }
43c2f3fbfaSHarlanC 
44c2f3fbfaSHarlanC impl Fail for NetStreamError {
cause(&self) -> Option<&dyn Fail>45c2f3fbfaSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
46c2f3fbfaSHarlanC         self.value.cause()
47c2f3fbfaSHarlanC     }
48c2f3fbfaSHarlanC 
backtrace(&self) -> Option<&Backtrace>49c2f3fbfaSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
50c2f3fbfaSHarlanC         self.value.backtrace()
51c2f3fbfaSHarlanC     }
52c2f3fbfaSHarlanC }
53