@@ -248,12 +248,18 @@ func TestUDPNetworkAPI(t *testing.T) {
248248 require .NotEqual (t , conn1 , conn2 )
249249
250250 {
251- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 , []byte ("Hello" )})
251+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 })
252+ require .Nil (t , err )
253+ require .True (t , res .(bool ))
254+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("Hello" )})
255+ require .Nil (t , err )
256+ require .Equal (t , 5 , res )
257+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
252258 require .Nil (t , err )
253259 require .Equal (t , 5 , res )
254260 }
255261 {
256- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
262+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
257263 require .Nil (t , err )
258264 require .Equal (t , []any {5 , "127.0.0.1" , 9800 }, res )
259265
@@ -262,26 +268,44 @@ func TestUDPNetworkAPI(t *testing.T) {
262268 require .Equal (t , []uint8 ("Hello" ), res2 )
263269 }
264270 {
265- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 , []byte ("One" )})
271+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 })
272+ require .Nil (t , err )
273+ require .True (t , res .(bool ))
274+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("On" )})
275+ require .Nil (t , err )
276+ require .Equal (t , 2 , res )
277+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("e" )})
278+ require .Nil (t , err )
279+ require .Equal (t , 1 , res )
280+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
266281 require .Nil (t , err )
267282 require .Equal (t , 3 , res )
268283 }
269284 {
270- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 , []byte ("Two" )})
285+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9900 })
286+ require .Nil (t , err )
287+ require .True (t , res .(bool ))
288+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("Two" )})
289+ require .Nil (t , err )
290+ require .Equal (t , 3 , res )
291+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
271292 require .Nil (t , err )
272293 require .Equal (t , 3 , res )
273294 }
274295 {
275- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
296+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
276297 require .Nil (t , err )
277298 require .Equal (t , []any {3 , "127.0.0.1" , 9800 }, res )
278299
279- res2 , err := udpRead (ctx , nil , []any {conn2 , 100 })
300+ // A partial read of a packet is allowed
301+ res2 , err := udpRead (ctx , nil , []any {conn2 , 2 })
280302 require .Nil (t , err )
281- require .Equal (t , []uint8 ("One " ), res2 )
303+ require .Equal (t , []uint8 ("On " ), res2 )
282304 }
283305 {
284- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
306+ // Even if the previous packet was only partially read,
307+ // the next packet can be received
308+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
285309 require .Nil (t , err )
286310 require .Equal (t , []any {3 , "127.0.0.1" , 9800 }, res )
287311
@@ -311,12 +335,18 @@ func TestUDPNetworkUnboundClientAPI(t *testing.T) {
311335 require .NotEqual (t , conn1 , conn2 )
312336
313337 {
314- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 , []byte ("Hello" )})
338+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 })
339+ require .Nil (t , err )
340+ require .True (t , res .(bool ))
341+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("Hello" )})
342+ require .Nil (t , err )
343+ require .Equal (t , 5 , res )
344+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
315345 require .Nil (t , err )
316346 require .Equal (t , 5 , res )
317347 }
318348 {
319- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
349+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
320350 require .Nil (t , err )
321351 require .Equal (t , 5 , res .([]any )[0 ])
322352
@@ -329,17 +359,29 @@ func TestUDPNetworkUnboundClientAPI(t *testing.T) {
329359 require .Equal (t , []uint8 ("llo" ), res2 )
330360 }
331361 {
332- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 , []byte ("One" )})
362+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 })
363+ require .Nil (t , err )
364+ require .True (t , res .(bool ))
365+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("One" )})
366+ require .Nil (t , err )
367+ require .Equal (t , 3 , res )
368+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
333369 require .Nil (t , err )
334370 require .Equal (t , 3 , res )
335371 }
336372 {
337- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 , []byte ("Two" )})
373+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 })
374+ require .Nil (t , err )
375+ require .True (t , res .(bool ))
376+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("Two" )})
377+ require .Nil (t , err )
378+ require .Equal (t , 3 , res )
379+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
338380 require .Nil (t , err )
339381 require .Equal (t , 3 , res )
340382 }
341383 {
342- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
384+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
343385 require .Nil (t , err )
344386 require .Equal (t , 3 , res .([]any )[0 ])
345387
@@ -348,7 +390,7 @@ func TestUDPNetworkUnboundClientAPI(t *testing.T) {
348390 require .Equal (t , []uint8 ("One" ), res2 )
349391 }
350392 {
351- res , err := udpAwaitRead (ctx , nil , []any {conn2 })
393+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 })
352394 require .Nil (t , err )
353395 require .Equal (t , 3 , res .([]any )[0 ])
354396
@@ -360,19 +402,25 @@ func TestUDPNetworkUnboundClientAPI(t *testing.T) {
360402 // Check timeouts
361403 go func () {
362404 time .Sleep (200 * time .Millisecond )
363- res , err := udpWrite (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 , []byte ("Three" )})
405+ res , err := udpBeginPacket (ctx , nil , []any {conn1 , "127.0.0.1" , 9901 })
406+ require .Nil (t , err )
407+ require .True (t , res .(bool ))
408+ res , err = udpWrite (ctx , nil , []any {conn1 , []byte ("Three" )})
409+ require .Nil (t , err )
410+ require .Equal (t , 5 , res )
411+ res , err = udpEndPacket (ctx , nil , []any {conn1 })
364412 require .Nil (t , err )
365413 require .Equal (t , 5 , res )
366414 }()
367415 {
368416 start := time .Now ()
369- res , err := udpAwaitRead (ctx , nil , []any {conn2 , 10 })
417+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 , 10 })
370418 require .Less (t , time .Since (start ), 20 * time .Millisecond )
371419 require .Equal (t , []any {5 , "Timeout" }, err )
372420 require .Nil (t , res )
373421 }
374422 {
375- res , err := udpAwaitRead (ctx , nil , []any {conn2 , 0 })
423+ res , err := udpAwaitPacket (ctx , nil , []any {conn2 , 0 })
376424 require .Nil (t , err )
377425 require .Equal (t , 5 , res .([]any )[0 ])
378426
0 commit comments