示例#1
0
    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
示例#2
0
 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
示例#3
0
 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
示例#4
0
 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}"}
示例#5
0
 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]