92 lines
2.8 KiB
Java
92 lines
2.8 KiB
Java
package io.reactivex.internal.observers;
|
|
|
|
import io.reactivex.Observer;
|
|
import io.reactivex.disposables.Disposable;
|
|
import io.reactivex.internal.disposables.DisposableHelper;
|
|
import io.reactivex.internal.fuseable.QueueDisposable;
|
|
import io.reactivex.internal.fuseable.SimpleQueue;
|
|
import io.reactivex.internal.util.QueueDrainHelper;
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class InnerQueuedObserver<T> extends AtomicReference<Disposable> implements Observer<T>, Disposable {
|
|
private static final long serialVersionUID = -5417183359794346637L;
|
|
volatile boolean done;
|
|
int fusionMode;
|
|
final InnerQueuedObserverSupport<T> parent;
|
|
final int prefetch;
|
|
SimpleQueue<T> queue;
|
|
|
|
public InnerQueuedObserver(InnerQueuedObserverSupport<T> innerQueuedObserverSupport, int i) {
|
|
this.parent = innerQueuedObserverSupport;
|
|
this.prefetch = i;
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
DisposableHelper.dispose(this);
|
|
}
|
|
|
|
public int fusionMode() {
|
|
return this.fusionMode;
|
|
}
|
|
|
|
public boolean isDisposed() {
|
|
return DisposableHelper.isDisposed(get());
|
|
}
|
|
|
|
public boolean isDone() {
|
|
return this.done;
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onComplete() {
|
|
this.parent.a(this);
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onError(Throwable th) {
|
|
this.parent.a((InnerQueuedObserver) this, th);
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onNext(T t) {
|
|
if (this.fusionMode == 0) {
|
|
this.parent.a((InnerQueuedObserver<InnerQueuedObserver<T>>) this, (InnerQueuedObserver<T>) t);
|
|
} else {
|
|
this.parent.a();
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onSubscribe(Disposable disposable) {
|
|
if (DisposableHelper.setOnce(this, disposable)) {
|
|
if (disposable instanceof QueueDisposable) {
|
|
QueueDisposable queueDisposable = (QueueDisposable) disposable;
|
|
int requestFusion = queueDisposable.requestFusion(3);
|
|
if (requestFusion == 1) {
|
|
this.fusionMode = requestFusion;
|
|
this.queue = queueDisposable;
|
|
this.done = true;
|
|
this.parent.a(this);
|
|
return;
|
|
}
|
|
if (requestFusion == 2) {
|
|
this.fusionMode = requestFusion;
|
|
this.queue = queueDisposable;
|
|
return;
|
|
}
|
|
}
|
|
this.queue = QueueDrainHelper.a(-this.prefetch);
|
|
}
|
|
}
|
|
|
|
public SimpleQueue<T> queue() {
|
|
return this.queue;
|
|
}
|
|
|
|
public void setDone() {
|
|
this.done = true;
|
|
}
|
|
}
|