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

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

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

import java.util.concurrent.atomic.AtomicBoolean;

import rx.Observable;
import rx.Observable.OnSubscribe;
import rx.Subscriber;

public final class OnSubscribeCacheResetable implements OnSubscribe {

    private final AtomicBoolean refresh = new AtomicBoolean(true);
    private final Observable source;
    private volatile Observable current;

    public OnSubscribeCacheResetable(Observable source) {
        this.source = source;
        this.current = source;
    }

    @Override
    public void call(Subscriber subscriber) {
        if (refresh.compareAndSet(true, false)) {
            current = source.cache();
        }
        current.unsafeSubscribe(subscriber);
    }

    public void reset() {
        refresh.set(true);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy