xref: /xiu/protocol/httpflv/src/errors.rs (revision a3d19ccc)
1*a3d19cccSHarlanC use {
2*a3d19cccSHarlanC     failure::Fail,
3*a3d19cccSHarlanC     futures::channel::mpsc::SendError,
4*a3d19cccSHarlanC     libflv::errors::MuxerError,
5*a3d19cccSHarlanC     rtmp::{
6*a3d19cccSHarlanC         amf0::errors::Amf0WriteError, cache::errors::MetadataError, session::errors::SessionError,
7*a3d19cccSHarlanC     },
8*a3d19cccSHarlanC     std::fmt,
9*a3d19cccSHarlanC };
105377b641SHarlanC 
110c504437SHarlanC #[derive(Debug)]
120c504437SHarlanC pub struct ServerError {
130c504437SHarlanC     pub value: ServerErrorValue,
140c504437SHarlanC }
150c504437SHarlanC 
160c504437SHarlanC #[derive(Debug, Fail)]
170c504437SHarlanC pub enum ServerErrorValue {
180c504437SHarlanC     #[fail(display = "server error")]
190c504437SHarlanC     Error,
200c504437SHarlanC }
210c504437SHarlanC 
220c504437SHarlanC pub struct HttpFLvError {
230c504437SHarlanC     pub value: HttpFLvErrorValue,
240c504437SHarlanC }
250c504437SHarlanC 
260c504437SHarlanC #[derive(Debug, Fail)]
270c504437SHarlanC pub enum HttpFLvErrorValue {
280c504437SHarlanC     #[fail(display = "server error")]
290c504437SHarlanC     Error,
300c504437SHarlanC     #[fail(display = "session error")]
310c504437SHarlanC     SessionError(SessionError),
329eba8d65SHarlanC     #[fail(display = "flv muxer error")]
339eba8d65SHarlanC     MuxerError(MuxerError),
340c504437SHarlanC     #[fail(display = "amf write error")]
35783195d9SHarlanC     Amf0WriteError(Amf0WriteError),
36783195d9SHarlanC     #[fail(display = "metadata error")]
37783195d9SHarlanC     MetadataError(MetadataError),
38e05ab47bSHarlanC     #[fail(display = "tokio mpsc error")]
3995a688c2SHarlanC     MpscSendError(SendError),
400c504437SHarlanC }
410c504437SHarlanC 
420c504437SHarlanC impl From<SessionError> for HttpFLvError {
430c504437SHarlanC     fn from(error: SessionError) -> Self {
440c504437SHarlanC         HttpFLvError {
450c504437SHarlanC             value: HttpFLvErrorValue::SessionError(error),
460c504437SHarlanC         }
470c504437SHarlanC     }
480c504437SHarlanC }
490c504437SHarlanC 
509eba8d65SHarlanC impl From<MuxerError> for HttpFLvError {
519eba8d65SHarlanC     fn from(error: MuxerError) -> Self {
520c504437SHarlanC         HttpFLvError {
539eba8d65SHarlanC             value: HttpFLvErrorValue::MuxerError(error),
540c504437SHarlanC         }
550c504437SHarlanC     }
560c504437SHarlanC }
570c504437SHarlanC 
5895a688c2SHarlanC impl From<SendError> for HttpFLvError {
5995a688c2SHarlanC     fn from(error: SendError) -> Self {
60e05ab47bSHarlanC         HttpFLvError {
61e05ab47bSHarlanC             value: HttpFLvErrorValue::MpscSendError(error),
62e05ab47bSHarlanC         }
63e05ab47bSHarlanC     }
64e05ab47bSHarlanC }
65e05ab47bSHarlanC 
660c504437SHarlanC impl From<Amf0WriteError> for HttpFLvError {
670c504437SHarlanC     fn from(error: Amf0WriteError) -> Self {
680c504437SHarlanC         HttpFLvError {
690c504437SHarlanC             value: HttpFLvErrorValue::Amf0WriteError(error),
700c504437SHarlanC         }
710c504437SHarlanC     }
720c504437SHarlanC }
73783195d9SHarlanC 
74783195d9SHarlanC impl From<MetadataError> for HttpFLvError {
75783195d9SHarlanC     fn from(error: MetadataError) -> Self {
76783195d9SHarlanC         HttpFLvError {
77783195d9SHarlanC             value: HttpFLvErrorValue::MetadataError(error),
78783195d9SHarlanC         }
79783195d9SHarlanC     }
80783195d9SHarlanC }
8195a688c2SHarlanC 
8295a688c2SHarlanC impl fmt::Display for HttpFLvError {
8395a688c2SHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
8495a688c2SHarlanC         fmt::Display::fmt(&self.value, f)
8595a688c2SHarlanC     }
8695a688c2SHarlanC }
87