@VisibleForTesting
  static CacheClientNotifier getInstance(InternalCache cache,
      ClientRegistrationEventQueueManager clientRegistrationEventQueueManager,
      StatisticsClock statisticsClock,
      CacheServerStats acceptorStats,
      int maximumMessageCount,
      int messageTimeToLive,
      ConnectionListener listener,
      OverflowAttributes overflowAttributes,
      boolean isGatewayReceiver,
      SocketMessageWriter socketMessageWriter) {
    if (ccnSingleton == null) {
      ccnSingleton = new CacheClientNotifier(cache, clientRegistrationEventQueueManager,
          statisticsClock, acceptorStats, maximumMessageCount, messageTimeToLive, listener,
          isGatewayReceiver, new CacheClientProxyFactory(), socketMessageWriter);
    }

    if (!isGatewayReceiver && ccnSingleton.getHaContainer() == null) {
      // Gateway receiver might have create CCN instance without HaContainer
      // In this case, the HaContainer should be lazily created here
      ccnSingleton.initHaContainer(overflowAttributes);
    }
    return ccnSingleton;
  }
Class {@code CacheClientNotifier} works on the server and manages client socket connections
to clients requesting notification of updates and notifies them when updates occur.

@since GemFire 3.2
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientNotifier.java