def connect(self, neighbor: Node): try: if neighbor.id in [n.neighbor_id for n in self.neighbors]: log('log', f"{self}, neighbor {neighbor} already connected.") return True if self.mp: sock = create_tcp_socket() sock.settimeout(SOCK_TIMEOUT) sock.connect((neighbor.host, neighbor.port)) neighbor_conn = NodeConnection(self, neighbor.id, sock) neighbor_conn.start() neighbor_conn.send( protocol.connect(sock.getsockname(), self.id)) self.neighbors.append(neighbor_conn) else: slink = NodeLink(self, neighbor, None) dlink = NodeLink(neighbor, self, slink) slink.link = dlink self.neighbors.append(slink) neighbor.neighbors.append(dlink) return True except Exception as e: log('error', f"{self}: Can't connect to {neighbor} -- {e}") return False
def _init_server(self): if self.mp: self.sock = create_tcp_socket() self.sock.bind((self.host, self.port)) self.sock.settimeout(SOCK_TIMEOUT) self.sock.listen(TCP_SOCKET_SERVER_LISTEN) self.port = self.sock.getsockname()[1] else: self.sock = None
def connect_bridge(self, bridge_host, bridge_port): try: sock = create_tcp_socket() sock.settimeout(SOCK_TIMEOUT) sock.connect((bridge_host, bridge_port)) self.bridge = Bridge(self, sock) self.bridge.start() return True except Exception as e: toast(f"Cannot connect to bridge\n{e}") return False
def connect(self, nid, host, port): try: if nid in [n.neighbor_id for n in self.neighbors]: return True sock = create_tcp_socket() sock.settimeout(SOCK_TIMEOUT) sock.connect((host, port)) neighbor_conn = NodeConnection(self, nid, sock) neighbor_conn.start() neighbor_conn.send(protocol.connect(sock.getsockname(), self.id)) self.neighbors.append(neighbor_conn) return {'s': True, 'm': f"Connected to Node({nid})"} except Exception as e: toast(f"Cannot connect to Node({nid}, <{host}, {port}>)\n{e}") print(f"Cannot connect to Node({nid}, <{host}, {port}>)\n{e}") return {'s': False, 'm': f"{self} could not connect to Node({nid}): {e}"}
def _init_server(self): self.sock = create_tcp_socket() self.sock.bind((self.host, self.port)) self.sock.settimeout(conf.SOCK_TIMEOUT) self.sock.listen(conf.TCP_SOCKET_SERVER_LISTEN) self.host = self.sock.getsockname()[0]