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

com.github.davidmoten.rx.internal.operators.OperatorUnsubscribeEagerly Maven / Gradle / Ivy

package com.github.davidmoten.rx.internal.operators;

import rx.Observable.Operator;
import rx.Subscriber;

public final class OperatorUnsubscribeEagerly implements Operator {

    private OperatorUnsubscribeEagerly() {
        // no instantiation outside of this class
    }

    private static final class Singleton {
        private static final OperatorUnsubscribeEagerly INSTANCE = new OperatorUnsubscribeEagerly();
    }

    @SuppressWarnings("unchecked")
    public static final  OperatorUnsubscribeEagerly instance() {
        return (OperatorUnsubscribeEagerly) Singleton.INSTANCE;
    }

    @Override
    public Subscriber call(final Subscriber child) {
        Subscriber parent = new Subscriber() {

            @Override
            public void onCompleted() {
                unsubscribe();
                child.onCompleted();
            }

            @Override
            public void onError(Throwable e) {
                unsubscribe();
                child.onError(e);
            }

            @Override
            public void onNext(T t) {
                child.onNext(t);
            }

        };
        child.add(parent);
        return parent;
    }

}