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