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