def _get_socket_for_service(self):
        port = self._registry.next_available_port(self.name, self.guid,
                                                  self.host)
        self.socket_type = "REP"
        self.connect_method = "bind"

        try:
            self.socket_type = self.config.get("global", "socket_type").upper()
            self.connect_method = self.config.get("global",
                                                  "connect_method").lower()
        except ConfigParser.NoSectionError:
            pass
        except ConfigParser.NoOptionError:
            pass

        if self.socket_type not in self.VALID_SCK_TYPES:
            raise RuntimeError(
                "Socket type %s not in set [%s] of valid socket types" %
                (self.connect_method, ", ".join(self.VALID_SCK_TYPES)))

        if self.connect_method not in self.VALID_CONN_METHOD:
            raise RuntimeError(
                "Connect method %s not in set [%s] of valid methods" %
                (self.connect_method, ", ".join(self.VALID_CONN_METHOD)))

        connect_string = self.BASE_TCP_ADDR % (
            "*" if self.connect_method == "bind" else self.host, port
        )

        socket = zmq_socket_from_socket_type(self._context, self.socket_type)

        getattr(socket, self.connect_method)(connect_string)
        return port, socket
def socket_from_service_config(context, service_config,
                               timeout=DEFAULT_TIME_OUT):
    socket = zmq_socket_from_socket_type(context, service_config["socket_type"])
    connect_string = "tcp://%s:%d" % \
                     ("*"
                     if service_config["connect_method"] == "bind"
                     else service_config["host"],
                      service_config["port"])
    getattr(socket, service_config["connect_method"])(connect_string)
    socket.setsockopt(zmq.RCVTIMEO, timeout)
    socket.setsockopt(zmq.LINGER, 0)
    return socket
def socket_from_service_config(context,
                               service_config,
                               timeout=DEFAULT_TIME_OUT):
    socket = zmq_socket_from_socket_type(context,
                                         service_config["socket_type"])
    connect_string = "tcp://%s:%d" % \
                     ("*"
                     if service_config["connect_method"] == "bind"
                     else service_config["host"],
                      service_config["port"])
    getattr(socket, service_config["connect_method"])(connect_string)
    socket.setsockopt(zmq.RCVTIMEO, timeout)
    socket.setsockopt(zmq.LINGER, 0)
    return socket