xref: /xiu/protocol/rtmp/src/cache/errors.rs (revision ea7993e4)
1 use {
2     crate::{amf0::errors::Amf0WriteError, chunk::errors::PackError},
3     failure::Fail,
4     xflv::errors::FlvDemuxerError,
5     std::fmt,
6 };
7 
8 #[derive(Debug, Fail)]
9 pub enum CacheErrorValue {
10     #[fail(display = "cache tag parse error\n")]
11     DemuxerError(FlvDemuxerError),
12     #[fail(display = "pack error\n")]
13     PackError(PackError),
14 }
15 
16 impl fmt::Display for CacheError {
17     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18         fmt::Display::fmt(&self.value, f)
19     }
20 }
21 #[derive(Debug)]
22 pub struct CacheError {
23     pub value: CacheErrorValue,
24 }
25 
26 impl From<FlvDemuxerError> for CacheError {
27     fn from(error: FlvDemuxerError) -> Self {
28         CacheError {
29             value: CacheErrorValue::DemuxerError(error),
30         }
31     }
32 }
33 
34 impl From<PackError> for CacheError {
35     fn from(error: PackError) -> Self {
36         CacheError {
37             value: CacheErrorValue::PackError(error),
38         }
39     }
40 }
41 
42 #[derive(Debug, Fail)]
43 pub enum MetadataErrorValue {
44     #[fail(display = "metadata tag parse error\n")]
45     DemuxerError(FlvDemuxerError),
46     #[fail(display = "pack error\n")]
47     PackError(PackError),
48     #[fail(display = "amf write error\n")]
49     Amf0WriteError(Amf0WriteError),
50 }
51 #[derive(Debug)]
52 pub struct MetadataError {
53     pub value: MetadataErrorValue,
54 }
55 
56 impl From<Amf0WriteError> for MetadataError {
57     fn from(error: Amf0WriteError) -> Self {
58         MetadataError {
59             value: MetadataErrorValue::Amf0WriteError(error),
60         }
61     }
62 }
63