def respondWithNodes(self, LastSyncTimestamp): if not self.connectedNode: self.abortConnection( Exception('AetherError: Illegal request from remote.'), 'L<-R', 'respondWithNodes') if LastSyncTimestamp != 'null': LastSyncTimestamp = datetime.utcfromtimestamp( float(LastSyncTimestamp)) else: LastSyncTimestamp = 'NO-TIMESTAMP' print( 'L<-R: Nodes request, Timestamp: ', LastSyncTimestamp if LastSyncTimestamp != 'NO-TIMESTAMP' else 'Initial Connection', ' N:', self.connectedNode['NodeId']) d = Mercury.getNodes(LastSyncTimestamp) d.addCallback(Mercury.processNodes) currentPacketNumber = 1 totalPacketNumber = 1 def calculatePacketCounts(dbReply, bucketSize): global totalPacketNumber totalPacketNumber = len(dbReply) / bucketSize if len(dbReply) % bucketSize > 0: totalPacketNumber += 1 if len(dbReply) == 0: totalPacketNumber = 1 return dbReply d.addCallback(calculatePacketCounts, NODE_PACKET_COUNT) def bucketise(dbReply, bucketSize, CPNo): # Here I have the entire reply from the db. I need divide that reply into buckets, and fire each # bucket to the remote. def process(slicedDbReply, currentPacketNumber): print('L->R: Nodes reply, Package number: ', currentPacketNumber, ' N:', self.connectedNode['NodeId']) global totalPacketNumber nodesJson = [] for n in slicedDbReply: nJson = ujson.dumps(n) nodesJson.append(nJson) self.callRemote(networkAPI.ReceiveNodes, Nodes=nodesJson, TotalNumberOfPackets=totalPacketNumber, CurrentPacketNo=currentPacketNumber) return {} if len(dbReply) > bucketSize: bucketise(dbReply[bucketSize:], bucketSize, CPNo + 1) # next batch. return process(dbReply[0:bucketSize], CPNo) # current batch. else: return process(dbReply[0:bucketSize], CPNo) # current batch. d.addCallback(bucketise, NODE_PACKET_COUNT, currentPacketNumber) d.addErrback(self.abortConnection, 'L<-R', self.respondWithNodes.__name__) return d
def respondWithNodes(self, LastSyncTimestamp): if not self.connectedNode: self.abortConnection(Exception("AetherError: Illegal request from remote."), "L<-R", "respondWithNodes") if LastSyncTimestamp != "null": LastSyncTimestamp = datetime.utcfromtimestamp(float(LastSyncTimestamp)) else: LastSyncTimestamp = "NO-TIMESTAMP" print( "L<-R: Nodes request, Timestamp: ", LastSyncTimestamp if LastSyncTimestamp != "NO-TIMESTAMP" else "Initial Connection", " N:", self.connectedNode["NodeId"], ) d = Mercury.getNodes(LastSyncTimestamp) d.addCallback(Mercury.processNodes) currentPacketNumber = 1 totalPacketNumber = 1 def calculatePacketCounts(dbReply, bucketSize): global totalPacketNumber totalPacketNumber = len(dbReply) / bucketSize if len(dbReply) % bucketSize > 0: totalPacketNumber += 1 if len(dbReply) == 0: totalPacketNumber = 1 return dbReply d.addCallback(calculatePacketCounts, NODE_PACKET_COUNT) def bucketise(dbReply, bucketSize, CPNo): # Here I have the entire reply from the db. I need divide that reply into buckets, and fire each # bucket to the remote. def process(slicedDbReply, currentPacketNumber): print("L->R: Nodes reply, Package number: ", currentPacketNumber, " N:", self.connectedNode["NodeId"]) global totalPacketNumber nodesJson = [] for n in slicedDbReply: nJson = ujson.dumps(n) nodesJson.append(nJson) self.callRemote( networkAPI.ReceiveNodes, Nodes=nodesJson, TotalNumberOfPackets=totalPacketNumber, CurrentPacketNo=currentPacketNumber, ) return {} if len(dbReply) > bucketSize: bucketise(dbReply[bucketSize:], bucketSize, CPNo + 1) # next batch. return process(dbReply[0:bucketSize], CPNo) # current batch. else: return process(dbReply[0:bucketSize], CPNo) # current batch. d.addCallback(bucketise, NODE_PACKET_COUNT, currentPacketNumber) d.addErrback(self.abortConnection, "L<-R", self.respondWithNodes.__name__) return d
def respondWithNodes(self, LastSyncTimestamp): if LastSyncTimestamp != 'null': LastSyncTimestamp = datetime.utcfromtimestamp( float(LastSyncTimestamp)) # + timedelta(minutes = 1) else: LastSyncTimestamp = 'NO-TIMESTAMP' d = Mercury.getNodes(LastSyncTimestamp) d.addCallback(Mercury.processNodes) cprint('FROM REMOTE: NODES REQUEST: with sync timestamp %s' % (LastSyncTimestamp if LastSyncTimestamp != 'NO-TIMESTAMP' else LastSyncTimestamp), 'white', 'on_yellow', attrs=['bold']) print('\n') currentPacketNumber = 1 totalPacketNumber = 1 def calculatePacketCounts(dbReply, bucketSize): global totalPacketNumber totalPacketNumber = len(dbReply) / bucketSize if len(dbReply) % bucketSize > 0: totalPacketNumber += 1 if len(dbReply) == 0: totalPacketNumber = 1 print('the reply includes %s headers' % len(dbReply)) print('total packet numbers: %s' % totalPacketNumber) return dbReply d.addCallback(calculatePacketCounts, globals.nodePacketCount) def bucketise(dbReply, bucketSize, CPNo): # Here I have the entire reply from the db. I need divide that reply into buckets, and fire each # bucket to the remote. def process(slicedDbReply, currentPacketNumber): global totalPacketNumber nodesJson = [] for n in slicedDbReply: nJson = ujson.dumps(n) nodesJson.append(nJson) cprint( 'THIS IS NODE ANSWER PACKAGE NUMBERED: %d' % currentPacketNumber, 'white', 'on_red') print( 'reply: ', { 'Nodes': nodesJson, 'TotalNumberOfPackets': totalPacketNumber, 'CurrentPacketNo': currentPacketNumber }) # here I need to fire receiveheaders methods onto the remote for each of the packets. self.callRemote(networkAPI.ReceiveNodes, Nodes=nodesJson, TotalNumberOfPackets=totalPacketNumber, CurrentPacketNo=currentPacketNumber) return {} if len(dbReply) > bucketSize: bucketise(dbReply[bucketSize:], bucketSize, CPNo + 1) # next batch. return process(dbReply[0:bucketSize], CPNo) # current batch. else: return process(dbReply[0:bucketSize], CPNo) # current batch. d.addCallback(bucketise, globals.nodePacketCount, currentPacketNumber) d.addErrback(self.closeConnection, 'INBOUND', self.respondWithNodes.__name__) return d
def respondWithNodes(self, LastSyncTimestamp): if LastSyncTimestamp != 'null': LastSyncTimestamp = datetime.utcfromtimestamp(float(LastSyncTimestamp))# + timedelta(minutes = 1) else: LastSyncTimestamp = 'NO-TIMESTAMP' d = Mercury.getNodes(LastSyncTimestamp) d.addCallback(Mercury.processNodes) cprint('FROM REMOTE: NODES REQUEST: with sync timestamp %s' %(LastSyncTimestamp if LastSyncTimestamp != 'NO-TIMESTAMP' else LastSyncTimestamp), 'white', 'on_yellow', attrs=['bold']) print('\n') currentPacketNumber = 1 totalPacketNumber = 1 def calculatePacketCounts(dbReply, bucketSize): global totalPacketNumber totalPacketNumber = len(dbReply)/bucketSize if len(dbReply)%bucketSize > 0: totalPacketNumber+= 1 if len(dbReply) == 0: totalPacketNumber = 1 print('the reply includes %s headers' %len(dbReply)) print('total packet numbers: %s' %totalPacketNumber) return dbReply d.addCallback(calculatePacketCounts, globals.nodePacketCount) def bucketise(dbReply, bucketSize ,CPNo): # Here I have the entire reply from the db. I need divide that reply into buckets, and fire each # bucket to the remote. def process(slicedDbReply, currentPacketNumber): global totalPacketNumber nodesJson = [] for n in slicedDbReply: nJson = ujson.dumps(n) nodesJson.append(nJson) cprint('THIS IS NODE ANSWER PACKAGE NUMBERED: %d' %currentPacketNumber, 'white', 'on_red') print('reply: ',{'Nodes':nodesJson, 'TotalNumberOfPackets':totalPacketNumber, 'CurrentPacketNo':currentPacketNumber}) # here I need to fire receiveheaders methods onto the remote for each of the packets. self.callRemote(networkAPI.ReceiveNodes, Nodes = nodesJson, TotalNumberOfPackets = totalPacketNumber, CurrentPacketNo = currentPacketNumber ) return {} if len(dbReply) > bucketSize: bucketise(dbReply[bucketSize:], bucketSize, CPNo + 1) # next batch. return process(dbReply[0:bucketSize], CPNo) # current batch. else: return process(dbReply[0:bucketSize], CPNo) # current batch. d.addCallback(bucketise, globals.nodePacketCount, currentPacketNumber) d.addErrback(self.closeConnection, 'INBOUND', self.respondWithNodes.__name__) return d