Beispiel #1
0
    def reconnect(self):
        '''reconnect to gateway after lost ultrapeer'''
        self.isUltra = None     # boolean
        self.peers = []   # list of connected peers
        self.upeers = []  # list of connected ultrapeers
        self.upeer = None # ultrapeer of node
        self.searchctr = 0
        self.completedSearches = {}
        data = http.send_register(self.port, GATEWAY_ADDR)
        data = pickle.loads(data)

        if data['isUltra']:
            self.isUltra = True
            self.upId=data['upId']
            if data['uPeers'] is not None:
                self.upeers = data['uPeers']
            if self.upeers is not None:
                for up in self.upeers:
                    http.send_imaupeer(self.port, up)

        else:
            self.isUltra = False
            self.upeer = data['uPeer']
            if http.send_imapeer(self.port, self.upeer) is False:
                time.sleep(5)
                self.reconnect()
Beispiel #2
0
    def connectToNetwork(self):
        '''Establish connection with gateway and process result'''
        data = http.send_register(self.port, GATEWAY_ADDR)
        data = pickle.loads(data)

        if data['isUltra']:
            # node is an ultrapeer
            self.isUltra = True
            self.upId = data['upId']
            self.upeers = data['uPeers']
            # connect to listed ultrapeers
            if self.upeers is not None:
                for up in self.upeers:
                    http.send_imaupeer(self.port, up)
        else:
            # node is not ultrapeer
            self.isUltra = False
            self.upeer = data['uPeer']
            # connect to listed ultrapeer
            if http.send_imapeer(self.port, self.upeer) is False:
                time.sleep(5)
                self.reconnect()
        t=threading.Thread(target=self.pingNodes)
        t.start()