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