def respondToHandshake(self, NodeId, ListeningPort, ProtocolVersion): ip = self.transport.getPeer().host d = Mercury.checkIfNodeExists(NodeId) def processNode(nodeExists): if nodeExists: return Mercury.updateAndGetNode(NodeId, ip, ListeningPort) # This returns deferred else: return Mercury.createNode(NodeId, ip, ListeningPort) d.addCallback(processNode) def callReverseSync(node): # I'm going to ask for nodes in parallel with already existing header call. d = self.requestHeaders(node) d.addCallback(self.requestNodes) return node d.addCallback(callReverseSync)\ .addErrback(self.closeConnection, 'INBOUND', callReverseSync.__name__) d.addCallback(self.setGlobalConnectedNode) # This is at one level up, directly below protocol class. reply = {'NodeId': self.factory.localNodeId, 'ListeningPort': aetherListeningPort, 'ProtocolVersion': protocolVersion } cprint('FROM REMOTE: HANDSHAKE REQUEST: from %s:%s' %(ip, ListeningPort), 'white', 'on_yellow', attrs=['bold']) cprint('ANSWER: %s' %(reply), 'white', 'on_yellow') print('\n') return reply
def replyArrived(reply): cprint('RECEIVED: HANDSHAKE REPLY. \n%s' %(reply), 'cyan', 'on_blue') print('\n') ip = self.transport.getPeer().host d = Mercury.checkIfNodeExists(reply['NodeId']) def processNode(nodeExists): if nodeExists: return Mercury.updateAndGetNode(reply['NodeId'], ip, reply['ListeningPort']) # This returns deferred else: return Mercury.createNode(reply['NodeId'], ip, reply['ListeningPort']) d.addCallback(processNode) d.addCallback(self.setGlobalConnectedNode) # This is at one level up, directly below protocol class. d.addCallback(self.requestHeaders) d.addCallback(self.requestNodes)
def replyArrived(reply): cprint('RECEIVED: HANDSHAKE REPLY. \n%s' % (reply), 'cyan', 'on_blue') print('\n') ip = self.transport.getPeer().host d = Mercury.checkIfNodeExists(reply['NodeId']) def processNode(nodeExists): if nodeExists: return Mercury.updateAndGetNode(reply['NodeId'], ip, reply['ListeningPort']) # This returns deferred else: return Mercury.createNode(reply['NodeId'], ip, reply['ListeningPort']) d.addCallback(processNode) d.addCallback( self.setGlobalConnectedNode ) # This is at one level up, directly below protocol class. d.addCallback(self.requestHeaders) d.addCallback(self.requestNodes)
def respondToHandshake(self, NodeId, ListeningPort, ProtocolVersion): ip = self.transport.getPeer().host d = Mercury.checkIfNodeExists(NodeId) def processNode(nodeExists): if nodeExists: return Mercury.updateAndGetNode( NodeId, ip, ListeningPort) # This returns deferred else: return Mercury.createNode(NodeId, ip, ListeningPort) d.addCallback(processNode) def callReverseSync(node): # I'm going to ask for nodes in parallel with already existing header call. d = self.requestHeaders(node) d.addCallback(self.requestNodes) return node d.addCallback(callReverseSync)\ .addErrback(self.closeConnection, 'INBOUND', callReverseSync.__name__) d.addCallback( self.setGlobalConnectedNode ) # This is at one level up, directly below protocol class. reply = { 'NodeId': self.factory.localNodeId, 'ListeningPort': aetherListeningPort, 'ProtocolVersion': protocolVersion } cprint('FROM REMOTE: HANDSHAKE REQUEST: from %s:%s' % (ip, ListeningPort), 'white', 'on_yellow', attrs=['bold']) cprint('ANSWER: %s' % (reply), 'white', 'on_yellow') print('\n') return reply