Ejemplo n.º 1
0
 def onGet(getOp, err, payload):
     del obj.getOps[getOp]
     if err >= 0:
         result, data, updateLevel, signature = payload
         if result >= 0:
             if verifySignature(publicKey, data, updateLevel, signature):
                 obj.getResults.append((data, updateLevel, signature))
     if not obj.getOps:
         if obj.getResults:
             maxUpdateLevel = max([x[1] for x in obj.getResults])
             obj.getResults = [x for x in obj.getResults if x[1] == maxUpdateLevel]
         op.notify(obj.getResults)
Ejemplo n.º 2
0
 def doPutKey( self, msg, ctx ) :
     publicKeyData,data,updateLevel,signature = msg
     if not verifySignature(publicKeyData,data,updateLevel,signature) :
         return
     entry = self.store.get( publicKeyData )
     if entry is not None :
         oldData,oldUpdateLevel,oldSignature = entry
         if updateLevel <= oldUpdateLevel :
             ctx.response( (-1,oldData,oldUpdateLevel,oldSignature) )
             return
     self.store.set( publicKeyData, data, updateLevel, signature,
             DEFAULT_DATA_TIMEOUT )
     ctx.response( (0,data,updateLevel,signature) )
Ejemplo n.º 3
0
Archivo: node.py Proyecto: hj91/cspace
 def doPutKey(self, msg, ctx):
     publicKeyData, data, updateLevel, signature = msg
     if not verifySignature(publicKeyData, data, updateLevel, signature):
         return
     entry = self.store.get(publicKeyData)
     if entry is not None:
         oldData, oldUpdateLevel, oldSignature = entry
         if updateLevel <= oldUpdateLevel:
             ctx.response((-1, oldData, oldUpdateLevel, oldSignature))
             return
     self.store.set(publicKeyData, data, updateLevel, signature,
                    DEFAULT_DATA_TIMEOUT)
     ctx.response((0, data, updateLevel, signature))
Ejemplo n.º 4
0
 def onGet( getOp, err, payload ) :
     del obj.getOps[getOp]
     if err >= 0 :
         result,data,updateLevel,signature = payload
         if result >= 0 :
             if verifySignature(publicKey,data,updateLevel,\
                     signature) :
                 obj.getResults.append( (data,updateLevel,
                     signature) )
     if not obj.getOps :
         if obj.getResults :
             maxUpdateLevel = max( [x[1] for x in obj.getResults] )
             obj.getResults = [x for x in obj.getResults \
                     if x[1] == maxUpdateLevel]
         op.notify( obj.getResults )
Ejemplo n.º 5
0
 def onPut(putOp, err, payload):
     del obj.putOps[putOp]
     if err >= 0:
         result, oldData, oldUpdateLevel, oldSignature = payload
         if result >= 0:
             obj.successCount += 1
         elif oldUpdateLevel >= obj.updateLevel:
             if verifySignature(rsaKey, oldData, oldUpdateLevel, oldSignature):
                 obj.updateLevel = oldUpdateLevel + 1
                 cancelPuts()
                 obj.putOps.clear()
                 obj.successCount = 0
                 obj.signature = computeSignature(rsaKey, data, obj.updateLevel)
                 for nodeAddr in obj.nodes:
                     doPutKey(nodeAddr)
     if not obj.putOps:
         doNotify()
Ejemplo n.º 6
0
 def onPut( putOp, err, payload ) :
     del obj.putOps[putOp]
     if err >= 0 :
         result,oldData,oldUpdateLevel,oldSignature = payload
         if result >= 0 :
             obj.successCount += 1
         elif oldUpdateLevel >= obj.updateLevel :
             if verifySignature(rsaKey,oldData,
                     oldUpdateLevel,oldSignature) :
                 obj.updateLevel = oldUpdateLevel + 1
                 cancelPuts()
                 obj.putOps.clear()
                 obj.successCount = 0
                 obj.signature = computeSignature( rsaKey, data,
                         obj.updateLevel )
                 for nodeAddr in obj.nodes :
                     doPutKey( nodeAddr )
     if not obj.putOps :
         doNotify()