xref: /xiu/library/container/mpegts/src/errors.rs (revision 53a2e033)
1 use failure::{Backtrace, Fail};
2 use std::fmt;
3 
4 use std::io::Error;
5 
6 use networkio::bytes_errors::BytesReadError;
7 use networkio::bytes_errors::BytesWriteError;
8 
9 #[derive(Debug, Fail)]
10 pub enum MpegTsErrorValue {
11     #[fail(display = "bytes read error\n")]
12     BytesReadError(BytesReadError),
13 
14     #[fail(display = "bytes write error\n")]
15     BytesWriteError(BytesWriteError),
16 
17     #[fail(display = "io error\n")]
18     IOError(Error),
19 
20     #[fail(display = "program number exists\n")]
21     ProgramNumberExists,
22 
23     #[fail(display = "pmt count execeed\n")]
24     PmtCountExeceed,
25 
26     #[fail(display = "stream count execeed\n")]
27     StreamCountExeceed,
28 
29     #[fail(display = "stream not found\n")]
30     StreamNotFound,
31 }
32 #[derive(Debug)]
33 pub struct MpegTsError {
34     pub value: MpegTsErrorValue,
35 }
36 
37 impl From<BytesReadError> for MpegTsError {
38     fn from(error: BytesReadError) -> Self {
39         MpegTsError {
40             value: MpegTsErrorValue::BytesReadError(error),
41         }
42     }
43 }
44 
45 impl From<BytesWriteError> for MpegTsError {
46     fn from(error: BytesWriteError) -> Self {
47         MpegTsError {
48             value: MpegTsErrorValue::BytesWriteError(error),
49         }
50     }
51 }
52 
53 impl From<Error> for MpegTsError {
54     fn from(error: Error) -> Self {
55         MpegTsError {
56             value: MpegTsErrorValue::IOError(error),
57         }
58     }
59 }
60