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()
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()