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