@@ -285,7 +285,7 @@ where
285
285
}
286
286
}
287
287
// Emit discovered event.
288
- let mut discovered = SmallVec :: < [ ( PeerId , Multiaddr ) ; 4 ] > :: new ( ) ;
288
+ let mut discovered = Vec :: new ( ) ;
289
289
for iface_state in self . iface_states . values_mut ( ) {
290
290
while let Poll :: Ready ( ( peer, addr, expiration) ) =
291
291
iface_state. poll ( cx, & self . listen_addresses )
@@ -304,15 +304,13 @@ where
304
304
}
305
305
}
306
306
if !discovered. is_empty ( ) {
307
- let event = Event :: Discovered ( DiscoveredAddrsIter {
308
- inner : discovered. into_iter ( ) ,
309
- } ) ;
307
+ let event = Event :: Discovered ( discovered) ;
310
308
return Poll :: Ready ( ToSwarm :: GenerateEvent ( event) ) ;
311
309
}
312
310
// Emit expired event.
313
311
let now = Instant :: now ( ) ;
314
312
let mut closest_expiration = None ;
315
- let mut expired = SmallVec :: < [ ( PeerId , Multiaddr ) ; 4 ] > :: new ( ) ;
313
+ let mut expired = Vec :: new ( ) ;
316
314
self . discovered_nodes . retain ( |( peer, addr, expiration) | {
317
315
if * expiration <= now {
318
316
log:: info!( "expired: {} {}" , peer, addr) ;
@@ -323,9 +321,7 @@ where
323
321
true
324
322
} ) ;
325
323
if !expired. is_empty ( ) {
326
- let event = Event :: Expired ( ExpiredAddrsIter {
327
- inner : expired. into_iter ( ) ,
328
- } ) ;
324
+ let event = Event :: Expired ( expired) ;
329
325
return Poll :: Ready ( ToSwarm :: GenerateEvent ( event) ) ;
330
326
}
331
327
if let Some ( closest_expiration) = closest_expiration {
@@ -342,67 +338,11 @@ where
342
338
#[ derive( Debug , Clone ) ]
343
339
pub enum Event {
344
340
/// Discovered nodes through mDNS.
345
- Discovered ( DiscoveredAddrsIter ) ,
341
+ Discovered ( Vec < ( PeerId , Multiaddr ) > ) ,
346
342
347
343
/// The given combinations of `PeerId` and `Multiaddr` have expired.
348
344
///
349
345
/// Each discovered record has a time-to-live. When this TTL expires and the address hasn't
350
346
/// been refreshed, we remove it from the list and emit it as an `Expired` event.
351
- Expired ( ExpiredAddrsIter ) ,
352
- }
353
-
354
- /// Iterator that produces the list of addresses that have been discovered.
355
- #[ derive( Clone ) ]
356
- pub struct DiscoveredAddrsIter {
357
- inner : smallvec:: IntoIter < [ ( PeerId , Multiaddr ) ; 4 ] > ,
358
- }
359
-
360
- impl Iterator for DiscoveredAddrsIter {
361
- type Item = ( PeerId , Multiaddr ) ;
362
-
363
- #[ inline]
364
- fn next ( & mut self ) -> Option < Self :: Item > {
365
- self . inner . next ( )
366
- }
367
-
368
- #[ inline]
369
- fn size_hint ( & self ) -> ( usize , Option < usize > ) {
370
- self . inner . size_hint ( )
371
- }
372
- }
373
-
374
- impl ExactSizeIterator for DiscoveredAddrsIter { }
375
-
376
- impl fmt:: Debug for DiscoveredAddrsIter {
377
- fn fmt ( & self , fmt : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
378
- fmt. debug_struct ( "DiscoveredAddrsIter" ) . finish ( )
379
- }
380
- }
381
-
382
- /// Iterator that produces the list of addresses that have expired.
383
- #[ derive( Clone ) ]
384
- pub struct ExpiredAddrsIter {
385
- inner : smallvec:: IntoIter < [ ( PeerId , Multiaddr ) ; 4 ] > ,
386
- }
387
-
388
- impl Iterator for ExpiredAddrsIter {
389
- type Item = ( PeerId , Multiaddr ) ;
390
-
391
- #[ inline]
392
- fn next ( & mut self ) -> Option < Self :: Item > {
393
- self . inner . next ( )
394
- }
395
-
396
- #[ inline]
397
- fn size_hint ( & self ) -> ( usize , Option < usize > ) {
398
- self . inner . size_hint ( )
399
- }
400
- }
401
-
402
- impl ExactSizeIterator for ExpiredAddrsIter { }
403
-
404
- impl fmt:: Debug for ExpiredAddrsIter {
405
- fn fmt ( & self , fmt : & mut fmt:: Formatter < ' _ > ) -> fmt:: Result {
406
- fmt. debug_struct ( "ExpiredAddrsIter" ) . finish ( )
407
- }
347
+ Expired ( Vec < ( PeerId , Multiaddr ) > ) ,
408
348
}
0 commit comments