示例#1
0
    def send_request(self, request):

        if request.msg_type not in zmq_names.NOTIFY_TYPES:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        pub_socket, hosts = self._check_hosts_connections(request.target)
        self._send_request(pub_socket, request)
    def send_request(self, request):

        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        self.socket.send(b'', zmq.SNDMORE)
        self.socket.send_pyobj(request)
    def send_request(self, request):

        if request.msg_type != zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        socket = self._connect_to_host(request.target, request.timeout)
        self._send_request(socket, request)
        return self._receive_reply(socket, request)
示例#4
0
    def send_request(self, request):
        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)
        socket = self.sockets_manager.get_socket(request.target)

        if request.msg_type in zmq_names.MULTISEND_TYPES:
            for _ in range(socket.connections_count()):
                self._send_message_data(socket, request)
        else:
            self._send_message_data(socket, request)
示例#5
0
        def _do_send_request(socket, request):
            if request.msg_type == zmq_names.CALL_TYPE:
                raise zmq_publisher_base.UnsupportedSendPattern(
                    request.msg_type)

            envelope = request.create_envelope()

            socket.send(b'', zmq.SNDMORE)
            socket.send_pyobj(envelope, zmq.SNDMORE)
            socket.send_pyobj(request)

            LOG.debug("->[proxy:%(addr)s] Sending message_id %(message)s to "
                      "a target %(target)s",
                      {"message": request.message_id,
                       "target": request.target,
                       "addr": list(socket.connections)})
示例#6
0
    def send_request(self, multipart_message):

        envelope = multipart_message[zmq_names.MULTIPART_IDX_ENVELOPE]
        if not envelope.is_mult_send:
            raise zmq_publisher_base.UnsupportedSendPattern(envelope.msg_type)

        topic_filter = envelope.topic_filter

        self.socket.send(topic_filter, zmq.SNDMORE)
        self.socket.send(multipart_message[zmq_names.MULTIPART_IDX_BODY])

        LOG.debug("Publishing message [%(topic)s] %(message_id)s to "
                  "a target %(target)s ",
                  {"message_id": envelope.message_id,
                   "target": envelope.target,
                   "topic": topic_filter})
示例#7
0
    def send_request(self, request):
        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        if self.conf.use_pub_sub:
            routing_key = self.routing_table.get_routable_host(request.target) \
                if request.msg_type in zmq_names.DIRECT_TYPES else \
                zmq_address.target_to_subscribe_filter(request.target)
            self._do_send_request(request, routing_key)
        else:
            routing_keys = \
                [self.routing_table.get_routable_host(request.target)] \
                if request.msg_type in zmq_names.DIRECT_TYPES else \
                self.routing_table.get_all_hosts(request.target)
            for routing_key in routing_keys:
                self._do_send_request(request, routing_key)
示例#8
0
    def send_request(self, request):

        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        push_socket = self.outbound_sockets.get_socket(request.target)

        if not push_socket.connections:
            LOG.warning(_LW("Request %s was dropped because no connection"),
                        request.msg_type)
            return

        if request.msg_type in zmq_names.MULTISEND_TYPES:
            for _ in range(push_socket.connections_count()):
                self._send_request(push_socket, request)
        else:
            self._send_request(push_socket, request)
    def send_request(self, multipart_message):
        envelope = multipart_message[zmq_names.MULTIPART_IDX_ENVELOPE]
        if envelope.is_mult_send:
            raise zmq_publisher_base.UnsupportedSendPattern(envelope.msg_type)
        if not envelope.target_hosts:
            raise Exception("Target hosts are expected!")

        dealer_socket = self.sockets_manager.get_socket_to_hosts(
            envelope.target, envelope.target_hosts)
        self.poller.register(dealer_socket.handle, self.receive_reply)

        LOG.debug("Sending message %(message)s to a target %(target)s"
                  % {"message": envelope.message_id,
                     "target": envelope.target})

        # Empty delimiter - DEALER socket specific
        dealer_socket.send(b'', zmq.SNDMORE)
        dealer_socket.send_pyobj(envelope, zmq.SNDMORE)
        dealer_socket.send(multipart_message[zmq_names.MULTIPART_IDX_BODY])
    def send_request(self, multipart_message):

        envelope = multipart_message[zmq_names.MULTIPART_IDX_ENVELOPE]
        msg_type = envelope[zmq_names.FIELD_MSG_TYPE]
        target = envelope[zmq_names.FIELD_TARGET]
        message_id = envelope[zmq_names.FIELD_MSG_ID]
        if msg_type not in zmq_names.MULTISEND_TYPES:
            raise zmq_publisher_base.UnsupportedSendPattern(msg_type)

        topic_filter = zmq_address.target_to_subscribe_filter(target)

        self.socket.send(topic_filter, zmq.SNDMORE)
        self.socket.send(multipart_message[zmq_names.MULTIPART_IDX_BODY])

        LOG.debug("Publishing message [%(topic)s] %(message_id)s to "
                  "a target %(target)s " % {
                      "message_id": message_id,
                      "target": target,
                      "topic": topic_filter
                  })
    def send_request(self, request):

        if request.msg_type == zmq_names.CALL_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        dealer_socket, hosts = self._check_hosts_connections(request.target)

        if not dealer_socket.connections:
            # NOTE(ozamiatin): Here we can provide
            # a queue for keeping messages to send them later
            # when some listener appears. However such approach
            # being more reliable will consume additional memory.
            LOG.warning(
                _LW("Request %s was dropped because no connection") %
                request.msg_type)
            return

        self.ack_receiver.track_socket(dealer_socket.handle)

        if request.msg_type in zmq_names.MULTISEND_TYPES:
            for _ in range(dealer_socket.connections_count()):
                self._send_request(dealer_socket, request)
        else:
            self._send_request(dealer_socket, request)
示例#12
0
 def send_request(self, request):
     if request.msg_type == zmq_names.CALL_TYPE:
         raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)
     super(DealerPublisher, self).send_request(request)
示例#13
0
 def _check_request_pattern(self, request):
     if request.msg_type == zmq_names.CALL_TYPE:
         raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)
示例#14
0
    def send_request(self, request):

        if request.msg_type != zmq_names.CAST_TYPE:
            raise zmq_publisher_base.UnsupportedSendPattern(request.msg_type)

        self.sender.send_request(request)
 def _check_pattern(request, supported_pattern):
     if request.msg_type != supported_pattern:
         raise zmq_publisher_base.UnsupportedSendPattern(
             zmq_names.message_type_str(request.msg_type))