113bac29aSHarlan use { 213bac29aSHarlan crate::{ 313bac29aSHarlan amf0::errors::Amf0WriteError, cache::errors::MetadataError, session::errors::SessionError, 413bac29aSHarlan }, 513bac29aSHarlan bytesio::bytes_errors::{BytesReadError, BytesWriteError}, 6b36cf5daSHarlan failure::Fail, 713bac29aSHarlan std::fmt, 8*a4ef5d6cSHarlanC streamhub::errors::ChannelError, 913bac29aSHarlan tokio::sync::broadcast::error::RecvError, 10*a4ef5d6cSHarlanC tokio::sync::oneshot::error::RecvError as OneshotRecvError, 1113bac29aSHarlan xflv::errors::FlvMuxerError, 1206c50324SHarlan xflv::errors::Mpeg4AvcHevcError, 1313bac29aSHarlan }; 1413bac29aSHarlan 1513bac29aSHarlan pub struct RtmpRemuxerError { 1613bac29aSHarlan pub value: RtmpRemuxerErrorValue, 1713bac29aSHarlan } 1813bac29aSHarlan 1913bac29aSHarlan #[derive(Debug, Fail)] 2013bac29aSHarlan pub enum RtmpRemuxerErrorValue { 2113bac29aSHarlan #[fail(display = "hls error")] 2213bac29aSHarlan Error, 2369de9bbdSHarlanC #[fail(display = "session error:{}", _0)] 2413bac29aSHarlan SessionError(#[cause] SessionError), 2569de9bbdSHarlanC #[fail(display = "amf write error:{}", _0)] 2613bac29aSHarlan Amf0WriteError(#[cause] Amf0WriteError), 2769de9bbdSHarlanC #[fail(display = "metadata error:{}", _0)] 2813bac29aSHarlan MetadataError(#[cause] MetadataError), 2969de9bbdSHarlanC #[fail(display = "receive error:{}", _0)] 3013bac29aSHarlan RecvError(#[cause] RecvError), 3169de9bbdSHarlanC #[fail(display = "bytes read error:{}", _0)] 3213bac29aSHarlan BytesReadError(#[cause] BytesReadError), 3369de9bbdSHarlanC #[fail(display = "bytes write error:{}", _0)] 3413bac29aSHarlan BytesWriteError(#[cause] BytesWriteError), 3569de9bbdSHarlanC #[fail(display = "mpeg avc error")] 3606c50324SHarlan MpegAvcError(#[cause] Mpeg4AvcHevcError), 3769de9bbdSHarlanC #[fail(display = "flv muxer error")] 3813bac29aSHarlan FlvMuxerError(#[cause] FlvMuxerError), 3969de9bbdSHarlanC #[fail(display = "stream hub event send error")] 4013bac29aSHarlan StreamHubEventSendErr, 41*a4ef5d6cSHarlanC #[fail(display = "event execute error: {}", _0)] 42*a4ef5d6cSHarlanC ChannelError(#[cause] ChannelError), 43*a4ef5d6cSHarlanC #[fail(display = "tokio: oneshot receiver err: {}", _0)] 44*a4ef5d6cSHarlanC OneshotRecvError(#[cause] OneshotRecvError), 45*a4ef5d6cSHarlanC #[fail(display = "Channel receive error")] 46*a4ef5d6cSHarlanC ChannelRecvError, 4713bac29aSHarlan } 4813bac29aSHarlan impl From<RecvError> for RtmpRemuxerError { from(error: RecvError) -> Self4913bac29aSHarlan fn from(error: RecvError) -> Self { 5013bac29aSHarlan RtmpRemuxerError { 5113bac29aSHarlan value: RtmpRemuxerErrorValue::RecvError(error), 5213bac29aSHarlan } 5313bac29aSHarlan } 5413bac29aSHarlan } 5513bac29aSHarlan 5613bac29aSHarlan impl From<SessionError> for RtmpRemuxerError { from(error: SessionError) -> Self5713bac29aSHarlan fn from(error: SessionError) -> Self { 5813bac29aSHarlan RtmpRemuxerError { 5913bac29aSHarlan value: RtmpRemuxerErrorValue::SessionError(error), 6013bac29aSHarlan } 6113bac29aSHarlan } 6213bac29aSHarlan } 6313bac29aSHarlan 6413bac29aSHarlan impl From<Amf0WriteError> for RtmpRemuxerError { from(error: Amf0WriteError) -> Self6513bac29aSHarlan fn from(error: Amf0WriteError) -> Self { 6613bac29aSHarlan RtmpRemuxerError { 6713bac29aSHarlan value: RtmpRemuxerErrorValue::Amf0WriteError(error), 6813bac29aSHarlan } 6913bac29aSHarlan } 7013bac29aSHarlan } 7113bac29aSHarlan 7213bac29aSHarlan impl From<MetadataError> for RtmpRemuxerError { from(error: MetadataError) -> Self7313bac29aSHarlan fn from(error: MetadataError) -> Self { 7413bac29aSHarlan RtmpRemuxerError { 7513bac29aSHarlan value: RtmpRemuxerErrorValue::MetadataError(error), 7613bac29aSHarlan } 7713bac29aSHarlan } 7813bac29aSHarlan } 7913bac29aSHarlan 8013bac29aSHarlan impl From<BytesReadError> for RtmpRemuxerError { from(error: BytesReadError) -> Self8113bac29aSHarlan fn from(error: BytesReadError) -> Self { 8213bac29aSHarlan RtmpRemuxerError { 8313bac29aSHarlan value: RtmpRemuxerErrorValue::BytesReadError(error), 8413bac29aSHarlan } 8513bac29aSHarlan } 8613bac29aSHarlan } 8713bac29aSHarlan 8813bac29aSHarlan impl From<BytesWriteError> for RtmpRemuxerError { from(error: BytesWriteError) -> Self8913bac29aSHarlan fn from(error: BytesWriteError) -> Self { 9013bac29aSHarlan RtmpRemuxerError { 9113bac29aSHarlan value: RtmpRemuxerErrorValue::BytesWriteError(error), 9213bac29aSHarlan } 9313bac29aSHarlan } 9413bac29aSHarlan } 9513bac29aSHarlan 9606c50324SHarlan impl From<Mpeg4AvcHevcError> for RtmpRemuxerError { from(error: Mpeg4AvcHevcError) -> Self9706c50324SHarlan fn from(error: Mpeg4AvcHevcError) -> Self { 9813bac29aSHarlan RtmpRemuxerError { 9913bac29aSHarlan value: RtmpRemuxerErrorValue::MpegAvcError(error), 10013bac29aSHarlan } 10113bac29aSHarlan } 10213bac29aSHarlan } 10313bac29aSHarlan 10413bac29aSHarlan impl From<FlvMuxerError> for RtmpRemuxerError { from(error: FlvMuxerError) -> Self10513bac29aSHarlan fn from(error: FlvMuxerError) -> Self { 10613bac29aSHarlan RtmpRemuxerError { 10713bac29aSHarlan value: RtmpRemuxerErrorValue::FlvMuxerError(error), 10813bac29aSHarlan } 10913bac29aSHarlan } 11013bac29aSHarlan } 11113bac29aSHarlan 112*a4ef5d6cSHarlanC impl From<ChannelError> for RtmpRemuxerError { from(error: ChannelError) -> Self113*a4ef5d6cSHarlanC fn from(error: ChannelError) -> Self { 114*a4ef5d6cSHarlanC RtmpRemuxerError { 115*a4ef5d6cSHarlanC value: RtmpRemuxerErrorValue::ChannelError(error), 116*a4ef5d6cSHarlanC } 117*a4ef5d6cSHarlanC } 118*a4ef5d6cSHarlanC } 119*a4ef5d6cSHarlanC 120*a4ef5d6cSHarlanC impl From<OneshotRecvError> for RtmpRemuxerError { from(error: OneshotRecvError) -> Self121*a4ef5d6cSHarlanC fn from(error: OneshotRecvError) -> Self { 122*a4ef5d6cSHarlanC RtmpRemuxerError { 123*a4ef5d6cSHarlanC value: RtmpRemuxerErrorValue::OneshotRecvError(error), 124*a4ef5d6cSHarlanC } 125*a4ef5d6cSHarlanC } 126*a4ef5d6cSHarlanC } 127*a4ef5d6cSHarlanC 12813bac29aSHarlan impl fmt::Display for RtmpRemuxerError { fmt(&self, f: &mut fmt::Formatter) -> fmt::Result12913bac29aSHarlan fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 13013bac29aSHarlan fmt::Display::fmt(&self.value, f) 13113bac29aSHarlan } 13213bac29aSHarlan } 133