xref: /xiu/protocol/httpflv/src/errors.rs (revision ceb0894d)
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 libflv::errors::MuxerError;
10 // use tokio::sync::mpsc::error::SendError;
11 use futures::channel::mpsc::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 HttpFLvError {
25     pub value: HttpFLvErrorValue,
26 }
27 
28 #[derive(Debug, Fail)]
29 pub enum HttpFLvErrorValue {
30     #[fail(display = "server error")]
31     Error,
32     #[fail(display = "session error")]
33     SessionError(SessionError),
34     #[fail(display = "flv muxer error")]
35     MuxerError(MuxerError),
36     #[fail(display = "amf write error")]
37     Amf0WriteError(Amf0WriteError),
38     #[fail(display = "metadata error")]
39     MetadataError(MetadataError),
40     #[fail(display = "tokio mpsc error")]
41     MpscSendError(SendError),
42 }
43 
44 impl From<SessionError> for HttpFLvError {
45     fn from(error: SessionError) -> Self {
46         HttpFLvError {
47             value: HttpFLvErrorValue::SessionError(error),
48         }
49     }
50 }
51 
52 impl From<MuxerError> for HttpFLvError {
53     fn from(error: MuxerError) -> Self {
54         HttpFLvError {
55             value: HttpFLvErrorValue::MuxerError(error),
56         }
57     }
58 }
59 
60 impl From<SendError> for HttpFLvError {
61     fn from(error: SendError) -> Self {
62         HttpFLvError {
63             value: HttpFLvErrorValue::MpscSendError(error),
64         }
65     }
66 }
67 
68 impl From<Amf0WriteError> for HttpFLvError {
69     fn from(error: Amf0WriteError) -> Self {
70         HttpFLvError {
71             value: HttpFLvErrorValue::Amf0WriteError(error),
72         }
73     }
74 }
75 
76 impl From<MetadataError> for HttpFLvError {
77     fn from(error: MetadataError) -> Self {
78         HttpFLvError {
79             value: HttpFLvErrorValue::MetadataError(error),
80         }
81     }
82 }
83 
84 impl fmt::Display for HttpFLvError {
85     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
86         fmt::Display::fmt(&self.value, f)
87     }
88 }
89