@Override public void unregisterSubscriber(@NotNull Subscriber subscriber) { final Subscriber delegate = subscriptionDelegate.get(subscriber); final Subscriber s = delegate != null ? delegate : subscriber; boolean subscription = subscribers.remove(s); boolean keySubscription = keySubscribers.remove(s); if (subscription) removeFromStats("subscription"); if (keySubscription) removeFromStats("keySubscription"); s.onEndOfSubscription(); }
@Override public void registerKeySubscriber( @NotNull RequestContext rc, @NotNull Subscriber<K> subscriber, @NotNull Filter<K> filter) { addToStats("keySubscription"); final Boolean bootstrap = rc.bootstrap(); final Subscriber<K> sub = subscriber(subscriber, filter); keySubscribers.add(sub); if (bootstrap != Boolean.FALSE && kvStore != null) { try { for (int i = 0; i < kvStore.segments(); i++) kvStore.keysFor(i, sub::onMessage); if (TRUE.equals(rc.endSubscriptionAfterBootstrap())) { sub.onEndOfSubscription(); keySubscribers.remove(sub); } } catch (InvalidSubscriberException e) { keySubscribers.remove(sub); } } }