def nodeSeen( self, nodeAddr, nodeNumId=None ) : if nodeNumId is None : nodeNumId = idToNum( addrToId(nodeAddr) ) if nodeNumId == self.selfNumId : return for i,bucket in enumerate(self.table) : if bucket.contains(nodeNumId) : break if not bucket.contains(self.selfNumId) : bucket.addNode( nodeAddr, nodeNumId ) else : self.table[i:i+1] = bucket.split() self.nodeSeen( nodeAddr, nodeNumId )
def nodeSeen(self, nodeAddr, nodeNumId=None): if nodeNumId is None: nodeNumId = idToNum(addrToId(nodeAddr)) if nodeNumId == self.selfNumId: return for i, bucket in enumerate(self.table): if bucket.contains(nodeNumId): break if not bucket.contains(self.selfNumId): bucket.addNode(nodeAddr, nodeNumId) else: self.table[i:i + 1] = bucket.split() self.nodeSeen(nodeAddr, nodeNumId)
def __init__(self, clientObj, destId, startNodes, callback=None): assert startNodes self.clientObj = clientObj self.destId = destId self.destNumId = idToNum(destId) self.seen = {} self.closest = [] self.pending = [] self.calling = {} for nodeAddr in startNodes: self._newNode(nodeAddr) self._callPending() self.op = AsyncOp(callback, self._doCancel)
def __init__( self, clientObj, destId, startNodes, callback=None ) : assert startNodes self.clientObj = clientObj self.destId = destId self.destNumId = idToNum( destId ) self.seen = {} self.closest = [] self.pending = [] self.calling = {} for nodeAddr in startNodes : self._newNode( nodeAddr ) self._callPending() self.op = AsyncOp( callback, self._doCancel )
def __init__( self, rpcSocket, reactor, knownNodes=[] ) : self.rpcSocket = rpcSocket self.reactor = reactor self.rpcSocket.setRequestCallback( self._onInput ) self.store = DataStore() self.ktable = KTable( idToNum(addrToId(rpcSocket.getAddr())) ) self.ktracker = KTracker( self.ktable ) for nodeAddr in knownNodes : self.ktable.nodeSeen( nodeAddr ) self.client = DHTClient( rpcSocket, False, self.ktracker ) self.requestTable = {} for x in MESSAGES : self.requestTable[x] = getattr( self, 'do%s' % x ) self.otherOps = set() self._initNodeRefresher() self._initDataTimer()
def __init__(self, rpcSocket, reactor, knownNodes=[]): self.rpcSocket = rpcSocket self.reactor = reactor self.rpcSocket.setRequestCallback(self._onInput) self.store = DataStore() self.ktable = KTable(idToNum(addrToId(rpcSocket.getAddr()))) self.ktracker = KTracker(self.ktable) for nodeAddr in knownNodes: self.ktable.nodeSeen(nodeAddr) self.client = DHTClient(rpcSocket, False, self.ktracker) self.requestTable = {} for x in MESSAGES: self.requestTable[x] = getattr(self, 'do%s' % x) self.otherOps = set() self._initNodeRefresher() self._initDataTimer()
def __init__(self, nodeAddr, destNumId): self.nodeAddr = nodeAddr self.numId = idToNum(addrToId(nodeAddr)) self.distance = destNumId ^ self.numId
def doFindNodes( self, msg, ctx ) : destNumId = idToNum( msg[0] ) ctx.response( self.ktable.getClosestNodes(destNumId) )
def __init__( self, nodeAddr, destNumId ) : self.nodeAddr = nodeAddr self.numId = idToNum(addrToId(nodeAddr)) self.distance = destNumId ^ self.numId
def doFindNodes(self, msg, ctx): destNumId = idToNum(msg[0]) ctx.response(self.ktable.getClosestNodes(destNumId))