def add_listener(self, include_value=False, item_added_func=None, item_removed_func=None): """ Adds an item listener for this container. Listener will be notified for all container add/remove events. :param include_value: (bool), whether received events include the updated item or not (optional). :param item_added_func: Function to be called when an item is added to this set (optional). :param item_removed_func: Function to be called when an item is deleted from this set (optional). :return: (str), a registration id which is used as a key to remove the listener. """ request = set_add_listener_codec.encode_request( self.name, include_value, self._is_smart) def handle_event_item(item, uuid, event_type): item = item if include_value else None member = self._context.cluster_service.get_member(uuid) item_event = ItemEvent(self.name, item, event_type, member, self._to_object) if event_type == ItemEventType.added: if item_added_func: item_added_func(item_event) else: if item_removed_func: item_removed_func(item_event) return self._register_listener( request, lambda r: set_add_listener_codec.decode_response(r), lambda reg_id: set_remove_listener_codec.encode_request( self.name, reg_id), lambda m: set_add_listener_codec.handle(m, handle_event_item))
def remove_listener(self, registration_id): """ Removes the specified item listener. Returns silently if the specified listener was not added before. :param registration_id: (str), id of the listener to be deleted. :return: (bool), ``true`` if the item listener is removed, ``false`` otherwise. """ return self._stop_listening( registration_id, lambda i: set_remove_listener_codec.encode_request(self.name, i))
def add_listener( self, include_value: bool = False, item_added_func: typing.Callable[[ItemEvent[ItemType]], None] = None, item_removed_func: typing.Callable[[ItemEvent[ItemType]], None] = None, ) -> Future[str]: """Adds an item listener for this container. Listener will be notified for all container add/remove events. Args: include_value: Whether received events include the updated item or not. item_added_func: Function to be called when an item is added to this set. item_removed_func: Function to be called when an item is deleted from this set. Returns: A registration id which is used as a key to remove the listener. """ request = set_add_listener_codec.encode_request( self.name, include_value, self._is_smart) def handle_event_item(item_data, uuid, event_type): item = self._to_object(item_data) if include_value else None member = self._context.cluster_service.get_member(uuid) item_event = ItemEvent(self.name, item, event_type, member) if event_type == ItemEventType.ADDED: if item_added_func: item_added_func(item_event) else: if item_removed_func: item_removed_func(item_event) return self._register_listener( request, lambda r: set_add_listener_codec.decode_response(r), lambda reg_id: set_remove_listener_codec.encode_request( self.name, reg_id), lambda m: set_add_listener_codec.handle(m, handle_event_item), )
def remove_listener(self, registration_id): return self._stop_listening(registration_id, lambda i: set_remove_listener_codec.encode_request(self.name, i))
def remove_listener(self, registration_id): return self._stop_listening( registration_id, lambda i: set_remove_listener_codec.encode_request(self.name, i))