xref: /xiu/protocol/rtmp/src/remuxer/errors.rs (revision a4ef5d6c)
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