xref: /xiu/protocol/rtmp/src/session/errors.rs (revision 4b4045b2)
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 }
37 
38 impl From<Amf0WriteError> for SessionError {
39     fn from(error: Amf0WriteError) -> Self {
40         SessionError {
41             value: SessionErrorValue::Amf0WriteError(error),
42         }
43     }
44 }
45 
46 impl From<BytesWriteError> for SessionError {
47     fn from(error: BytesWriteError) -> Self {
48         SessionError {
49             value: SessionErrorValue::BytesWriteError(error),
50         }
51     }
52 }
53 
54 impl From<Elapsed> for SessionError {
55     fn from(error: Elapsed) -> Self {
56         SessionError {
57             value: SessionErrorValue::TimeoutError(error),
58         }
59     }
60 }
61 
62 impl From<UnpackError> for SessionError {
63     fn from(error: UnpackError) -> Self {
64         SessionError {
65             value: SessionErrorValue::UnPackError(error),
66         }
67     }
68 }
69 
70 impl From<MessageError> for SessionError {
71     fn from(error: MessageError) -> Self {
72         SessionError {
73             value: SessionErrorValue::MessageError(error),
74         }
75     }
76 }
77 
78 impl From<ControlMessagesError> for SessionError {
79     fn from(error: ControlMessagesError) -> Self {
80         SessionError {
81             value: SessionErrorValue::ControlMessagesError(error),
82         }
83     }
84 }
85 
86 impl From<NetConnectionError> for SessionError {
87     fn from(error: NetConnectionError) -> Self {
88         SessionError {
89             value: SessionErrorValue::NetConnectionError(error),
90         }
91     }
92 }
93 
94 impl From<NetStreamError> for SessionError {
95     fn from(error: NetStreamError) -> Self {
96         SessionError {
97             value: SessionErrorValue::NetStreamError(error),
98         }
99     }
100 }
101 
102 impl From<EventMessagesError> for SessionError {
103     fn from(error: EventMessagesError) -> Self {
104         SessionError {
105             value: SessionErrorValue::EventMessagesError(error),
106         }
107     }
108 }
109 
110 impl From<NetIOError> for SessionError {
111     fn from(error: NetIOError) -> Self {
112         SessionError {
113             value: SessionErrorValue::NetIOError(error),
114         }
115     }
116 }
117 
118 impl From<PackError> for SessionError {
119     fn from(error: PackError) -> Self {
120         SessionError {
121             value: SessionErrorValue::PackError(error),
122         }
123     }
124 }
125 
126 impl From<HandshakeError> for SessionError {
127     fn from(error: HandshakeError) -> Self {
128         SessionError {
129             value: SessionErrorValue::HandshakeError(error),
130         }
131     }
132 }
133