xref: /xiu/library/container/mpegts/src/errors.rs (revision 69de9bbd)
1a3d19cccSHarlanC use {
288325f54SHarlanC     bytesio::bytes_errors::{BytesReadError, BytesWriteError},
36685cacbSHarlanC     failure::{Backtrace, Fail},
46685cacbSHarlanC     std::fmt,
5a3d19cccSHarlanC     std::io::Error,
6a3d19cccSHarlanC };
715fa2386SHarlanC 
815fa2386SHarlanC #[derive(Debug, Fail)]
915fa2386SHarlanC pub enum MpegTsErrorValue {
10*69de9bbdSHarlanC     #[fail(display = "bytes read error")]
1115fa2386SHarlanC     BytesReadError(BytesReadError),
1215fa2386SHarlanC 
13*69de9bbdSHarlanC     #[fail(display = "bytes write error")]
1415fa2386SHarlanC     BytesWriteError(BytesWriteError),
1515fa2386SHarlanC 
16*69de9bbdSHarlanC     #[fail(display = "io error")]
1715fa2386SHarlanC     IOError(Error),
1815fa2386SHarlanC 
19*69de9bbdSHarlanC     #[fail(display = "program number exists")]
2015fa2386SHarlanC     ProgramNumberExists,
2115fa2386SHarlanC 
22*69de9bbdSHarlanC     #[fail(display = "pmt count execeed")]
2315fa2386SHarlanC     PmtCountExeceed,
2415fa2386SHarlanC 
25*69de9bbdSHarlanC     #[fail(display = "stream count execeed")]
2615fa2386SHarlanC     StreamCountExeceed,
2715fa2386SHarlanC 
28*69de9bbdSHarlanC     #[fail(display = "stream not found")]
2915fa2386SHarlanC     StreamNotFound,
3015fa2386SHarlanC }
3115fa2386SHarlanC #[derive(Debug)]
3215fa2386SHarlanC pub struct MpegTsError {
3315fa2386SHarlanC     pub value: MpegTsErrorValue,
3415fa2386SHarlanC }
3515fa2386SHarlanC 
3615fa2386SHarlanC impl From<BytesReadError> for MpegTsError {
from(error: BytesReadError) -> Self3715fa2386SHarlanC     fn from(error: BytesReadError) -> Self {
3815fa2386SHarlanC         MpegTsError {
3915fa2386SHarlanC             value: MpegTsErrorValue::BytesReadError(error),
4015fa2386SHarlanC         }
4115fa2386SHarlanC     }
4215fa2386SHarlanC }
4315fa2386SHarlanC 
4415fa2386SHarlanC impl From<BytesWriteError> for MpegTsError {
from(error: BytesWriteError) -> Self4515fa2386SHarlanC     fn from(error: BytesWriteError) -> Self {
4615fa2386SHarlanC         MpegTsError {
4715fa2386SHarlanC             value: MpegTsErrorValue::BytesWriteError(error),
4815fa2386SHarlanC         }
4915fa2386SHarlanC     }
5015fa2386SHarlanC }
5115fa2386SHarlanC 
5215fa2386SHarlanC impl From<Error> for MpegTsError {
from(error: Error) -> Self5315fa2386SHarlanC     fn from(error: Error) -> Self {
5415fa2386SHarlanC         MpegTsError {
5515fa2386SHarlanC             value: MpegTsErrorValue::IOError(error),
5615fa2386SHarlanC         }
5715fa2386SHarlanC     }
5815fa2386SHarlanC }
596685cacbSHarlanC 
606685cacbSHarlanC impl fmt::Display for MpegTsError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result616685cacbSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
626685cacbSHarlanC         fmt::Display::fmt(&self.value, f)
636685cacbSHarlanC     }
646685cacbSHarlanC }
656685cacbSHarlanC 
666685cacbSHarlanC impl Fail for MpegTsError {
cause(&self) -> Option<&dyn Fail>676685cacbSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
686685cacbSHarlanC         self.value.cause()
696685cacbSHarlanC     }
706685cacbSHarlanC 
backtrace(&self) -> Option<&Backtrace>716685cacbSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
726685cacbSHarlanC         self.value.backtrace()
736685cacbSHarlanC     }
746685cacbSHarlanC }
75