class TestClient(object): def __init__(self, nodeAddr): self.nodeAddr = nodeAddr self.sock = socket(AF_INET, SOCK_DGRAM) self.sock.bind(('', 0)) self.reactor = SelectReactor() self.rpcSocket = RPCSocket(self.sock, self.reactor) self.client = DHTClient(self.rpcSocket) self.client.timeout = 1.5 self.client.retries = 1 self.client.backoff = 1 def _initCount(self): self.startRequestCount = _requestCount def _getCount(self): return _requestCount - self.startRequestCount def _doneCount(self): count = self._getCount() print 'request count =', count def _onResult(self, err, payload): print 'err=%d, payload=%s' % (err, str(payload)) self._doneCount() self.reactor.stop() def _initCount(self): self.startRequestCount = _requestCount def Ping(self): self._initCount() self.client.callPing(self.nodeAddr, self._onResult) self.reactor.run() def GetAddr(self): self._initCount() self.client.callGetAddr(self.nodeAddr, self._onResult) self.reactor.run() def GetKey(self, publicKey): self._initCount() self.client.callGetKey(publicKey.toDER_PublicKey(), self.nodeAddr, self._onResult) self.reactor.run() def PutKey(self, rsaKey, data, updateLevel): self._initCount() signature = computeSignature(rsaKey, data, updateLevel) self.client.callPutKey(rsaKey.toDER_PublicKey(), data, updateLevel, signature, self.nodeAddr, self._onResult) self.reactor.run() def FindNodes(self, destId): self._initCount() self.client.callFindNodes(destId, self.nodeAddr, self._onResult) self.reactor.run() def Lookup(self, destId): def onResult(result): print 'result = %s' % str(result) self._doneCount() self.reactor.stop() self._initCount() self.client.lookup(destId, [self.nodeAddr], onResult) self.reactor.run() def LookupGetKey(self, publicKey): def onResult(result): print 'result = %s' % str(result) self._doneCount() self.reactor.stop() self._initCount() self.client.lookupGetKey(publicKey, [self.nodeAddr], onResult) self.reactor.run() def LookupPutKey(self, rsaKey, data, updateLevel): def onResult(successCount, latestUpdateLevel): print 'successCount=%d, latestUpdateLevel=%d' % (successCount, latestUpdateLevel) self._doneCount() self.reactor.stop() self._initCount() self.client.lookupPutKey(rsaKey, data, updateLevel, [self.nodeAddr], onResult) self.reactor.run()
class TestClient( object ) : def __init__( self, nodeAddr ) : self.nodeAddr = nodeAddr self.sock = socket( AF_INET, SOCK_DGRAM ) self.sock.bind( ('',0) ) self.reactor = SelectReactor() self.rpcSocket = RPCSocket( self.sock, self.reactor ) self.client = DHTClient( self.rpcSocket ) self.client.timeout = 1.5 self.client.retries = 1 self.client.backoff = 1 def _initCount( self ) : self.startRequestCount = _requestCount def _getCount( self ) : return _requestCount - self.startRequestCount def _doneCount( self ) : count = self._getCount() print 'request count =', count def _onResult( self, err, payload ) : print 'err=%d, payload=%s' % (err,str(payload)) self._doneCount() self.reactor.stop() def _initCount( self ) : self.startRequestCount = _requestCount def Ping( self ) : self._initCount() self.client.callPing( self.nodeAddr, self._onResult ) self.reactor.run() def GetAddr( self ) : self._initCount() self.client.callGetAddr( self.nodeAddr, self._onResult ) self.reactor.run() def GetKey( self, publicKey ) : self._initCount() self.client.callGetKey( publicKey.toDER_PublicKey(), self.nodeAddr, self._onResult ) self.reactor.run() def PutKey( self, rsaKey, data, updateLevel ) : self._initCount() signature = computeSignature( rsaKey, data, updateLevel ) self.client.callPutKey( rsaKey.toDER_PublicKey(), data, updateLevel, signature, self.nodeAddr, self._onResult ) self.reactor.run() def FindNodes( self, destId ) : self._initCount() self.client.callFindNodes( destId, self.nodeAddr, self._onResult ) self.reactor.run() def Lookup( self, destId ) : def onResult( result ) : print 'result = %s' % str(result) self._doneCount() self.reactor.stop() self._initCount() self.client.lookup( destId, [self.nodeAddr], onResult ) self.reactor.run() def LookupGetKey( self, publicKey ) : def onResult( result ) : print 'result = %s' % str(result) self._doneCount() self.reactor.stop() self._initCount() self.client.lookupGetKey( publicKey, [self.nodeAddr], onResult ) self.reactor.run() def LookupPutKey( self, rsaKey, data, updateLevel ) : def onResult( successCount, latestUpdateLevel ) : print 'successCount=%d, latestUpdateLevel=%d' % ( successCount, latestUpdateLevel) self._doneCount() self.reactor.stop() self._initCount() self.client.lookupPutKey( rsaKey, data, updateLevel, [self.nodeAddr], onResult ) self.reactor.run()