- servers = self.get_all_servers()
- key = peer_selection_index
- return sorted(servers, key=lambda x: sha1(key+x[0]).digest())
-
- def get_all_servers(self):
- # return a frozenset of (peerid, versioned-rref) tuples
- servers = {}
- for serverid,rref in self.test_servers.items():
- servers[serverid] = rref
- for serverid,dsc in self.descriptors.items():
- rref = dsc.get_rref()
- if rref:
- servers[serverid] = rref
- result = frozenset(servers.items())
- _assert(len(result) <= len(self.get_all_serverids()), result, self.get_all_serverids())
- return result
+ def _permuted(server):
+ seed = server.get_permutation_seed()
+ return sha1(peer_selection_index + seed).digest()
+ return sorted(self.get_connected_servers(), key=_permuted)