1 use { 2 failure::Fail, 3 futures::channel::mpsc::SendError, 4 xflv::errors::FlvMuxerError, 5 rtmp::{ 6 amf0::errors::Amf0WriteError, cache::errors::MetadataError, session::errors::SessionError, 7 }, 8 std::fmt, 9 }; 10 11 #[derive(Debug)] 12 pub struct ServerError { 13 pub value: ServerErrorValue, 14 } 15 16 #[derive(Debug, Fail)] 17 pub enum ServerErrorValue { 18 #[fail(display = "server error")] 19 Error, 20 } 21 22 pub struct HttpFLvError { 23 pub value: HttpFLvErrorValue, 24 } 25 26 #[derive(Debug, Fail)] 27 pub enum HttpFLvErrorValue { 28 #[fail(display = "server error")] 29 Error, 30 #[fail(display = "session error")] 31 SessionError(SessionError), 32 #[fail(display = "flv muxer error")] 33 MuxerError(FlvMuxerError), 34 #[fail(display = "amf write error")] 35 Amf0WriteError(Amf0WriteError), 36 #[fail(display = "metadata error")] 37 MetadataError(MetadataError), 38 #[fail(display = "tokio mpsc error")] 39 MpscSendError(SendError), 40 #[fail(display = "receiver being dropped")] 41 ReceiverDroppedError(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<FlvMuxerError> for HttpFLvError { 53 fn from(error: FlvMuxerError) -> 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