ByteArrayOutputStream bytes = new ByteArrayOutputStream(); CompletableFuture<byte[]> future = new CompletableFuture<>(); publisher.subscribe(new Flow.Subscriber<DataChunk>() { @Override public void onSubscribe(Flow.Subscription subscription) {
externalPublisher.subscribe(this); subscriber.onSubscribe(subscribersSubscription);
changes().subscribe(ConfigHelper.subscriber(onNextFunction));
factory.provider().changes().subscribe(subscriber); try { subscribeLatch.await(timeout, unit);
private void subscribe() { originalPublisher.subscribe(new Flow.Subscriber<DataChunk>() {
protected Entity toRequestMessage(SecurityFilter.FilterContext context) { switch (context.getMethod().toLowerCase()) { case "get": case "options": case "head": case "delete": return null; default: break; } return filterFunction -> { // this is request message (inbound) // this will publish bytes coming in from external source (to security provider) Flow.Publisher<ByteBuffer> publisherFromJersey = new InputStreamPublisher(context.getJerseyRequest().getEntityStream(), 1024); SubscriberInputStream subscriberInputStream = new SubscriberInputStream(); context.getJerseyRequest().setEntityStream(subscriberInputStream); Flow.Publisher<ByteBuffer> publisherToJersey = filterFunction.apply(publisherFromJersey); // this will receive request bytes coming in from security provider (filtered) publisherToJersey.subscribe(subscriberInputStream); }; }
/** * Register a {@link Consumer} that is invoked each time a change occurs on whole Config or on a particular Config node. * <p> * A user can subscribe on root Config node and than will be notified on any change of Configuration. * You can also subscribe on any sub-node, i.e. you will receive notification events just about sub-configuration. * No matter how much the sub-configuration has changed you will receive just one notification event that is associated * with a node you are subscribed on. * If a user subscribes on older instance of Config and ones has already been published the last one is automatically * submitted to new-subscriber. * <p> * Note: It does not matter what instance version of Config (related to single {@link Builder} initialization) * a user subscribes on. It is enough to subscribe just on single (e.g. on the first) Config instance. * There is no added value to subscribe again on new Config instance. * * @param onChangeConsumer consumer invoked on change */ default void onChange(Consumer<Config> onChangeConsumer) { // temporary workaround before change support is replaced by one not using Flow API changes().subscribe(ConfigHelper.subscriber(config -> { onChangeConsumer.accept(config); return true; })); }
void subscribePollingStrategy() { etcdWatchSubscriber = new EtcdWatchSubscriber(); try { Flow.Publisher<Long> watchPublisher = etcdClient().watch(endpoint.key()); watchPublisher.subscribe(etcdWatchSubscriber); } catch (EtcdClientException ex) { ticksSubmitter.closeExceptionally( new ConfigException( String.format("Subscription on watching on '%s' key has failed. " + "Watching by '%s' polling strategy will not start.", EtcdWatchPollingStrategy.this.endpoint.key(), EtcdWatchPollingStrategy.this), ex)); } }
private void subscribeOverrideSource() { overrideSourceChangeEventSubscriber = new OverrideSourceChangeEventSubscriber(); overrideSource.changes().subscribe(overrideSourceChangeEventSubscriber); }
private void subscribeConfigSource() { configSourceChangeEventSubscriber = new ConfigSourceChangeEventSubscriber(); configSource.changes().subscribe(configSourceChangeEventSubscriber); }
@Override public void subscribe(Flow.Subscriber<? super Config> subscriber) { delegate.subscribe(new FilteringConfigChangeEventSubscriber(subscriber)); }
void subscribePollingStrategy() { pollingEventSubscriber = new PollingEventSubscriber(); pollingStrategy.ticks().subscribe(pollingEventSubscriber); }
@Override public void subscribe(Flow.Subscriber<? super ConfigDiff> subscriber) { delegate.subscribe(new FilteringConfigChangeEventSubscriber(subscriber)); }
private void subscribeConfigSourceChangesSubscriptions() { compositeConfigSourcesSubscribers = new LinkedList<>(); for (ConfigSource source : lastObjectNodes.keySet()) { ConfigSourceChangeEventSubscriber subscriber = new ConfigSourceChangeEventSubscriber(source); source.changes().subscribe(subscriber); compositeConfigSourcesSubscribers.add(subscriber); } }
@Override public void handle(BiConsumer<T, Pausable> onData, Consumer<Throwable> onError, Runnable onComplete) { synchronized (this) { if (this.subscriber != null) { throw new IllegalStateException("Handler is already registered!"); } this.subscriber = new Subscriber(onData, onError, onComplete); } this.paused = false; publisher.subscribe(this.subscriber); }
@Override public void subscribe(Flow.Subscriber<? super T> subscriber) { delegatePublisher.subscribe(new SuspendableSubscriber<>(subscriber, this::beforeRequestHook, this::afterCancelHook)); numberOfSubscribers.incrementAndGet(); }
@Override public void subscribe(final CoreSubscriber<? super T> actual) { pub.subscribe(new FlowSubscriber<>(actual)); } }
.subscribe(new SubscriberOutputStream(originalStream, outputStreamPublisher::signalCloseComplete));
externalPublisher.subscribe(this); subscriber.onSubscribe(subscribersSubscription);
changes().subscribe(ConfigHelper.subscriber(onNextFunction));