def _uid_2_level(self, uid, other_uid=None): """ Convert a uid to a log level in the finger table """ if other_uid == None: other_uid = self.self.uid level = int( self._above_zero(math.log(uidlib.distance(uid, other_uid) + 0.1))) return level
def get_node(self, uid): """ get closest node """ level = self._uid_2_level(uid) self._level_check(level) #Check if we have an entry if len(self.table[level]): search = self.table[level] #Else find the closest node else: search = self.known close_node = None for node in search: if not close_node or uidlib.distance(node.uid, uid) < uidlib.distance(close_node.uid, uid): close_node = node return close_node
def _uid_2_level(self, uid, other_uid=None): """ Convert a uid to a log level in the finger table """ if other_uid == None: other_uid = self.self.uid level = int(self._above_zero( math.log( uidlib.distance(uid, other_uid)+0.1) ) ) return level
def get_node(self, uid): """ get closest node """ level = self._uid_2_level(uid) self._level_check(level) #Check if we have an entry if len(self.table[level]): search = self.table[level] #Else find the closest node else: search = self.known close_node = None for node in search: if not close_node or uidlib.distance( node.uid, uid) < uidlib.distance(close_node.uid, uid): close_node = node return close_node