xref: /xiu/protocol/rtmp/src/cache/errors.rs (revision 69de9bbd)
1067fdd3cSHarlanC use {
2067fdd3cSHarlanC     crate::{amf0::errors::Amf0WriteError, chunk::errors::PackError},
3ccd9a1faSHarlan     bytesio::bytes_errors::BytesReadError,
46685cacbSHarlanC     failure::{Backtrace, Fail},
57f3675feSHarlan     h264_decoder::errors::H264Error,
6067fdd3cSHarlanC     std::fmt,
706c50324SHarlan     xflv::errors::{FlvDemuxerError, MpegAacError, Mpeg4AvcHevcError},
8067fdd3cSHarlanC };
901b8b8feSHarlanC 
1001b8b8feSHarlanC #[derive(Debug, Fail)]
1101b8b8feSHarlanC pub enum CacheErrorValue {
12*69de9bbdSHarlanC     #[fail(display = "cache tag parse error")]
13abfa5883SHarlanC     DemuxerError(FlvDemuxerError),
14*69de9bbdSHarlanC     #[fail(display = "mpeg aac error")]
15ccd9a1faSHarlan     MpegAacError(MpegAacError),
16*69de9bbdSHarlanC     #[fail(display = "mpeg avc error")]
1706c50324SHarlan     MpegAvcError(Mpeg4AvcHevcError),
18*69de9bbdSHarlanC     #[fail(display = "pack error")]
1901b8b8feSHarlanC     PackError(PackError),
20*69de9bbdSHarlanC     #[fail(display = "read bytes error")]
21ccd9a1faSHarlan     BytesReadError(BytesReadError),
22*69de9bbdSHarlanC     #[fail(display = "h264 error")]
23ccd9a1faSHarlan     H264Error(H264Error),
2401b8b8feSHarlanC }
2501b8b8feSHarlanC 
26a4485a6eSHarlanC impl fmt::Display for CacheError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result27a4485a6eSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28a4485a6eSHarlanC         fmt::Display::fmt(&self.value, f)
29a4485a6eSHarlanC     }
30a4485a6eSHarlanC }
31a4485a6eSHarlanC #[derive(Debug)]
3201b8b8feSHarlanC pub struct CacheError {
3301b8b8feSHarlanC     pub value: CacheErrorValue,
3401b8b8feSHarlanC }
3501b8b8feSHarlanC 
36abfa5883SHarlanC impl From<FlvDemuxerError> for CacheError {
from(error: FlvDemuxerError) -> Self37abfa5883SHarlanC     fn from(error: FlvDemuxerError) -> Self {
3801b8b8feSHarlanC         CacheError {
39abfa5883SHarlanC             value: CacheErrorValue::DemuxerError(error),
4001b8b8feSHarlanC         }
4101b8b8feSHarlanC     }
4201b8b8feSHarlanC }
4301b8b8feSHarlanC 
44ccd9a1faSHarlan impl From<H264Error> for CacheError {
from(error: H264Error) -> Self45ccd9a1faSHarlan     fn from(error: H264Error) -> Self {
46ccd9a1faSHarlan         CacheError {
47ccd9a1faSHarlan             value: CacheErrorValue::H264Error(error),
48ccd9a1faSHarlan         }
49ccd9a1faSHarlan     }
50ccd9a1faSHarlan }
51ccd9a1faSHarlan 
52ccd9a1faSHarlan impl From<MpegAacError> for CacheError {
from(error: MpegAacError) -> Self53ccd9a1faSHarlan     fn from(error: MpegAacError) -> Self {
54ccd9a1faSHarlan         CacheError {
55ccd9a1faSHarlan             value: CacheErrorValue::MpegAacError(error),
56ccd9a1faSHarlan         }
57ccd9a1faSHarlan     }
58ccd9a1faSHarlan }
59ccd9a1faSHarlan 
6006c50324SHarlan impl From<Mpeg4AvcHevcError> for CacheError {
from(error: Mpeg4AvcHevcError) -> Self6106c50324SHarlan     fn from(error: Mpeg4AvcHevcError) -> Self {
62ccd9a1faSHarlan         CacheError {
63ccd9a1faSHarlan             value: CacheErrorValue::MpegAvcError(error),
64ccd9a1faSHarlan         }
65ccd9a1faSHarlan     }
66ccd9a1faSHarlan }
67ccd9a1faSHarlan 
68ccd9a1faSHarlan impl From<BytesReadError> for CacheError {
from(error: BytesReadError) -> Self69ccd9a1faSHarlan     fn from(error: BytesReadError) -> Self {
70ccd9a1faSHarlan         CacheError {
71ccd9a1faSHarlan             value: CacheErrorValue::BytesReadError(error),
72ccd9a1faSHarlan         }
73ccd9a1faSHarlan     }
74ccd9a1faSHarlan }
75ccd9a1faSHarlan 
7601b8b8feSHarlanC impl From<PackError> for CacheError {
from(error: PackError) -> Self7701b8b8feSHarlanC     fn from(error: PackError) -> Self {
7801b8b8feSHarlanC         CacheError {
7901b8b8feSHarlanC             value: CacheErrorValue::PackError(error),
8001b8b8feSHarlanC         }
8101b8b8feSHarlanC     }
8201b8b8feSHarlanC }
8361bf3e1bSHarlanC 
848e71d710SHarlan impl Fail for CacheError {
cause(&self) -> Option<&dyn Fail>858e71d710SHarlan     fn cause(&self) -> Option<&dyn Fail> {
868e71d710SHarlan         self.value.cause()
878e71d710SHarlan     }
888e71d710SHarlan 
backtrace(&self) -> Option<&Backtrace>898e71d710SHarlan     fn backtrace(&self) -> Option<&Backtrace> {
908e71d710SHarlan         self.value.backtrace()
918e71d710SHarlan     }
928e71d710SHarlan }
938e71d710SHarlan 
9461bf3e1bSHarlanC #[derive(Debug, Fail)]
9561bf3e1bSHarlanC pub enum MetadataErrorValue {
96*69de9bbdSHarlanC     #[fail(display = "metadata tag parse error")]
97abfa5883SHarlanC     DemuxerError(FlvDemuxerError),
98*69de9bbdSHarlanC     #[fail(display = "pack error")]
9961bf3e1bSHarlanC     PackError(PackError),
100*69de9bbdSHarlanC     #[fail(display = "amf write error")]
101067fdd3cSHarlanC     Amf0WriteError(Amf0WriteError),
10261bf3e1bSHarlanC }
103a4485a6eSHarlanC #[derive(Debug)]
10461bf3e1bSHarlanC pub struct MetadataError {
105067fdd3cSHarlanC     pub value: MetadataErrorValue,
106067fdd3cSHarlanC }
107067fdd3cSHarlanC 
108067fdd3cSHarlanC impl From<Amf0WriteError> for MetadataError {
from(error: Amf0WriteError) -> Self109067fdd3cSHarlanC     fn from(error: Amf0WriteError) -> Self {
110067fdd3cSHarlanC         MetadataError {
111067fdd3cSHarlanC             value: MetadataErrorValue::Amf0WriteError(error),
112067fdd3cSHarlanC         }
113067fdd3cSHarlanC     }
11461bf3e1bSHarlanC }
1156685cacbSHarlanC 
1166685cacbSHarlanC impl Fail for MetadataError {
cause(&self) -> Option<&dyn Fail>1176685cacbSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
1186685cacbSHarlanC         self.value.cause()
1196685cacbSHarlanC     }
1206685cacbSHarlanC 
backtrace(&self) -> Option<&Backtrace>1216685cacbSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
1226685cacbSHarlanC         self.value.backtrace()
1236685cacbSHarlanC     }
1246685cacbSHarlanC }
1256685cacbSHarlanC 
1266685cacbSHarlanC impl fmt::Display for MetadataError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result1276685cacbSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1286685cacbSHarlanC         fmt::Display::fmt(&self.value, f)
1296685cacbSHarlanC     }
1306685cacbSHarlanC }
131