def handleGotNodes(self, dict): _krpc_sender = dict['_krpc_sender'] dict = dict['rsp'] sender = {'id' : dict["id"]} sender['port'] = _krpc_sender[1] sender['host'] = _krpc_sender[0] sender = self.table.Node().initWithDict(sender) try: l = unpackNodes(dict.get("nodes", [])) if not self.answered.has_key(sender.id): self.answered[sender.id] = sender insort(self.answeredq, NodeWrap(sender, self.num)) except: l = [] self.table.invalidateNode(sender) if self.finished: # a day late and a dollar short return self.outstanding = self.outstanding - 1 for node in l: n = self.table.Node().initWithDict(node) if not self.found.has_key(n.id) and not self.queried.has_key(n.id): self.found[n.id] = n insort(self.foundq, NodeWrap(n, self.num)) self.table.insertNode(n, contacted=0) self.schedule()
def handleGotNodes(self, dict): _krpc_sender = dict['_krpc_sender'] dict = dict['rsp'] sender = {'id': dict["id"]} sender['port'] = _krpc_sender[1] sender['host'] = _krpc_sender[0] sender = self.table.Node().initWithDict(sender) try: l = unpackNodes(dict.get("nodes", [])) if not self.answered.has_key(sender.id): self.answered[sender.id] = sender insort(self.answeredq, NodeWrap(sender, self.num)) except: l = [] self.table.invalidateNode(sender) if self.finished: # a day late and a dollar short return self.outstanding = self.outstanding - 1 for node in l: n = self.table.Node().initWithDict(node) if not self.found.has_key(n.id) and not self.queried.has_key(n.id): self.found[n.id] = n insort(self.foundq, NodeWrap(n, self.num)) self.table.insertNode(n, contacted=0) self.schedule()
def handleGotNodes(self, dict): _krpc_sender = dict['_krpc_sender'] dict = dict['rsp'] sender = {'id': dict["id"]} sender['port'] = _krpc_sender[1] sender['host'] = _krpc_sender[0] sender = self.table.Node().initWithDict(sender) if self.finished or self.answered.has_key(sender.id): # a day late and a dollar short return self.outstanding = self.outstanding - 1 answered = True # go through nodes # if we have any closer than what we already got, query them if dict.has_key('nodes'): try: l = unpackNodes(dict.get('nodes', [])) except: # considered an incorrect answer answered = False l = [] for node in l: n = self.table.Node().initWithDict(node) if not self.found.has_key(n.id): self.table.insertNode(n) self.found[n.id] = n insort(self.foundq, NodeWrap(n, self.num)) elif dict.has_key('values'): def x(y, z=self.results): if not z.has_key(y): z[y] = 1 return y else: return None z = len(dict.get('values', [])) v = filter(None, map(x, dict.get('values', []))) if (len(v)): self.callLater(0, self.callback, v) if answered: self.answered[sender.id] = sender insort(self.answeredq, NodeWrap(sender, self.num)) self.schedule()
def handleGotNodes(self, dict): _krpc_sender = dict['_krpc_sender'] dict = dict['rsp'] sender = {'id' : dict["id"]} sender['port'] = _krpc_sender[1] sender['host'] = _krpc_sender[0] sender = self.table.Node().initWithDict(sender) if self.finished or self.answered.has_key(sender.id): # a day late and a dollar short return self.outstanding = self.outstanding - 1 answered = True # go through nodes # if we have any closer than what we already got, query them if dict.has_key('nodes'): try: l = unpackNodes(dict.get('nodes',[])) except: # considered an incorrect answer answered = False l = [] for node in l: n = self.table.Node().initWithDict(node) if not self.found.has_key(n.id): self.table.insertNode(n) self.found[n.id] = n insort(self.foundq, NodeWrap(n, self.num)) elif dict.has_key('values'): def x(y, z=self.results): if not z.has_key(y): z[y] = 1 return y else: return None z = len(dict.get('values', [])) v = filter(None, map(x, dict.get('values',[]))) if(len(v)): self.callLater(0, self.callback, v) if answered: self.answered[sender.id] = sender insort(self.answeredq, NodeWrap(sender, self.num)) self.schedule()
def handleGotNodes(self, dict): _krpc_sender = dict["_krpc_sender"] dict = dict["rsp"] sender = {"id": dict["id"]} sender["port"] = _krpc_sender[1] sender["host"] = _krpc_sender[0] sender = self.table.Node().initWithDict(sender) if self.finished or self.answered.has_key(sender.id): # a day late and a dollar short return self.outstanding = self.outstanding - 1 self.answered[sender.id] = sender # go through nodes # if we have any closer than what we already got, query them if dict.has_key("nodes"): try: l = unpackNodes(dict.get("nodes", [])) except: l = [] del (self.answered[sender.id]) for node in l: n = self.table.Node().initWithDict(node) if not self.found.has_key(n.id): self.table.insertNode(n) self.found[n.id] = n insort(self.foundq, NodeWrap(n, self.num)) elif dict.has_key("values"): def x(y, z=self.results): if not z.has_key(y): z[y] = 1 return y else: return None z = len(dict.get("values", [])) v = filter(None, map(x, dict.get("values", []))) if len(v): self.callLater(0, self.callback, v) self.schedule()