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

se.fortnox.reactivewizard.util.FluxRxConverter Maven / Gradle / Ivy

package se.fortnox.reactivewizard.util;

import org.reactivestreams.Subscription;
import reactor.core.publisher.Flux;
import rx.Observable;

public class FluxRxConverter {

    public static  Flux observableToFlux(Observable result) {
        return Flux.from(subscriber -> result.subscribe(new FluxRxSubscriber(subscriber)));
    }

    private static class FluxRxSubscriber extends rx.Subscriber {

        private final org.reactivestreams.Subscriber subscriber;

        public FluxRxSubscriber(org.reactivestreams.Subscriber subscriber) {
            this.subscriber = subscriber;
        }

        @Override
        public void onStart() {
            subscriber.onSubscribe(new Subscription() {
                @Override
                public void request(long count) {
                    FluxRxSubscriber.this.request(count);
                }

                @Override
                public void cancel() {
                    FluxRxSubscriber.this.unsubscribe();
                }
            });
        }

        @Override
        public void onCompleted() {
            subscriber.onComplete();
        }

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

        @Override
        public void onNext(T item) {
            subscriber.onNext(item);
        }

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy