def __init__(self, my_node, querier, bootstrap_lookup_f, bootstrap_nodes): self.my_node = my_node self.querier = querier self.bootstrap_lookup = bootstrap_lookup_f #Copy the bootstrap list self.bootstrap_nodes = [n for n in bootstrap_nodes] self.table = RoutingTable(my_node, NODES_PER_BUCKET) self.ping_msg = message.OutgoingPingQuery(my_node.id) self.find_closest_msg = message.OutgoingFindNodeQuery( my_node.id, my_node.id) #This must be called by an external party: self.do_bootstrap() #After initializing callbacks # maintenance variables self.last_maintenance_index = -1 self.maintenance_mode = BOOTSTRAP_MODE self.lookup_mode = False self._query_received_queue = QueryReceivedQueue(self.table) self._found_nodes_queue = FoundNodesQueue(self.table)