def run(self): global connection_list while not instance.has_exited: for node in instance.nodes: if node.name == instance.name: continue if node.port == '0': continue dest_name = node.name host = node.ip port = int(node.port) if dest_name not in connection_list: print '[try to connect to', dest_name, '...]' s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((host, port)) #blocking instance.gmutex.acquire() connection_list[dest_name]=s gui.update_meeting_info() instance.gmutex.release() print '[Connected!]', dest_name except: print 'Exception! Cannot connect to', dest_name time.sleep(1) pass time.sleep(instance.CONN_RETRY_SECS)
def remove_peer(name): if instance.initialized == False: return global connection_list if name in connection_list: print "## Removing peer: " + name del connection_list[name] if name in instance.heartbeat_time: del instance.heartbeat_time[name] for index, node in enumerate(instance.nodes): if node.name == name: instance.nodes[index] = instance.nodes[index]._replace(ip = '0.0.0.0') instance.nodes[index] = instance.nodes[index]._replace(port = '0') break gui.update_meeting_info()