11use std:: { collections:: VecDeque , net:: SocketAddr } ;
22
3- use super :: { message:: Message , urgency :: Urgency } ;
3+ use super :: message:: Message ;
44
55/// Resource serving as the owner of the queue of messages to be sent. This resource also serves
66/// as the interface for other systems to send messages.
@@ -67,25 +67,9 @@ impl Transport {
6767 }
6868
6969 /// Creates a `Message` with the default guarantees provided by the `Socket` implementation and
70- /// pushes it onto the messages queue to be sent on next sim tick .
70+ /// pushes it onto the messages queue to be sent on the next frame .
7171 pub fn send ( & mut self , destination : SocketAddr , payload : & [ u8 ] ) {
72- self . send_with_requirements ( destination, payload, Urgency :: OnTick ) ;
73- }
74-
75- /// Creates a `Message` with the default guarantees provided by the `Socket` implementation and
76- /// Pushes it onto the messages queue to be sent immediately.
77- pub fn send_immediate ( & mut self , destination : SocketAddr , payload : & [ u8 ] ) {
78- self . send_with_requirements ( destination, payload, Urgency :: Immediate ) ;
79- }
80-
81- /// Creates and enqueues a `Message` with the specified guarantee.
82- pub fn send_with_requirements (
83- & mut self ,
84- destination : SocketAddr ,
85- payload : & [ u8 ] ,
86- timing : Urgency ,
87- ) {
88- let message = Message :: new ( destination, payload, timing) ;
72+ let message = Message :: new ( destination, payload) ;
8973 self . messages . push_back ( message) ;
9074 }
9175
@@ -101,19 +85,13 @@ impl Transport {
10185 & self . messages
10286 }
10387
104- /// Returns the messages to send by returning the immediate messages or anything adhering to
105- /// the given filter.
88+ /// Drains the messages queue and returns the drained messages. The filter allows you to drain
89+ /// only messages that adhere to your filter. This might be useful in a scenario like draining
90+ /// messages with a particular urgency requirement.
10691 pub fn drain_messages_to_send (
10792 & mut self ,
10893 mut filter : impl FnMut ( & mut Message ) -> bool ,
10994 ) -> Vec < Message > {
110- self . drain_messages ( |message| message. urgency == Urgency :: Immediate || filter ( message) )
111- }
112-
113- /// Drains the messages queue and returns the drained messages. The filter allows you to drain
114- /// only messages that adhere to your filter. This might be useful in a scenario like draining
115- /// messages with a particular urgency requirement.
116- pub fn drain_messages ( & mut self , mut filter : impl FnMut ( & mut Message ) -> bool ) -> Vec < Message > {
11795 let mut drained = Vec :: with_capacity ( self . messages . len ( ) ) ;
11896 let mut i = 0 ;
11997 while i != self . messages . len ( ) {
@@ -145,100 +123,57 @@ mod tests {
145123 use super :: * ;
146124
147125 #[ test]
148- fn test_send_with_default_requirements ( ) {
126+ fn test_send ( ) {
149127 let mut transport = create_test_transport ( ) ;
150128
151129 transport. send ( "127.0.0.1:3000" . parse ( ) . unwrap ( ) , test_payload ( ) ) ;
152130
153131 let packet = & transport. messages [ 0 ] ;
154132
155133 assert_eq ! ( transport. messages. len( ) , 1 ) ;
156- assert_eq ! ( packet. urgency, Urgency :: OnTick ) ;
157- }
158-
159- #[ test]
160- fn test_send_immediate_message ( ) {
161- let mut transport = create_test_transport ( ) ;
162-
163- transport. send_immediate ( "127.0.0.1:3000" . parse ( ) . unwrap ( ) , test_payload ( ) ) ;
164-
165- let packet = & transport. messages [ 0 ] ;
166-
167- assert_eq ! ( transport. messages. len( ) , 1 ) ;
168- assert_eq ! ( packet. urgency, Urgency :: Immediate ) ;
134+ assert_eq ! ( packet. payload, test_payload( ) ) ;
169135 }
170136
171137 #[ test]
172138 fn test_has_messages ( ) {
173139 let mut transport = create_test_transport ( ) ;
174140 assert_eq ! ( transport. has_messages( ) , false ) ;
175- transport. send_immediate ( "127.0.0.1:3000" . parse ( ) . unwrap ( ) , test_payload ( ) ) ;
141+ transport. send ( "127.0.0.1:3000" . parse ( ) . unwrap ( ) , test_payload ( ) ) ;
176142 assert_eq ! ( transport. has_messages( ) , true ) ;
177143 }
178144
179145 #[ test]
180- fn test_drain_only_immediate_messages ( ) {
146+ fn test_drain_only_heartbeat_messages ( ) {
181147 let mut transport = create_test_transport ( ) ;
182148
183149 let addr = "127.0.0.1:3000" . parse ( ) . unwrap ( ) ;
184- transport. send_immediate ( addr, test_payload ( ) ) ;
185- transport. send_immediate ( addr, test_payload ( ) ) ;
186150 transport. send ( addr, test_payload ( ) ) ;
151+ transport. send ( addr, heartbeat_payload ( ) ) ;
152+ transport. send ( addr, test_payload ( ) ) ;
153+ transport. send ( addr, heartbeat_payload ( ) ) ;
187154 transport. send ( addr, test_payload ( ) ) ;
188- transport. send_immediate ( addr, test_payload ( ) ) ;
189-
190- assert_eq ! ( transport. drain_messages_to_send( |_| false ) . len( ) , 3 ) ;
191- assert_eq ! ( transport. drain_messages_to_send( |_| false ) . len( ) , 0 ) ;
192- }
193-
194- #[ test]
195- fn test_drain_only_messages_with_specific_requirements ( ) {
196- let mut transport = create_test_transport ( ) ;
197-
198- let addr = "127.0.0.1:3000" . parse ( ) . unwrap ( ) ;
199- transport. send_with_requirements ( addr, test_payload ( ) , Urgency :: OnTick ) ;
200- transport. send_with_requirements ( addr, test_payload ( ) , Urgency :: Immediate ) ;
201- transport. send_with_requirements ( addr, test_payload ( ) , Urgency :: OnTick ) ;
202- transport. send_with_requirements ( addr, test_payload ( ) , Urgency :: Immediate ) ;
203- transport. send_with_requirements ( addr, test_payload ( ) , Urgency :: OnTick ) ;
204155
205156 assert_eq ! (
206157 transport
207- . drain_messages ( |message| message . urgency == Urgency :: Immediate )
158+ . drain_messages_to_send ( |m| m . payload == heartbeat_payload ( ) )
208159 . len( ) ,
209160 2
210161 ) ;
211162 // validate removal
212163 assert_eq ! (
213164 transport
214- . drain_messages ( |message| message . urgency == Urgency :: Immediate )
165+ . drain_messages_to_send ( |m| m . payload == heartbeat_payload ( ) )
215166 . len( ) ,
216167 0
217168 ) ;
218- assert_eq ! (
219- transport
220- . drain_messages( |message| message. urgency == Urgency :: OnTick )
221- . len( ) ,
222- 3
223- ) ;
169+ assert_eq ! ( transport. drain_messages_to_send( |_| false ) . len( ) , 0 ) ;
170+ assert_eq ! ( transport. drain_messages_to_send( |_| true ) . len( ) , 3 ) ;
171+ // validate removal
172+ assert_eq ! ( transport. drain_messages_to_send( |_| true ) . len( ) , 0 ) ;
224173 }
225174
226- #[ test]
227- fn test_send_with_requirements ( ) {
228- let mut transport = create_test_transport ( ) ;
229- let addr = "127.0.0.1:3000" . parse ( ) . unwrap ( ) ;
230-
231- let urgency = [ Urgency :: OnTick , Urgency :: OnTick ] ;
232-
233- for urg in urgency. iter ( ) . copied ( ) {
234- transport. send_with_requirements ( addr, test_payload ( ) , urg) ;
235- }
236-
237- assert_eq ! ( transport. messages. len( ) , urgency. len( ) ) ;
238-
239- for ( i, urg) in urgency. iter ( ) . enumerate ( ) {
240- assert_eq ! ( transport. messages[ i] . urgency, * urg) ;
241- }
175+ fn heartbeat_payload ( ) -> & ' static [ u8 ] {
176+ b""
242177 }
243178
244179 fn test_payload ( ) -> & ' static [ u8 ] {
0 commit comments