xref: /xiu/protocol/httpflv/src/errors.rs (revision 0c504437)
1 use failure::Fail;
2 use rtmp::session::errors::SessionError;
3 
4 use networkio::bytes_errors::BytesWriteError;
5 use rtmp::amf0::errors::Amf0WriteError;
6 
7 #[derive(Debug)]
8 pub struct ServerError {
9     pub value: ServerErrorValue,
10 }
11 
12 #[derive(Debug, Fail)]
13 pub enum ServerErrorValue {
14     #[fail(display = "server error")]
15     Error,
16 }
17 
18 pub struct HttpFLvError {
19     pub value: HttpFLvErrorValue,
20 }
21 
22 #[derive(Debug, Fail)]
23 pub enum HttpFLvErrorValue {
24     #[fail(display = "server error")]
25     Error,
26     #[fail(display = "session error")]
27     SessionError(SessionError),
28     #[fail(display = "bytes write error")]
29     BytesWriteError(BytesWriteError),
30     #[fail(display = "amf write error")]
31     AmfWriteError(Amf0WriteError),
32 }
33 
34 impl From<SessionError> for HttpFLvError {
35     fn from(error: SessionError) -> Self {
36         HttpFLvError {
37             value: HttpFLvErrorValue::SessionError(error),
38         }
39     }
40 }
41 
42 impl From<BytesWriteError> for HttpFLvError {
43     fn from(error: BytesWriteError) -> Self {
44         HttpFLvError {
45             value: HttpFLvErrorValue::BytesWriteError(error),
46         }
47     }
48 }
49 
50 impl From<Amf0WriteError> for HttpFLvError {
51     fn from(error: Amf0WriteError) -> Self {
52         HttpFLvError {
53             value: HttpFLvErrorValue::Amf0WriteError(error),
54         }
55     }
56 }
57