@Override public void registerTopicSubscriber( @NotNull RequestContext rc, @NotNull TopicSubscriber subscriber) { addToStats("topicSubscription"); Boolean bootstrap = rc.bootstrap(); topicSubscribers.add((TopicSubscriber<K, V>) subscriber); if (bootstrap != Boolean.FALSE && kvStore != null) { try { for (int i = 0; i < kvStore.segments(); i++) kvStore.entriesFor(i, e -> subscriber.onMessage(e.getKey(), e.getValue())); } catch (InvalidSubscriberException dontAdd) { topicSubscribers.remove(subscriber); } } }
@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); } } }
private void registerSubscriber0( @NotNull RequestContext rc, @NotNull Subscriber<MapEvent<K, V>> subscriber, @NotNull Filter<MapEvent<K, V>> filter) { addToStats("subscription"); final Subscriber<MapEvent<K, V>> sub = subscriber(subscriber, filter); this.subscribers.add(sub); Boolean bootstrap = rc.bootstrap(); if (bootstrap != Boolean.FALSE && kvStore != null) { try { for (int i = 0; i < kvStore.segments(); i++) kvStore.entriesFor(i, sub::onMessage); if (TRUE.equals(rc.endSubscriptionAfterBootstrap())) { sub.onEndOfSubscription(); LOG.info("onEndOfSubscription"); this.subscribers.remove(sub); } } catch (InvalidSubscriberException e) { this.subscribers.remove(sub); } } }