@@ -324,27 +324,32 @@ exports.SCENARIOS = {
324
324
} , true ) ;
325
325
setInterval ( function ( ) {
326
326
var peersCurrent = getByPath ( this_ . model , 'connectivity.peers.current' ) ;
327
+ //log('peersCurrent:', _.pluck(peersCurrent, 'peerid'));
327
328
if ( _ . isEmpty ( peersCurrent ) ) {
328
- this_ . updateModel ( { 'connectivity.peers.current.0' : randomChoice ( peers ) } , true ) ;
329
+ var randomPeer = randomChoice ( peers ) ;
330
+ this_ . updateModel ( { 'connectivity.peers.current.0' : randomPeer } , true ) ;
331
+ //log('No current peers, added random peer', randomPeer.peerid);
329
332
return ;
330
333
}
331
- if ( peersCurrent === peers . length ) {
334
+ if ( peersCurrent . length === peers . length ) {
332
335
var i = _ . random ( peers . length - 1 ) ;
336
+ //log('Connected to all available peers, removing random peer', peersCurrent[i].peerid);
333
337
peersCurrent . splice ( i , 1 ) ;
334
338
this_ . publishSync ( 'connectivity.peers.current' ) ;
335
339
return ;
336
340
}
337
- var offline = [ ] ;
338
- for ( var i = 0 , p = peers [ i ] ; p ; p = peers [ ++ i ] ) {
339
- if ( ! _ . any ( peersCurrent , function ( pp ) { return p . peerid === ( pp || { } ) . peerid ; } ) )
340
- offline . push ( p ) ;
341
- }
342
- if ( Math . random ( ) < .5 ) { // offline peer comes online, add it
343
- var randomPeer = randomChoice ( offline ) ;
341
+ if ( Math . random ( ) < .5 ) { // add a random not connected peer
342
+ var peersall = _ . pluck ( peers , 'peerid' ) ,
343
+ peerscur = _ . pluck ( peersCurrent , 'peerid' ) ,
344
+ peersnc = _ . difference ( peersall , peerscur ) ,
345
+ randomPeerid = randomChoice ( peersnc ) ,
346
+ randomPeer = _ . find ( peers , function ( p ) { return p . peerid === randomPeerid ; } ) ;
344
347
peersCurrent . push ( randomPeer ) ;
345
348
this_ . publishSync ( 'connectivity.peers.current.' + peersCurrent . length , true ) ;
346
- } else { // online peer goes offline, remove it
349
+ //log('heads: added random peer', randomPeerid);
350
+ } else { // remove a random connected peer
347
351
var i = _ . random ( peersCurrent . length - 1 ) ;
352
+ //log('tails: removing random peer', peersCurrent[i].peerid);
348
353
peersCurrent . splice ( i , 1 ) ;
349
354
this_ . publishSync ( 'connectivity.peers.current' ) ;
350
355
}
0 commit comments