def join_network(self): # start event listener thread t = threading.Thread(target=self.start) t.daemon = True t.start() # if we are root if self.is_root == 1: self.root = None self.successor = None self.sucsuccessor = None self.predecessor = None self.sec_successor = None self.toString() # if we are peer else: self.predecessor = None self.sucsuccessor = None # contact the root to find our successor self.root = Proxy(self.root_addr.ip_addr, self.root_addr.port) self.successor = self.root.find_successor(self.address.NODEID) # set our predecessor succ = Proxy(self.successor.ip_addr, self.successor.port) tmp = succ.getpredec() if not tmp: succ.notify(self.address) else: pred = Proxy(tmp.ip_addr, tmp.port) pred.revnotify(self.address) pred.revnotify2(self.successor) self.predecessor = tmp succ.notify(self.address) # get successor's successor self.sucsuccessor = succ.getsucc() # inherit necessary files from successor self.inherit() # print current state of the node self.toString() # start stabilizing thread s = threading.Thread(target=self.periodical) s.daemon = True s.start() # don't kill the main thread so that deamon threads can survive while True: time.sleep(1)