xref: /xiu/protocol/rtmp/src/session/errors.rs (revision 1606f184)
1 use crate::amf0::errors::Amf0WriteError;
2 use crate::chunk::errors::PackError;
3 use crate::chunk::errors::UnpackError;
4 use crate::handshake::errors::HandshakeError;
5 use crate::messages::errors::MessageError;
6 use crate::netconnection::errors::NetConnectionError;
7 use crate::netstream::errors::NetStreamError;
8 use crate::protocol_control_messages::errors::ControlMessagesError;
9 use crate::user_control_messages::errors::EventMessagesError;
10 
11 use netio::bytes_errors::BytesWriteError;
12 use netio::netio_errors::NetIOError;
13 
14 use tokio::time::Elapsed;
15 
16 pub struct SessionError {
17     pub value: SessionErrorValue,
18 }
19 
20 pub enum SessionErrorValue {
21     Amf0WriteError(Amf0WriteError),
22     BytesWriteError(BytesWriteError),
23     TimeoutError(Elapsed),
24     UnPackError(UnpackError),
25     MessageError(MessageError),
26     ControlMessagesError(ControlMessagesError),
27     NetConnectionError(NetConnectionError),
28     NetStreamError(NetStreamError),
29     EventMessagesError(EventMessagesError),
30     NetIOError(NetIOError),
31     PackError(PackError),
32     HandshakeError(HandshakeError),
33 
34     Amf0ValueCountNotCorrect,
35     Amf0ValueTypeNotCorrect,
36     ChannelEventSendErr,
37     NoneChannelDataSender,
38     NoneChannelDataReceiver,
39 }
40 
41 impl From<Amf0WriteError> for SessionError {
42     fn from(error: Amf0WriteError) -> Self {
43         SessionError {
44             value: SessionErrorValue::Amf0WriteError(error),
45         }
46     }
47 }
48 
49 impl From<BytesWriteError> for SessionError {
50     fn from(error: BytesWriteError) -> Self {
51         SessionError {
52             value: SessionErrorValue::BytesWriteError(error),
53         }
54     }
55 }
56 
57 impl From<Elapsed> for SessionError {
58     fn from(error: Elapsed) -> Self {
59         SessionError {
60             value: SessionErrorValue::TimeoutError(error),
61         }
62     }
63 }
64 
65 impl From<UnpackError> for SessionError {
66     fn from(error: UnpackError) -> Self {
67         SessionError {
68             value: SessionErrorValue::UnPackError(error),
69         }
70     }
71 }
72 
73 impl From<MessageError> for SessionError {
74     fn from(error: MessageError) -> Self {
75         SessionError {
76             value: SessionErrorValue::MessageError(error),
77         }
78     }
79 }
80 
81 impl From<ControlMessagesError> for SessionError {
82     fn from(error: ControlMessagesError) -> Self {
83         SessionError {
84             value: SessionErrorValue::ControlMessagesError(error),
85         }
86     }
87 }
88 
89 impl From<NetConnectionError> for SessionError {
90     fn from(error: NetConnectionError) -> Self {
91         SessionError {
92             value: SessionErrorValue::NetConnectionError(error),
93         }
94     }
95 }
96 
97 impl From<NetStreamError> for SessionError {
98     fn from(error: NetStreamError) -> Self {
99         SessionError {
100             value: SessionErrorValue::NetStreamError(error),
101         }
102     }
103 }
104 
105 impl From<EventMessagesError> for SessionError {
106     fn from(error: EventMessagesError) -> Self {
107         SessionError {
108             value: SessionErrorValue::EventMessagesError(error),
109         }
110     }
111 }
112 
113 impl From<NetIOError> for SessionError {
114     fn from(error: NetIOError) -> Self {
115         SessionError {
116             value: SessionErrorValue::NetIOError(error),
117         }
118     }
119 }
120 
121 impl From<PackError> for SessionError {
122     fn from(error: PackError) -> Self {
123         SessionError {
124             value: SessionErrorValue::PackError(error),
125         }
126     }
127 }
128 
129 impl From<HandshakeError> for SessionError {
130     fn from(error: HandshakeError) -> Self {
131         SessionError {
132             value: SessionErrorValue::HandshakeError(error),
133         }
134     }
135 }
136