Class ProducerObserverArbiter<T>
- java.lang.Object
-
- rx.internal.producers.ProducerObserverArbiter<T>
-
- Type Parameters:
T- the value type
public final class ProducerObserverArbiter<T> extends java.lang.Object implements Producer, Observer<T>
Producer that serializes any event emission with requesting and producer changes.The implementation shortcuts on error and overwrites producers that got delayed, similar to ProducerArbiter.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) Subscriber<? super T>child(package private) ProducercurrentProducer(package private) booleanemitting(package private) booleanhasError(package private) ProducermissedProducer(package private) longmissedRequested(package private) java.lang.ObjectmissedTerminal(package private) static ProducerNULL_PRODUCER(package private) java.util.List<T>queue(package private) longrequested
-
Constructor Summary
Constructors Constructor Description ProducerObserverArbiter(Subscriber<? super T> child)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) voidemitLoop()voidonCompleted()Notifies the Observer that theObservablehas finished sending push-based notifications.voidonError(java.lang.Throwable e)Notifies the Observer that theObservablehas experienced an error condition.voidonNext(T t)Provides the Observer with a new item to observe.voidrequest(long n)Request a certain maximum number of items from this Producer.voidsetProducer(Producer p)
-
-
-
Field Detail
-
child
final Subscriber<? super T> child
-
emitting
boolean emitting
-
queue
java.util.List<T> queue
-
currentProducer
Producer currentProducer
-
requested
long requested
-
missedRequested
long missedRequested
-
missedProducer
Producer missedProducer
-
missedTerminal
java.lang.Object missedTerminal
-
hasError
volatile boolean hasError
-
NULL_PRODUCER
static final Producer NULL_PRODUCER
-
-
Constructor Detail
-
ProducerObserverArbiter
public ProducerObserverArbiter(Subscriber<? super T> child)
-
-
Method Detail
-
onNext
public void onNext(T t)
Description copied from interface:ObserverProvides the Observer with a new item to observe.The
Observablemay call this method 0 or more times.The
Observablewill not call this method again after it calls eitherObserver.onCompleted()orObserver.onError(java.lang.Throwable).
-
onError
public void onError(java.lang.Throwable e)
Description copied from interface:ObserverNotifies the Observer that theObservablehas experienced an error condition.If the
Observablecalls this method, it will not thereafter callObserver.onNext(T)orObserver.onCompleted().
-
onCompleted
public void onCompleted()
Description copied from interface:ObserverNotifies the Observer that theObservablehas finished sending push-based notifications.The
Observablewill not call this method if it callsObserver.onError(java.lang.Throwable).- Specified by:
onCompletedin interfaceObserver<T>
-
request
public void request(long n)
Description copied from interface:ProducerRequest a certain maximum number of items from this Producer. This is a way of requesting backpressure. To disable backpressure, passLong.MAX_VALUEto this method.Requests are additive but if a sequence of requests totals more than
Long.MAX_VALUEthenLong.MAX_VALUErequests will be actioned and the extras may be ignored. Arriving atLong.MAX_VALUEby addition of requests cannot be assumed to disable backpressure. For example, the code below may result inLong.MAX_VALUErequests being actioned only.request(100); request(Long.MAX_VALUE-1);
-
setProducer
public void setProducer(Producer p)
-
emitLoop
void emitLoop()
-
-