protected void processInterestMessage(ClientInterestMessageImpl message) {
    // Register or unregister interest depending on the interest type
    final @NotNull InterestType interestType = message.getInterestType();
    String regionName = message.getRegionName();
    Object key = message.getKeyOfInterest();
    if (message.isRegister()) {
      // Register interest in this region->key
      if (key instanceof List) {
        registerClientInterestList(regionName, (List<?>) key, message.getIsDurable(),
            message.getForUpdatesAsInvalidates(), true);
      } else {
        registerClientInterest(regionName, key, interestType, message.getIsDurable(),
            message.getForUpdatesAsInvalidates(), true);
      }

      // Add the client to the region's filters
      // addFilterRegisteredClients(regionName, key);

      if (logger.isDebugEnabled()) {
        final String buffer = this + ": Interest listener registered "
            + (message.getIsDurable() ? "" : "non-") + "durable interest in "
            + message.getRegionName() + "->" + message.getKeyOfInterest()
            + "->" + InterestType.getString(message.getInterestType());
        logger.debug(buffer);
      }
    } else {
      // Unregister interest in this region->key
      if (key instanceof List) {
        unregisterClientInterest(regionName, (List<?>) key, false);
      } else {
        unregisterClientInterest(regionName, key, interestType, false);
      }

      if (logger.isDebugEnabled()) {
        final String buffer = this + ": Interest listener unregistered interest in "
            + message.getRegionName() + "->" + message.getKeyOfInterest()
            + "->" + InterestType.getString(message.getInterestType());
        logger.debug(buffer);
      }
    }

    // Enqueue the interest message in this secondary proxy (fix for bug #52088)
    enqueueInterestRegistrationMessage(message);

    // Enqueue the initial value if the message is register on a key that is not a list (fix for bug
    // #52088)
    if (message.isRegister() && message.getInterestType() == InterestType.KEY
        && !(key instanceof List) && InterestResultPolicy
            .fromOrdinal(message.getInterestResultPolicy()) == InterestResultPolicy.KEYS_VALUES) {
      enqueueInitialValue(message, regionName, key);
    }
  }
sent by the cache client notifier when there is an interest registration change
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientProxy.java