xref: /xiu/protocol/hls/src/errors.rs (revision abfa5883)
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 use std::fmt;
11 // use tokio::sync::mpsc::error::SendError;
12 
13 #[derive(Debug)]
14 pub struct ServerError {
15     pub value: ServerErrorValue,
16 }
17 
18 #[derive(Debug, Fail)]
19 pub enum ServerErrorValue {
20     #[fail(display = "server error")]
21     Error,
22 }
23 
24 pub struct HlsError {
25     pub value: HlsErrorValue,
26 }
27 
28 #[derive(Debug, Fail)]
29 pub enum HlsErrorValue {
30     #[fail(display = "server error")]
31     Error,
32     #[fail(display = "session error")]
33     SessionError(SessionError),
34 
35     #[fail(display = "amf write error")]
36     Amf0WriteError(Amf0WriteError),
37     #[fail(display = "metadata error")]
38     MetadataError(MetadataError),
39     #[fail(display = "flv demuxer error")]
40     FlvDemuxerError(FlvDemuxerError),
41 }
42 
43 impl From<SessionError> for HlsError {
44     fn from(error: SessionError) -> Self {
45         HlsError {
46             value: HlsErrorValue::SessionError(error),
47         }
48     }
49 }
50 
51 impl From<FlvDemuxerError> for HlsError {
52     fn from(error: FlvDemuxerError) -> Self {
53         HlsError {
54             value: HlsErrorValue::FlvDemuxerError(error),
55         }
56     }
57 }
58 
59 impl From<Amf0WriteError> for HlsError {
60     fn from(error: Amf0WriteError) -> Self {
61         HlsError {
62             value: HlsErrorValue::Amf0WriteError(error),
63         }
64     }
65 }
66 
67 impl From<MetadataError> for HlsError {
68     fn from(error: MetadataError) -> Self {
69         HlsError {
70             value: HlsErrorValue::MetadataError(error),
71         }
72     }
73 }
74 
75 impl fmt::Display for HlsError {
76     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
77         fmt::Display::fmt(&self.value, f)
78     }
79 }
80