Exemplo n.º 1
0
    def add_listener(self, on_message=None):
        """Subscribes to this topic.

        When someone publishes a message on this topic, ``on_message`` function is called if provided.

        Args:
            on_message (function): Function to be called when a message is published.

        Returns:
            hazelcast.future.Future[str]: A registration id which is used as a key to remove the listener.
        """
        codec = topic_add_message_listener_codec
        request = codec.encode_request(self.name, self._is_smart)

        def handle(item, publish_time, uuid):
            member = self._context.cluster_service.get_member(uuid)
            item_event = TopicMessage(
                self.name, item, publish_time / 1000.0, member, self._to_object
            )
            on_message(item_event)

        return self._register_listener(
            request,
            lambda r: codec.decode_response(r),
            lambda reg_id: topic_remove_message_listener_codec.encode_request(self.name, reg_id),
            lambda m: codec.handle(m, handle),
        )
Exemplo n.º 2
0
    def remove_listener(self, registration_id):
        """
        Stops receiving messages for the given message listener. If the given listener already removed, this method does
        nothing.

        :param registration_id: (str), registration id of the listener to be removed.
        :return: (bool), ``true`` if the listener is removed, ``false`` otherwise.
        """
        return self._stop_listening(
            registration_id,
            lambda i: topic_remove_message_listener_codec.encode_request(
                self.name, i))
Exemplo n.º 3
0
    def add_listener(self, on_message=None):
        """
        Subscribes to this topic. When someone publishes a message on this topic, on_message() function is called if
        provided.

        :param on_message: (Function), function to be called when a message is published.
        :return: (str), a registration id which is used as a key to remove the listener.
        """
        request = topic_add_message_listener_codec.encode_request(
            self.name, self._is_smart)

        def handle(item, publish_time, uuid):
            member = self._client.cluster.get_member_by_uuid(uuid)
            item_event = TopicMessage(self.name, item, publish_time, member,
                                      self._to_object)
            on_message(item_event)

        return self._register_listener(
            request, lambda r: topic_add_message_listener_codec.
            decode_response(r)['response'],
            lambda reg_id: topic_remove_message_listener_codec.encode_request(
                self.name, reg_id),
            lambda m: topic_add_message_listener_codec.handle(m, handle))
Exemplo n.º 4
0
 def remove_listener(self, registration_id):
     return self._stop_listening(
         registration_id,
         lambda i: topic_remove_message_listener_codec.encode_request(
             self.name, i))
Exemplo n.º 5
0
 def remove_listener(self, registration_id):
     return self._stop_listening(registration_id,
                                 lambda i: topic_remove_message_listener_codec.encode_request(self.name, i))