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

au.gov.amsa.streams.OnSubscribeJustOneWithBackpressure Maven / Gradle / Ivy

There is a newer version: 0.6.19
Show newest version
package au.gov.amsa.streams;

import java.util.concurrent.atomic.AtomicBoolean;

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

public class OnSubscribeJustOneWithBackpressure implements OnSubscribe {

	private final T value;

	public OnSubscribeJustOneWithBackpressure(T t) {
		value = t;
	}

	@Override
	public void call(final Subscriber child) {

		child.setProducer(new Producer() {

			private final AtomicBoolean emitted = new AtomicBoolean(false);

			@Override
			public void request(long n) {
				if (n > 0) {
					if (emitted.compareAndSet(false, true)) {
						child.onNext(value);
						child.onCompleted();
					}
				}
			}
		});
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy