def recv(self, block=True): """ Read data from socket. :returns: bytestring containing received data. """ flags = 0 if not block: flags = MSG_DONTWAIT buf = recv_all(self.sock, self.COOKIE_LEN + 5, flags) if not buf: return None, None cookie, addr_type, packet_len = struct.unpack("=8sBI", buf) if cookie != self.COOKIE: logging.critical("Dispatcher socket out of sync") raise SCIONIOError port_len = 0 if addr_type != AddrType.NONE: port_len = 2 addr_len = haddr_get_type(addr_type).LEN # We know there is data coming, block here to avoid sync problems. buf = recv_all(self.sock, addr_len + port_len + packet_len, 0) if addr_len > 0: addr = buf[:addr_len] port = buf[addr_len:addr_len + port_len] sender = (str(ipaddress.ip_address(addr)), port) else: addr = "" port = 0 sender = (None, None) packet = buf[addr_len + port_len:] return packet, sender
def _gen_zk_entry(self, addr, port, in_docker, docker): if not port: port = DEFAULT_ZK_PORT if in_docker: # If we're in-docker, we need to set the port to not conflict with the host port port = port + 1 addr = docker_host(in_docker, docker, str(ip_address(addr))) return {'Addr': addr, 'L4Port': port}
def __init__(self, topo_config, zk_config): self.addr = None self.topo_config = topo_config self.zk_config = zk_config self.manage = self.topo_config.get("manage", False) if not self.manage: # A ZK we don't manage must have an assigned IP in the topology self.addr = ip_address(self.topo_config["addr"]) self.clientPort = self._get_def("clientPort") self.leaderPort = self._get_def("leaderPort") self.electionPort = self._get_def("electionPort") self.maxClientCnxns = self._get_def("maxClientCnxns")
def __init__(self, topo_config, zk_config): self.addr = None self.topo_config = topo_config self.zk_config = zk_config self.addr = ip_address(self.topo_config["addr"]) self.clientPort = self._get_def("clientPort")