xref: /xiu/library/streamhub/src/errors.rs (revision a4ef5d6c)
113bac29aSHarlan use bytesio::bytes_errors::BytesReadError;
213bac29aSHarlan use bytesio::bytes_errors::BytesWriteError;
3*a4ef5d6cSHarlanC use failure::Backtrace;
413bac29aSHarlan 
58e71d710SHarlan use {failure::Fail, std::fmt};
68e71d710SHarlan #[derive(Debug, Fail)]
78e71d710SHarlan pub enum ChannelErrorValue {
869de9bbdSHarlanC     #[fail(display = "no app name")]
98e71d710SHarlan     NoAppName,
1069de9bbdSHarlanC     #[fail(display = "no stream name")]
118e71d710SHarlan     NoStreamName,
1269de9bbdSHarlanC     #[fail(display = "no app or stream name")]
138e71d710SHarlan     NoAppOrStreamName,
1469de9bbdSHarlanC     #[fail(display = "exists")]
158e71d710SHarlan     Exists,
1669de9bbdSHarlanC     #[fail(display = "send error")]
178e71d710SHarlan     SendError,
1869de9bbdSHarlanC     #[fail(display = "send video error")]
198e71d710SHarlan     SendVideoError,
2069de9bbdSHarlanC     #[fail(display = "send audio error")]
218e71d710SHarlan     SendAudioError,
2269de9bbdSHarlanC     #[fail(display = "bytes read error")]
2313bac29aSHarlan     BytesReadError(BytesReadError),
2469de9bbdSHarlanC     #[fail(display = "bytes write error")]
2513bac29aSHarlan     BytesWriteError(BytesWriteError),
2669de9bbdSHarlanC     #[fail(display = "not correct data sender type")]
2780f20d70SHarlanC     NotCorrectDataSenderType,
288e71d710SHarlan }
298e71d710SHarlan #[derive(Debug)]
308e71d710SHarlan pub struct ChannelError {
318e71d710SHarlan     pub value: ChannelErrorValue,
328e71d710SHarlan }
338e71d710SHarlan 
348e71d710SHarlan impl fmt::Display for ChannelError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result358e71d710SHarlan     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
368e71d710SHarlan         fmt::Display::fmt(&self.value, f)
378e71d710SHarlan     }
388e71d710SHarlan }
398e71d710SHarlan 
40*a4ef5d6cSHarlanC impl Fail for ChannelError {
cause(&self) -> Option<&dyn Fail>41*a4ef5d6cSHarlanC     fn cause(&self) -> Option<&dyn Fail> {
42*a4ef5d6cSHarlanC         self.value.cause()
43*a4ef5d6cSHarlanC     }
44*a4ef5d6cSHarlanC 
backtrace(&self) -> Option<&Backtrace>45*a4ef5d6cSHarlanC     fn backtrace(&self) -> Option<&Backtrace> {
46*a4ef5d6cSHarlanC         self.value.backtrace()
47*a4ef5d6cSHarlanC     }
48*a4ef5d6cSHarlanC }
49*a4ef5d6cSHarlanC 
5013bac29aSHarlan impl From<BytesReadError> for ChannelError {
from(error: BytesReadError) -> Self5113bac29aSHarlan     fn from(error: BytesReadError) -> Self {
5213bac29aSHarlan         ChannelError {
5313bac29aSHarlan             value: ChannelErrorValue::BytesReadError(error),
5413bac29aSHarlan         }
5513bac29aSHarlan     }
5613bac29aSHarlan }
5713bac29aSHarlan 
5813bac29aSHarlan impl From<BytesWriteError> for ChannelError {
from(error: BytesWriteError) -> Self5913bac29aSHarlan     fn from(error: BytesWriteError) -> Self {
6013bac29aSHarlan         ChannelError {
6113bac29aSHarlan             value: ChannelErrorValue::BytesWriteError(error),
6213bac29aSHarlan         }
6313bac29aSHarlan     }
6413bac29aSHarlan }
6513bac29aSHarlan 
668e71d710SHarlan // impl From<CacheError> for ChannelError {
678e71d710SHarlan //     fn from(error: CacheError) -> Self {
688e71d710SHarlan //         ChannelError {
698e71d710SHarlan //             value: ChannelErrorValue::CacheError(error),
708e71d710SHarlan //         }
718e71d710SHarlan //     }
728e71d710SHarlan // }
73