def _key_buckets_init(self, buckets=1, key_hash=sha1): self.folder_buckets = buckets if buckets != 1: self._key_hash = sha1 self._key_hash_max = khm = 1 << (8 * sha1('').digest_size) self._key_hash_max = khm - (khm % buckets) - 1 self._bucket_format = '{{:0{}d}}'.format(len(str(buckets)))
def _permuted(server): seed = server.get_permutation_seed() return sha1(peer_selection_index + seed).digest()
def _permuted(server): seed = server.get_permutation_seed() is_unpreferred = server not in preferred_servers return (is_unpreferred, sha1(peer_selection_index + seed).digest())
def get_servers_for_index(self, key): return sorted(self.client._servers, key=lambda x: sha1(key+x[0]).digest())
def get_servers_for_index(self, peer_selection_index): # first cut: return a list of (peerid, versioned-rref) tuples assert self.permute_peers == True servers = self.get_all_servers() key = peer_selection_index return sorted(servers, key=lambda x: sha1(key+x[0]).digest())