def get_routes(self, req, msgid, message, data): routes = [] for n in neighbours.keys(): if n == node_id: routes.append((n, "Loopback")) else: c = neighbours[n] if isinstance(c, str): routes.append((n, c)) else: routes.append((n, c.getpeername())) req.send(msgid, ("RESULT_TUPLE", tuple(routes)))
def get_connect_details(self, req, msgid, message, data): # try to find out how to connect to a server if str(data[0]) == node_id: # they're looking for us! Return our details req.send(msgid, ("RESULT_TUPLE", ((req.getsockname()[0], getOptions().port), None))) elif str(data[0]) in neighbours.keys(): # they're looking for our neighbour, ask them how to connect to them r = sendMessageToNode(str(data[0]), None, get_connect_details, str(data[0])) if isinstance(neighbours[str(data[0])], str): # we don't have a direct connection req.send(msgid, ("RESULT_TUPLE", (r[1], neighbours[str(data[0])]))) else: # we have a direct connection, tell people to go through us req.send(msgid, ("RESULT_TUPLE", (r[1], node_id))) else: # we don't know the node they're looking for req.send(msgid, (dont_know, ))
def get_neighbours(self, req, msgid, message, data): req.send(msgid, ("RESULT_TUPLE", tuple(neighbours.keys())))