xref: /xiu/library/streamhub/src/errors.rs (revision a4ef5d6c)
1 use bytesio::bytes_errors::BytesReadError;
2 use bytesio::bytes_errors::BytesWriteError;
3 use failure::Backtrace;
4 
5 use {failure::Fail, std::fmt};
6 #[derive(Debug, Fail)]
7 pub enum ChannelErrorValue {
8     #[fail(display = "no app name")]
9     NoAppName,
10     #[fail(display = "no stream name")]
11     NoStreamName,
12     #[fail(display = "no app or stream name")]
13     NoAppOrStreamName,
14     #[fail(display = "exists")]
15     Exists,
16     #[fail(display = "send error")]
17     SendError,
18     #[fail(display = "send video error")]
19     SendVideoError,
20     #[fail(display = "send audio error")]
21     SendAudioError,
22     #[fail(display = "bytes read error")]
23     BytesReadError(BytesReadError),
24     #[fail(display = "bytes write error")]
25     BytesWriteError(BytesWriteError),
26     #[fail(display = "not correct data sender type")]
27     NotCorrectDataSenderType,
28 }
29 #[derive(Debug)]
30 pub struct ChannelError {
31     pub value: ChannelErrorValue,
32 }
33 
34 impl fmt::Display for ChannelError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result35     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
36         fmt::Display::fmt(&self.value, f)
37     }
38 }
39 
40 impl Fail for ChannelError {
cause(&self) -> Option<&dyn Fail>41     fn cause(&self) -> Option<&dyn Fail> {
42         self.value.cause()
43     }
44 
backtrace(&self) -> Option<&Backtrace>45     fn backtrace(&self) -> Option<&Backtrace> {
46         self.value.backtrace()
47     }
48 }
49 
50 impl From<BytesReadError> for ChannelError {
from(error: BytesReadError) -> Self51     fn from(error: BytesReadError) -> Self {
52         ChannelError {
53             value: ChannelErrorValue::BytesReadError(error),
54         }
55     }
56 }
57 
58 impl From<BytesWriteError> for ChannelError {
from(error: BytesWriteError) -> Self59     fn from(error: BytesWriteError) -> Self {
60         ChannelError {
61             value: ChannelErrorValue::BytesWriteError(error),
62         }
63     }
64 }
65 
66 // impl From<CacheError> for ChannelError {
67 //     fn from(error: CacheError) -> Self {
68 //         ChannelError {
69 //             value: ChannelErrorValue::CacheError(error),
70 //         }
71 //     }
72 // }
73