code: def add_listener(self, include_value=False, item_added_func=None, item_removed_func=None):
          
          request = queue_add_listener_codec.encode_request(self.name, include_value, False)
  
          def handle_event_item(item, uuid, event_type):
              item = item if include_value else None
              member = self._client.cluster.get_member_by_uuid(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._start_listening(request,
                                       lambda m: queue_add_listener_codec.handle(m, handle_event_item),
                                       lambda r: queue_add_listener_codec.decode_response(r)['response'],
                                       self.partition_key)
docs: Adds an item listener for this queue. Listener will be notified for all queue 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.