nl_tokens: An iterator that holds the context for the subsequent next () calls
pl_tokens: function TokenAwareIterator ( keyspace , execOptions , replicas , childPolicy ) { this . keyspace = keyspace ; this . childPolicy = childPolicy ; this . options = execOptions ; this . localReplicas = [ ] ; this . replicaIndex = 0 ; this . replicaMap = { } ; this . childIterator = null ; // Memoize the local replicas // The amount of local replicas should be defined before start iterating, in order to select an // appropriate (pseudo random) startIndex for ( let i = 0 ; i < replicas . length ; i ++ ) { const <mask> = replicas [ i ] ; if ( this . childPolicy . getDistance ( host ) !== types . distance . local ) { continue ; } this . replicaMap [ host . address ] = true ; this . localReplicas . push ( host ) ; } // We use a PRNG to set the replica index // We only care about proportional fair scheduling between replicas of a given token // Math.random() has an extremely short permutation cycle length but we don't care about collisions this . startIndex = Math . floor ( Math . random ( ) * this . localReplicas . length ) ; }