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