コード例 #1
0
ファイル: finger.py プロジェクト: tempbottle/gevent-dht
 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
コード例 #2
0
ファイル: finger.py プロジェクト: k4100p/gevent-dht
 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  
コード例 #3
0
ファイル: finger.py プロジェクト: k4100p/gevent-dht
 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
コード例 #4
0
ファイル: finger.py プロジェクト: tempbottle/gevent-dht
    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