xref: /xiu/protocol/httpflv/src/errors.rs (revision 95a688c2)
1 use bytes::BytesMut;
2 use failure::Fail;
3 use rtmp::session::errors::SessionError;
4 
5 use networkio::bytes_errors::BytesWriteError;
6 use rtmp::amf0::errors::Amf0WriteError;
7 use rtmp::cache::errors::MetadataError;
8 use std::fmt;
9 // use tokio::sync::mpsc::error::SendError;
10 use futures::channel::mpsc::SendError;
11 
12 #[derive(Debug)]
13 pub struct ServerError {
14     pub value: ServerErrorValue,
15 }
16 
17 #[derive(Debug, Fail)]
18 pub enum ServerErrorValue {
19     #[fail(display = "server error")]
20     Error,
21 }
22 
23 pub struct HttpFLvError {
24     pub value: HttpFLvErrorValue,
25 }
26 
27 #[derive(Debug, Fail)]
28 pub enum HttpFLvErrorValue {
29     #[fail(display = "server error")]
30     Error,
31     #[fail(display = "session error")]
32     SessionError(SessionError),
33     #[fail(display = "bytes write error")]
34     BytesWriteError(BytesWriteError),
35     #[fail(display = "amf write error")]
36     Amf0WriteError(Amf0WriteError),
37     #[fail(display = "metadata error")]
38     MetadataError(MetadataError),
39     #[fail(display = "tokio mpsc error")]
40     MpscSendError(SendError),
41 }
42 
43 impl From<SessionError> for HttpFLvError {
44     fn from(error: SessionError) -> Self {
45         HttpFLvError {
46             value: HttpFLvErrorValue::SessionError(error),
47         }
48     }
49 }
50 
51 impl From<BytesWriteError> for HttpFLvError {
52     fn from(error: BytesWriteError) -> Self {
53         HttpFLvError {
54             value: HttpFLvErrorValue::BytesWriteError(error),
55         }
56     }
57 }
58 
59 impl From<SendError> for HttpFLvError {
60     fn from(error: SendError) -> Self {
61         HttpFLvError {
62             value: HttpFLvErrorValue::MpscSendError(error),
63         }
64     }
65 }
66 
67 impl From<Amf0WriteError> for HttpFLvError {
68     fn from(error: Amf0WriteError) -> Self {
69         HttpFLvError {
70             value: HttpFLvErrorValue::Amf0WriteError(error),
71         }
72     }
73 }
74 
75 impl From<MetadataError> for HttpFLvError {
76     fn from(error: MetadataError) -> Self {
77         HttpFLvError {
78             value: HttpFLvErrorValue::MetadataError(error),
79         }
80     }
81 }
82 
83 impl fmt::Display for HttpFLvError {
84     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
85         fmt::Display::fmt(&self.value, f)
86     }
87 }
88