Esempio n. 1
0
 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 )
Esempio n. 2
0
File: node.py Progetto: hj91/cspace
 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)
Esempio n. 3
0
 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)
Esempio n. 4
0
 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 )
Esempio n. 5
0
 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()
Esempio n. 6
0
File: node.py Progetto: hj91/cspace
 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()
Esempio n. 7
0
 def __init__(self, nodeAddr, destNumId):
     self.nodeAddr = nodeAddr
     self.numId = idToNum(addrToId(nodeAddr))
     self.distance = destNumId ^ self.numId
Esempio n. 8
0
 def doFindNodes( self, msg, ctx ) :
     destNumId = idToNum( msg[0] )
     ctx.response( self.ktable.getClosestNodes(destNumId) )
Esempio n. 9
0
 def __init__( self, nodeAddr, destNumId ) :
     self.nodeAddr = nodeAddr
     self.numId = idToNum(addrToId(nodeAddr))
     self.distance = destNumId ^ self.numId
Esempio n. 10
0
File: node.py Progetto: hj91/cspace
 def doFindNodes(self, msg, ctx):
     destNumId = idToNum(msg[0])
     ctx.response(self.ktable.getClosestNodes(destNumId))