All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sproutigy.commons.async.collections.ReactiveStreamsUtil Maven / Gradle / Ivy

The newest version!
package com.sproutigy.commons.async.collections;

import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;

import java.util.Iterator;

public final class ReactiveStreamsUtil {
    private ReactiveStreamsUtil() {
    }

    public static  Iterable asIterable(Publisher publisher) {
        return new BlockingIterable<>(publisher);
    }

    public static  Iterator asIterator(Publisher publisher) {
        return new BlockingIterator<>(publisher);
    }

    public static  void bindReactiveIterator(Publisher publisher, final ReactiveIterator reactiveIterator) {
        publisher.subscribe(new Subscriber() {
            private Subscription subscription;

            @Override
            public void onSubscribe(Subscription subscription) {
                this.subscription = subscription;
                subscription.request(1);
            }

            @Override
            public void onNext(T element) {
                reactiveIterator.onNext(element);
                subscription.request(1);
            }

            @Override
            public void onError(Throwable error) {
                reactiveIterator.onFailure(error);
            }

            @Override
            public void onComplete() {
                reactiveIterator.onComplete();
            }
        });
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy