xref: /xiu/protocol/rtmp/src/relay/errors.rs (revision 69de9bbd)
1b1840569SHarlanC use {
2b1840569SHarlanC     failure::Fail,
3b1840569SHarlanC     std::{fmt, io::Error},
4b1840569SHarlanC     tokio::sync::broadcast::error::RecvError,
5b1840569SHarlanC };
6fcc2ec9eSHarlanC 
7fcc2ec9eSHarlanC #[derive(Debug)]
8b1840569SHarlanC pub struct ClientError {
9fcc2ec9eSHarlanC     pub value: PushClientErrorValue,
10fcc2ec9eSHarlanC }
11fcc2ec9eSHarlanC 
12b1840569SHarlanC impl fmt::Display for ClientError {
fmt(&self, f: &mut fmt::Formatter) -> fmt::Result13fcc2ec9eSHarlanC     fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
14fcc2ec9eSHarlanC         fmt::Display::fmt(&self.value, f)
15fcc2ec9eSHarlanC     }
16fcc2ec9eSHarlanC }
17fcc2ec9eSHarlanC 
18fcc2ec9eSHarlanC #[derive(Debug, Fail)]
19fcc2ec9eSHarlanC pub enum PushClientErrorValue {
20*69de9bbdSHarlanC     #[fail(display = "receive error")]
21fcc2ec9eSHarlanC     ReceiveError(RecvError),
22fcc2ec9eSHarlanC 
23*69de9bbdSHarlanC     #[fail(display = "send error")]
24fcc2ec9eSHarlanC     SendError,
25*69de9bbdSHarlanC     #[fail(display = "io error")]
26fcc2ec9eSHarlanC     IOError(Error),
27fcc2ec9eSHarlanC }
28fcc2ec9eSHarlanC 
29b1840569SHarlanC impl From<Error> for ClientError {
from(error: Error) -> Self30fcc2ec9eSHarlanC     fn from(error: Error) -> Self {
31b1840569SHarlanC         ClientError {
32fcc2ec9eSHarlanC             value: PushClientErrorValue::IOError(error),
33fcc2ec9eSHarlanC         }
34fcc2ec9eSHarlanC     }
35fcc2ec9eSHarlanC }
36fcc2ec9eSHarlanC 
37b1840569SHarlanC impl From<RecvError> for ClientError {
from(error: RecvError) -> Self38fcc2ec9eSHarlanC     fn from(error: RecvError) -> Self {
39b1840569SHarlanC         ClientError {
40fcc2ec9eSHarlanC             value: PushClientErrorValue::ReceiveError(error),
41fcc2ec9eSHarlanC         }
42fcc2ec9eSHarlanC     }
43fcc2ec9eSHarlanC }
44