jimu-decompiled/sources/io/reactivex/internal/operators/observable/ObservableConcatMapEager.java
2025-05-13 19:24:51 +02:00

289 lines
11 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.exceptions.Exceptions;
import io.reactivex.functions.Function;
import io.reactivex.internal.disposables.DisposableHelper;
import io.reactivex.internal.functions.ObjectHelper;
import io.reactivex.internal.fuseable.QueueDisposable;
import io.reactivex.internal.fuseable.SimpleQueue;
import io.reactivex.internal.observers.InnerQueuedObserver;
import io.reactivex.internal.observers.InnerQueuedObserverSupport;
import io.reactivex.internal.queue.SpscLinkedArrayQueue;
import io.reactivex.internal.util.AtomicThrowable;
import io.reactivex.internal.util.ErrorMode;
import io.reactivex.plugins.RxJavaPlugins;
import java.util.ArrayDeque;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes2.dex */
public final class ObservableConcatMapEager<T, R> extends AbstractObservableWithUpstream<T, R> {
final Function<? super T, ? extends ObservableSource<? extends R>> b;
final ErrorMode c;
final int d;
final int e;
public ObservableConcatMapEager(ObservableSource<T> observableSource, Function<? super T, ? extends ObservableSource<? extends R>> function, ErrorMode errorMode, int i, int i2) {
super(observableSource);
this.b = function;
this.c = errorMode;
this.d = i;
this.e = i2;
}
@Override // io.reactivex.Observable
protected void subscribeActual(Observer<? super R> observer) {
this.a.subscribe(new ConcatMapEagerMainObserver(observer, this.b, this.d, this.e, this.c));
}
static final class ConcatMapEagerMainObserver<T, R> extends AtomicInteger implements Observer<T>, Disposable, InnerQueuedObserverSupport<R> {
final Observer<? super R> a;
final Function<? super T, ? extends ObservableSource<? extends R>> b;
final int c;
final int d;
final ErrorMode e;
final AtomicThrowable f = new AtomicThrowable();
final ArrayDeque<InnerQueuedObserver<R>> g = new ArrayDeque<>();
SimpleQueue<T> h;
Disposable i;
volatile boolean j;
int k;
volatile boolean l;
InnerQueuedObserver<R> m;
int n;
ConcatMapEagerMainObserver(Observer<? super R> observer, Function<? super T, ? extends ObservableSource<? extends R>> function, int i, int i2, ErrorMode errorMode) {
this.a = observer;
this.b = function;
this.c = i;
this.d = i2;
this.e = errorMode;
}
@Override // io.reactivex.internal.observers.InnerQueuedObserverSupport
public void a(InnerQueuedObserver<R> innerQueuedObserver, R r) {
innerQueuedObserver.queue().offer(r);
a();
}
void b() {
InnerQueuedObserver<R> innerQueuedObserver = this.m;
if (innerQueuedObserver != null) {
innerQueuedObserver.dispose();
}
while (true) {
InnerQueuedObserver<R> poll = this.g.poll();
if (poll == null) {
return;
} else {
poll.dispose();
}
}
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
this.l = true;
if (getAndIncrement() == 0) {
this.h.clear();
b();
}
}
@Override // io.reactivex.Observer
public void onComplete() {
this.j = true;
a();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
if (!this.f.addThrowable(th)) {
RxJavaPlugins.b(th);
} else {
this.j = true;
a();
}
}
@Override // io.reactivex.Observer
public void onNext(T t) {
if (this.k == 0) {
this.h.offer(t);
}
a();
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
if (DisposableHelper.validate(this.i, disposable)) {
this.i = disposable;
if (disposable instanceof QueueDisposable) {
QueueDisposable queueDisposable = (QueueDisposable) disposable;
int requestFusion = queueDisposable.requestFusion(3);
if (requestFusion == 1) {
this.k = requestFusion;
this.h = queueDisposable;
this.j = true;
this.a.onSubscribe(this);
a();
return;
}
if (requestFusion == 2) {
this.k = requestFusion;
this.h = queueDisposable;
this.a.onSubscribe(this);
return;
}
}
this.h = new SpscLinkedArrayQueue(this.d);
this.a.onSubscribe(this);
}
}
@Override // io.reactivex.internal.observers.InnerQueuedObserverSupport
public void a(InnerQueuedObserver<R> innerQueuedObserver, Throwable th) {
if (this.f.addThrowable(th)) {
if (this.e == ErrorMode.IMMEDIATE) {
this.i.dispose();
}
innerQueuedObserver.setDone();
a();
return;
}
RxJavaPlugins.b(th);
}
@Override // io.reactivex.internal.observers.InnerQueuedObserverSupport
public void a(InnerQueuedObserver<R> innerQueuedObserver) {
innerQueuedObserver.setDone();
a();
}
@Override // io.reactivex.internal.observers.InnerQueuedObserverSupport
public void a() {
R poll;
boolean z;
if (getAndIncrement() != 0) {
return;
}
SimpleQueue<T> simpleQueue = this.h;
ArrayDeque<InnerQueuedObserver<R>> arrayDeque = this.g;
Observer<? super R> observer = this.a;
ErrorMode errorMode = this.e;
int i = 1;
while (true) {
int i2 = this.n;
while (i2 != this.c) {
if (this.l) {
simpleQueue.clear();
b();
return;
}
if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) {
simpleQueue.clear();
b();
observer.onError(this.f.terminate());
return;
}
try {
T poll2 = simpleQueue.poll();
if (poll2 == null) {
break;
}
ObservableSource<? extends R> apply = this.b.apply(poll2);
ObjectHelper.a(apply, "The mapper returned a null ObservableSource");
ObservableSource<? extends R> observableSource = apply;
InnerQueuedObserver<R> innerQueuedObserver = new InnerQueuedObserver<>(this, this.d);
arrayDeque.offer(innerQueuedObserver);
observableSource.subscribe(innerQueuedObserver);
i2++;
} catch (Throwable th) {
Exceptions.b(th);
this.i.dispose();
simpleQueue.clear();
b();
this.f.addThrowable(th);
observer.onError(this.f.terminate());
return;
}
}
this.n = i2;
if (this.l) {
simpleQueue.clear();
b();
return;
}
if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) {
simpleQueue.clear();
b();
observer.onError(this.f.terminate());
return;
}
InnerQueuedObserver<R> innerQueuedObserver2 = this.m;
if (innerQueuedObserver2 == null) {
if (errorMode == ErrorMode.BOUNDARY && this.f.get() != null) {
simpleQueue.clear();
b();
observer.onError(this.f.terminate());
return;
}
boolean z2 = this.j;
InnerQueuedObserver<R> poll3 = arrayDeque.poll();
boolean z3 = poll3 == null;
if (z2 && z3) {
if (this.f.get() != null) {
simpleQueue.clear();
b();
observer.onError(this.f.terminate());
return;
}
observer.onComplete();
return;
}
if (!z3) {
this.m = poll3;
}
innerQueuedObserver2 = poll3;
}
if (innerQueuedObserver2 != null) {
SimpleQueue<R> queue = innerQueuedObserver2.queue();
while (!this.l) {
boolean isDone = innerQueuedObserver2.isDone();
if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) {
simpleQueue.clear();
b();
observer.onError(this.f.terminate());
return;
}
try {
poll = queue.poll();
z = poll == null;
} catch (Throwable th2) {
Exceptions.b(th2);
this.f.addThrowable(th2);
this.m = null;
this.n--;
}
if (isDone && z) {
this.m = null;
this.n--;
} else if (!z) {
observer.onNext(poll);
}
}
simpleQueue.clear();
b();
return;
}
i = addAndGet(-i);
if (i == 0) {
return;
}
}
}
}
}