예제 #1
0
    def do_read(self):
        if self._index >= self._limit_lookups:  # TODO: more smart and fault sensitive method
            if _Debug:
                lg.out(
                    _DebugLevel + 6,
                    'dht_relations.do_read STOP %s, limit lookups riched' %
                    self.customer_idurl)
            self.do_report_success()
            return None
        if self._last_missed_index >= 0 and self._index - self._last_missed_index > self._max_misses_in_row:
            if _Debug:
                lg.out(
                    _DebugLevel + 6,
                    'dht_relations.do_read STOP %s, last missed index is %d' %
                    (self.customer_idurl, self._last_missed_index))
            self.do_report_success()
            return None
#         if self._index >= 3 and self._missed >= 3:
#             if float(self._missed) / float(self._index) > 0.5:
#                 return None
        if _Debug:
            lg.out(
                _DebugLevel + 6,
                'dht_relations.do_read %s index:%d missed:%d' %
                (self.customer_idurl, self._index, self._missed))
        d = dht_service.get_value(
            make_dht_key(self.customer_idurl, self._index, self._prefix))
        d.addCallback(self.do_verify)
        d.addErrback(self.do_report_failed)
        return d
예제 #2
0
 def _wrote_my_address(self, nodes):
     if len(nodes) == 0:
         self.automat('dht-write-failed')
         return
     key = self.my_id + ':address'
     d = dht_service.get_value(key)
     d.addCallback(self._got_my_address, key)
     d.addErrback(lambda x: self.automat('dht-write-failed'))
예제 #3
0
 def _wrote_my_address(self, nodes):
     if len(nodes) == 0:
         self.automat('dht-write-failed')
         return
     key = self.my_id + ':address'
     d = dht_service.get_value(key)
     d.addCallback(self._got_my_address, key)
     d.addErrback(lambda x: self.automat('dht-write-failed'))
예제 #4
0
 def doDHTReadPeerAddress(self, arg):
     """
     Action method.
     """
     key = self.peer_id + ':address'
     self.working_deferred = dht_service.get_value(key)
     self.working_deferred.addCallback(self._got_peer_address, key)
     self.working_deferred.addErrback(
         lambda x: self.automat('dht-read-failed'))
예제 #5
0
 def doDHTReadPeerAddress(self, arg):
     """
     Action method.
     """
     key = self.peer_id + ':address'
     self.working_deferred = dht_service.get_value(key)
     self.working_deferred.addCallback(self._got_peer_address, key)
     self.working_deferred.addErrback(
         lambda x: self.automat('dht-read-failed'))
예제 #6
0
 def doDHTReadIncoming(self, arg):
     """
     Action method.
     """
     key = self.peer_id + ':incoming' + str(self.KeyPosition)
     self.working_deferred = dht_service.get_value(key)
     self.working_deferred.addCallback(
         self._got_peer_incoming, key, self.KeyPosition)
     self.working_deferred.addErrback(
         lambda x: self.automat('dht-read-failed'))
예제 #7
0
 def doDHTReadIncoming(self, arg):
     """
     Action method.
     """
     key = self.peer_id + ':incoming' + str(self.KeyPosition)
     self.working_deferred = dht_service.get_value(key)
     self.working_deferred.addCallback(self._got_peer_incoming, key,
                                       self.KeyPosition)
     self.working_deferred.addErrback(
         lambda x: self.automat('dht-read-failed'))
예제 #8
0
 def doDHTReadKey(self, arg):
     """
     Action method.
     """
     if self.dht_read_defer is not None:
         self.dht_read_defer.pause()
         self.dht_read_defer.cancel()
         self.dht_read_defer = None
     d = dht_service.get_value(self.key)
     d.addCallback(self._dht_read_result, self.key)
     d.addErrback(self._dht_read_failed)
     self.dht_read_defer = d
예제 #9
0
 def doDHTReadKey(self, arg):
     """
     Action method.
     """
     if self.dht_read_defer is not None:
         self.dht_read_defer.pause()
         self.dht_read_defer.cancel()
         self.dht_read_defer = None
     d = dht_service.get_value(self.key)
     d.addCallback(self._dht_read_result, self.key)
     d.addErrback(self._dht_read_failed)
     self.dht_read_defer = d
예제 #10
0
 def doDHTReadNextIncoming(self, arg):
     """
     Action method.
     """
     self.IncomingPosition += 1
     if self.IncomingPosition >= 10:
         self.IncomingPosition = 0
     key = self.my_id + ':incoming' + str(self.IncomingPosition)
     if _Debug:
         lg.out(_DebugLevel, 'udp_node.doDHTReadNextIncoming  key=%s' % key)
     d = dht_service.get_value(key)
     d.addCallback(self._got_my_incoming, key, self.IncomingPosition)
     d.addErrback(self._failed_my_incoming, key, self.IncomingPosition)
예제 #11
0
 def doDHTReadNextIncoming(self, arg):
     """
     Action method.
     """
     self.IncomingPosition += 1
     if self.IncomingPosition >= 10:
         self.IncomingPosition = 0
     key = self.my_id + ':incoming' + str(self.IncomingPosition)
     if _Debug:
         lg.out(_DebugLevel, 'udp_node.doDHTReadNextIncoming  key=%s' % key)
     d = dht_service.get_value(key)
     d.addCallback(self._got_my_incoming, key, self.IncomingPosition)
     d.addErrback(self._failed_my_incoming, key, self.IncomingPosition)