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