1 use bytesio::bytes_errors::BytesReadError; 2 use bytesio::bytes_errors::BytesWriteError; 3 4 use {failure::Fail, std::fmt}; 5 #[derive(Debug, Fail)] 6 pub enum ChannelErrorValue { 7 #[fail(display = "no app name\n")] 8 NoAppName, 9 #[fail(display = "no stream name\n")] 10 NoStreamName, 11 #[fail(display = "no app or stream name\n")] 12 NoAppOrStreamName, 13 #[fail(display = "exists\n")] 14 Exists, 15 #[fail(display = "send error\n")] 16 SendError, 17 #[fail(display = "send video error\n")] 18 SendVideoError, 19 #[fail(display = "send audio error\n")] 20 SendAudioError, 21 #[fail(display = "bytes read error\n")] 22 BytesReadError(BytesReadError), 23 #[fail(display = "bytes write error\n")] 24 BytesWriteError(BytesWriteError), 25 } 26 #[derive(Debug)] 27 pub struct ChannelError { 28 pub value: ChannelErrorValue, 29 } 30 31 impl fmt::Display for ChannelError { 32 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 33 fmt::Display::fmt(&self.value, f) 34 } 35 } 36 37 impl From<BytesReadError> for ChannelError { 38 fn from(error: BytesReadError) -> Self { 39 ChannelError { 40 value: ChannelErrorValue::BytesReadError(error), 41 } 42 } 43 } 44 45 impl From<BytesWriteError> for ChannelError { 46 fn from(error: BytesWriteError) -> Self { 47 ChannelError { 48 value: ChannelErrorValue::BytesWriteError(error), 49 } 50 } 51 } 52 53 // impl From<CacheError> for ChannelError { 54 // fn from(error: CacheError) -> Self { 55 // ChannelError { 56 // value: ChannelErrorValue::CacheError(error), 57 // } 58 // } 59 // } 60