xref: /xiu/protocol/hls/src/errors.rs (revision 2f5b0df1)
1 use bytes::BytesMut;
2 use failure::Fail;
3 
4 use libflv::errors::FlvDemuxerError;
5 use rtmp::session::errors::SessionError;
6 
7 use networkio::bytes_errors::BytesWriteError;
8 use rtmp::amf0::errors::Amf0WriteError;
9 use rtmp::cache::errors::MetadataError;
10 
11 use libmpegts::errors::MpegTsError;
12 use std::fmt;
13 // use tokio::sync::mpsc::error::SendError;
14 
15 #[derive(Debug)]
16 pub struct ServerError {
17     pub value: ServerErrorValue,
18 }
19 
20 #[derive(Debug, Fail)]
21 pub enum ServerErrorValue {
22     #[fail(display = "server error")]
23     Error,
24 }
25 #[derive(Debug)]
26 pub struct MediaError {
27     pub value: MediaErrorValue,
28 }
29 
30 #[derive(Debug, Fail)]
31 pub enum MediaErrorValue {
32     #[fail(display = "server error")]
33     Error,
34     #[fail(display = "session error")]
35     SessionError(SessionError),
36 
37     #[fail(display = "amf write error")]
38     Amf0WriteError(Amf0WriteError),
39     #[fail(display = "metadata error")]
40     MetadataError(MetadataError),
41     #[fail(display = "flv demuxer error")]
42     FlvDemuxerError(FlvDemuxerError),
43     #[fail(display = "mpegts error")]
44     MpegTsError(MpegTsError),
45 }
46 
47 impl From<SessionError> for MediaError {
48     fn from(error: SessionError) -> Self {
49         MediaError {
50             value: MediaErrorValue::SessionError(error),
51         }
52     }
53 }
54 
55 impl From<FlvDemuxerError> for MediaError {
56     fn from(error: FlvDemuxerError) -> Self {
57         MediaError {
58             value: MediaErrorValue::FlvDemuxerError(error),
59         }
60     }
61 }
62 
63 impl From<MpegTsError> for MediaError {
64     fn from(error: MpegTsError) -> Self {
65         MediaError {
66             value: MediaErrorValue::MpegTsError(error),
67         }
68     }
69 }
70 
71 impl From<Amf0WriteError> for MediaError {
72     fn from(error: Amf0WriteError) -> Self {
73         MediaError {
74             value: MediaErrorValue::Amf0WriteError(error),
75         }
76     }
77 }
78 
79 impl From<MetadataError> for MediaError {
80     fn from(error: MetadataError) -> Self {
81         MediaError {
82             value: MediaErrorValue::MetadataError(error),
83         }
84     }
85 }
86 
87 impl fmt::Display for MediaError {
88     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
89         fmt::Display::fmt(&self.value, f)
90     }
91 }
92 
93 pub struct HlsError {
94     pub value: HlsErrorValue,
95 }
96 
97 #[derive(Debug, Fail)]
98 pub enum HlsErrorValue {
99     #[fail(display = "server error")]
100     Error,
101     #[fail(display = "session error")]
102     SessionError(SessionError),
103 
104     #[fail(display = "amf write error")]
105     Amf0WriteError(Amf0WriteError),
106     #[fail(display = "metadata error")]
107     MetadataError(MetadataError),
108     #[fail(display = "flv demuxer error")]
109     FlvDemuxerError(FlvDemuxerError),
110     #[fail(display = "media error")]
111     MediaError(MediaError),
112 }
113 
114 impl From<MediaError> for HlsError {
115     fn from(error: MediaError) -> Self {
116         HlsError {
117             value: HlsErrorValue::MediaError(error),
118         }
119     }
120 }
121 
122 impl From<SessionError> for HlsError {
123     fn from(error: SessionError) -> Self {
124         HlsError {
125             value: HlsErrorValue::SessionError(error),
126         }
127     }
128 }
129 
130 impl From<FlvDemuxerError> for HlsError {
131     fn from(error: FlvDemuxerError) -> Self {
132         HlsError {
133             value: HlsErrorValue::FlvDemuxerError(error),
134         }
135     }
136 }
137 
138 impl From<Amf0WriteError> for HlsError {
139     fn from(error: Amf0WriteError) -> Self {
140         HlsError {
141             value: HlsErrorValue::Amf0WriteError(error),
142         }
143     }
144 }
145 
146 impl From<MetadataError> for HlsError {
147     fn from(error: MetadataError) -> Self {
148         HlsError {
149             value: HlsErrorValue::MetadataError(error),
150         }
151     }
152 }
153 
154 impl fmt::Display for HlsError {
155     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
156         fmt::Display::fmt(&self.value, f)
157     }
158 }
159