@@ -122,17 +122,16 @@ pub struct ReceiveMmsg<'a> {
122122#[ cfg( feature = "receive-mmsg" ) ]
123123impl ReceiveMmsg < ' _ > {
124124 fn new ( socket : i32 , udp_packet_size : u16 ) -> Self {
125- let batch_size = MAX_BATCH_SIZE as usize ;
126- let iovecs = vec ! [ unsafe { mem:: zeroed:: <libc:: iovec>( ) } ; batch_size] ;
125+ let iovecs = vec ! [ unsafe { mem:: zeroed:: <libc:: iovec>( ) } ; MAX_BATCH_SIZE as usize ] ;
127126 let mut iovecs = pin:: Pin :: new ( iovecs) ;
128127
129- let mut mmsghdr = vec ! [ unsafe { mem:: zeroed:: <libc:: mmsghdr>( ) } ; batch_size ] ;
130- for i in 0 ..batch_size {
128+ let mut mmsghdr = vec ! [ unsafe { mem:: zeroed:: <libc:: mmsghdr>( ) } ; MAX_BATCH_SIZE as usize ] ;
129+ for i in 0 ..MAX_BATCH_SIZE as usize {
131130 mmsghdr[ i] . msg_hdr . msg_iov = & raw mut iovecs[ i] ;
132131 mmsghdr[ i] . msg_hdr . msg_iovlen = 1 ;
133132 }
134133
135- let mut buffers = vec ! [ pin:: Pin :: new( vec![ 0u8 ; udp_packet_size as usize ] ) ; batch_size ] ;
134+ let mut buffers = vec ! [ pin:: Pin :: new( vec![ 0u8 ; udp_packet_size as usize ] ) ; MAX_BATCH_SIZE as usize ] ;
136135
137136 for ( i, buffer) in buffers. iter_mut ( ) . enumerate ( ) {
138137 iovecs[ i] . iov_base = buffer. as_mut_ptr ( ) . cast :: < libc:: c_void > ( ) ;
@@ -339,13 +338,12 @@ impl<'a> Send<'a> {
339338 io:: Error :: new ( io:: ErrorKind :: InvalidData , format ! ( "dest_len: {e}" ) )
340339 } ) ?;
341340
342- let batch_size = MAX_BATCH_SIZE as usize ;
343- let iovecs = vec ! [ unsafe { mem:: zeroed:: <libc:: iovec>( ) } ; batch_size] ;
341+ let iovecs = vec ! [ unsafe { mem:: zeroed:: <libc:: iovec>( ) } ; MAX_BATCH_SIZE as usize ] ;
344342 let mut iovecs = pin:: Pin :: new ( iovecs) ;
345343
346- let mut mmsghdr = vec ! [ unsafe { mem:: zeroed:: <libc:: mmsghdr>( ) } ; batch_size ] ;
344+ let mut mmsghdr = vec ! [ unsafe { mem:: zeroed:: <libc:: mmsghdr>( ) } ; MAX_BATCH_SIZE as usize ] ;
347345
348- for i in 0 ..batch_size {
346+ for i in 0 ..MAX_BATCH_SIZE as usize {
349347 mmsghdr[ i] . msg_hdr . msg_name = raw_dest. cast :: < libc:: c_void > ( ) ;
350348 mmsghdr[ i] . msg_hdr . msg_namelen = dest_len;
351349 mmsghdr[ i] . msg_hdr . msg_iov = & raw mut iovecs[ i] ;
@@ -364,72 +362,69 @@ impl<'a> Send<'a> {
364362 }
365363
366364 pub fn send ( & mut self , packets : & [ raptorq:: EncodingPacket ] ) -> Result < ( ) , io:: Error > {
367- let mut datagrams = packets. iter ( ) . map ( raptorq:: EncodingPacket :: serialize) ;
365+ let datagrams = packets. iter ( ) . map ( raptorq:: EncodingPacket :: serialize) ;
368366
369367 match self {
370368 #[ cfg( feature = "send-native" ) ]
371- Self :: Native { socket, dest } => datagrams. try_for_each ( |datagram| {
372- let len = datagram. len ( ) ;
369+ Self :: Native { socket, dest } => {
370+ for datagram in datagrams {
371+ let len = datagram. len ( ) ;
373372
374- let sent = socket. send_to ( & datagram, * dest) ?;
373+ let sent = socket. send_to ( & datagram, * dest) ?;
375374
376- if sent == len {
377- Ok ( ( ) )
378- } else {
379- Err ( io:: Error :: other ( format ! (
380- "libc::sendmsg failed {sent} != {len}"
381- ) ) )
375+ if sent != len {
376+ return Err ( io:: Error :: other ( format ! (
377+ "libc::sendmsg failed {sent} != {len}"
378+ ) ) ) ;
379+ }
382380 }
383- } ) ,
381+ }
384382 #[ cfg( feature = "send-msg" ) ]
385383 Self :: Msg {
386384 socket,
387385 msghdr,
388386 iovec,
389387 ..
390- } => datagrams. try_for_each ( |mut datagram| {
391- let len = datagram. len ( ) ;
388+ } => {
389+ for mut datagram in datagrams {
390+ let len = datagram. len ( ) ;
392391
393- iovec. iov_base = datagram. as_mut_ptr ( ) . cast ( ) ;
394- iovec. iov_len = len;
392+ iovec. iov_base = datagram. as_mut_ptr ( ) . cast ( ) ;
393+ iovec. iov_len = len;
395394
396- let sent = unsafe { libc:: sendmsg ( * socket, msghdr, 0 ) } ;
395+ let sent = unsafe { libc:: sendmsg ( * socket, msghdr, 0 ) } ;
397396
398- if sent == len. cast_signed ( ) {
399- Ok ( ( ) )
400- } else {
401- Err ( io:: Error :: other ( format ! (
402- "libc::sendmsg failed {sent} != {len}"
403- ) ) )
397+ if sent != len. cast_signed ( ) {
398+ return Err ( io:: Error :: other ( format ! (
399+ "libc::sendmsg failed {sent} != {len}"
400+ ) ) ) ;
401+ }
404402 }
405- } ) ,
403+ }
406404 #[ cfg( feature = "send-mmsg" ) ]
407405 Self :: Mmsg {
408406 socket,
409407 mmsghdr,
410408 iovecs,
411409 ..
412- } => datagrams
413- . collect :: < Vec < _ > > ( )
414- . chunks_mut ( MAX_BATCH_SIZE as usize )
415- . try_for_each ( |datagrams| {
410+ } => {
411+ for datagrams in datagrams
412+ . collect :: < Vec < _ > > ( )
413+ . chunks_mut ( MAX_BATCH_SIZE as usize )
414+ {
416415 let to_send = datagrams. len ( ) ;
417416
418- datagrams
419- . iter_mut ( )
420- . enumerate ( )
421- . try_for_each ( |( i, datagram) | {
422- mmsghdr[ i] . msg_len = u32:: try_from ( datagram. len ( ) ) ?;
423- iovecs[ i] . iov_base = datagram. as_mut_ptr ( ) . cast :: < libc:: c_void > ( ) ;
424- iovecs[ i] . iov_len = datagram. len ( ) ;
425- Ok ( ( ) )
426- } )
427- . map_err ( |e : num:: TryFromIntError | {
428- io:: Error :: new (
429- io:: ErrorKind :: InvalidData ,
430- format ! ( "datagram.len(): {e}" ) ,
431- )
432- } ) ?;
417+ for ( i, datagram) in datagrams. iter_mut ( ) . enumerate ( ) {
418+ mmsghdr[ i] . msg_len =
419+ u32:: try_from ( datagram. len ( ) ) . map_err ( |e : num:: TryFromIntError | {
420+ io:: Error :: new (
421+ io:: ErrorKind :: InvalidData ,
422+ format ! ( "datagram.len(): {e}" ) ,
423+ )
424+ } ) ?;
425+ iovecs[ i] . iov_base = datagram. as_mut_ptr ( ) . cast :: < libc:: c_void > ( ) ;
426+ iovecs[ i] . iov_len = datagram. len ( ) ;
427+ }
433428
434429 let sent = unsafe {
435430 libc:: sendmmsg (
@@ -442,12 +437,13 @@ impl<'a> Send<'a> {
442437 ) as isize
443438 } ;
444439
445- if sent. cast_unsigned ( ) == to_send {
446- Ok ( ( ) )
447- } else {
448- Err ( io:: Error :: other ( "libc::sendmmsg" ) )
440+ if sent. cast_unsigned ( ) != to_send {
441+ return Err ( io:: Error :: other ( "libc::sendmmsg" ) ) ;
449442 }
450- } ) ,
443+ }
444+ }
451445 }
446+
447+ Ok ( ( ) )
452448 }
453449}
0 commit comments