From a84581fcff07adf56a138010f7cf1f22ca788916 Mon Sep 17 00:00:00 2001 From: Zooko O'Whielacronx Date: Mon, 8 Dec 2008 16:57:25 -0700 Subject: [PATCH] introducer: simplify get_permuted_peers() implementation and add get_peers() --- src/allmydata/introducer/client.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/src/allmydata/introducer/client.py b/src/allmydata/introducer/client.py index 8b59c9cc..6abe5bc4 100644 --- a/src/allmydata/introducer/client.py +++ b/src/allmydata/introducer/client.py @@ -295,21 +295,16 @@ class IntroducerClient(service.Service, Referenceable): for c in self._connections if c[1] == service_name]) + def get_peers(self, service_name): + """Return a set of (peerid, versioned-rref) tuples.""" + return frozenset([(pid, r) for (pid, servname, r) in self._connections if servname == servname]) + def get_permuted_peers(self, service_name, key): """Return an ordered list of (peerid, versioned-rref) tuples.""" - results = [] - for (c_peerid, c_service_name, rref) in self._connections: - assert isinstance(c_peerid, str) - if c_service_name != service_name: - continue - permuted = sha.new(key + c_peerid).digest() - results.append((permuted, c_peerid, rref)) - - results.sort(lambda a,b: cmp(a[0], b[0])) - return [ (r[1], r[2]) for r in results ] - + servers = self.get_peers(service_name) + return sorted(servers, key=lambda x: sha.new(key+x[0]).digest()) def remote_set_encoding_parameters(self, parameters): self.encoding_parameters = parameters -- 2.37.2