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