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

277 lines
9.8 KiB
Java

package io.reactivex.internal.operators.observable;
import android.Manifest;
import io.reactivex.MaybeObserver;
import io.reactivex.MaybeSource;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.CompositeDisposable;
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.queue.SpscLinkedArrayQueue;
import io.reactivex.internal.util.AtomicThrowable;
import io.reactivex.plugins.RxJavaPlugins;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes2.dex */
public final class ObservableFlatMapMaybe<T, R> extends AbstractObservableWithUpstream<T, R> {
final Function<? super T, ? extends MaybeSource<? extends R>> b;
final boolean c;
public ObservableFlatMapMaybe(ObservableSource<T> observableSource, Function<? super T, ? extends MaybeSource<? extends R>> function, boolean z) {
super(observableSource);
this.b = function;
this.c = z;
}
@Override // io.reactivex.Observable
protected void subscribeActual(Observer<? super R> observer) {
this.a.subscribe(new FlatMapMaybeObserver(observer, this.b, this.c));
}
static final class FlatMapMaybeObserver<T, R> extends AtomicInteger implements Observer<T>, Disposable {
final Observer<? super R> a;
final boolean b;
final Function<? super T, ? extends MaybeSource<? extends R>> f;
Disposable h;
volatile boolean i;
final CompositeDisposable c = new CompositeDisposable();
final AtomicThrowable e = new AtomicThrowable();
final AtomicInteger d = new AtomicInteger(1);
final AtomicReference<SpscLinkedArrayQueue<R>> g = new AtomicReference<>();
final class InnerObserver extends AtomicReference<Disposable> implements MaybeObserver<R>, Disposable {
InnerObserver() {
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
DisposableHelper.dispose(this);
}
@Override // io.reactivex.MaybeObserver
public void onComplete() {
FlatMapMaybeObserver.this.a(this);
}
@Override // io.reactivex.MaybeObserver
public void onError(Throwable th) {
FlatMapMaybeObserver.this.a(this, th);
}
@Override // io.reactivex.MaybeObserver
public void onSubscribe(Disposable disposable) {
DisposableHelper.setOnce(this, disposable);
}
@Override // io.reactivex.MaybeObserver
public void onSuccess(R r) {
FlatMapMaybeObserver.this.a((FlatMapMaybeObserver<T, InnerObserver>.InnerObserver) this, (InnerObserver) r);
}
}
FlatMapMaybeObserver(Observer<? super R> observer, Function<? super T, ? extends MaybeSource<? extends R>> function, boolean z) {
this.a = observer;
this.f = function;
this.b = z;
}
void a(FlatMapMaybeObserver<T, R>.InnerObserver innerObserver, R r) {
this.c.c(innerObserver);
if (get() == 0) {
if (compareAndSet(0, 1)) {
this.a.onNext(r);
boolean z = this.d.decrementAndGet() == 0;
SpscLinkedArrayQueue<R> spscLinkedArrayQueue = this.g.get();
if (!z || (spscLinkedArrayQueue != null && !spscLinkedArrayQueue.isEmpty())) {
if (decrementAndGet() == 0) {
return;
}
c();
} else {
Throwable terminate = this.e.terminate();
if (terminate != null) {
this.a.onError(terminate);
return;
} else {
this.a.onComplete();
return;
}
}
}
}
SpscLinkedArrayQueue<R> d = d();
synchronized (d) {
d.offer(r);
}
this.d.decrementAndGet();
if (getAndIncrement() != 0) {
return;
}
c();
}
void b() {
if (getAndIncrement() == 0) {
c();
}
}
void c() {
Observer<? super R> observer = this.a;
AtomicInteger atomicInteger = this.d;
AtomicReference<SpscLinkedArrayQueue<R>> atomicReference = this.g;
int i = 1;
while (!this.i) {
if (!this.b && this.e.get() != null) {
Throwable terminate = this.e.terminate();
a();
observer.onError(terminate);
return;
}
boolean z = atomicInteger.get() == 0;
SpscLinkedArrayQueue<R> spscLinkedArrayQueue = atomicReference.get();
Manifest poll = spscLinkedArrayQueue != null ? spscLinkedArrayQueue.poll() : null;
boolean z2 = poll == null;
if (z && z2) {
Throwable terminate2 = this.e.terminate();
if (terminate2 != null) {
observer.onError(terminate2);
return;
} else {
observer.onComplete();
return;
}
}
if (z2) {
i = addAndGet(-i);
if (i == 0) {
return;
}
} else {
observer.onNext(poll);
}
}
a();
}
SpscLinkedArrayQueue<R> d() {
SpscLinkedArrayQueue<R> spscLinkedArrayQueue;
do {
SpscLinkedArrayQueue<R> spscLinkedArrayQueue2 = this.g.get();
if (spscLinkedArrayQueue2 != null) {
return spscLinkedArrayQueue2;
}
spscLinkedArrayQueue = new SpscLinkedArrayQueue<>(Observable.bufferSize());
} while (!this.g.compareAndSet(null, spscLinkedArrayQueue));
return spscLinkedArrayQueue;
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
this.i = true;
this.h.dispose();
this.c.dispose();
}
@Override // io.reactivex.Observer
public void onComplete() {
this.d.decrementAndGet();
b();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
this.d.decrementAndGet();
if (!this.e.addThrowable(th)) {
RxJavaPlugins.b(th);
return;
}
if (!this.b) {
this.c.dispose();
}
b();
}
@Override // io.reactivex.Observer
public void onNext(T t) {
try {
MaybeSource<? extends R> apply = this.f.apply(t);
ObjectHelper.a(apply, "The mapper returned a null MaybeSource");
MaybeSource<? extends R> maybeSource = apply;
this.d.getAndIncrement();
InnerObserver innerObserver = new InnerObserver();
if (this.i || !this.c.b(innerObserver)) {
return;
}
maybeSource.a(innerObserver);
} catch (Throwable th) {
Exceptions.b(th);
this.h.dispose();
onError(th);
}
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
if (DisposableHelper.validate(this.h, disposable)) {
this.h = disposable;
this.a.onSubscribe(this);
}
}
void a(FlatMapMaybeObserver<T, R>.InnerObserver innerObserver, Throwable th) {
this.c.c(innerObserver);
if (this.e.addThrowable(th)) {
if (!this.b) {
this.h.dispose();
this.c.dispose();
}
this.d.decrementAndGet();
b();
return;
}
RxJavaPlugins.b(th);
}
void a(FlatMapMaybeObserver<T, R>.InnerObserver innerObserver) {
this.c.c(innerObserver);
if (get() == 0) {
if (compareAndSet(0, 1)) {
boolean z = this.d.decrementAndGet() == 0;
SpscLinkedArrayQueue<R> spscLinkedArrayQueue = this.g.get();
if (z && (spscLinkedArrayQueue == null || spscLinkedArrayQueue.isEmpty())) {
Throwable terminate = this.e.terminate();
if (terminate != null) {
this.a.onError(terminate);
return;
} else {
this.a.onComplete();
return;
}
}
if (decrementAndGet() == 0) {
return;
}
c();
return;
}
}
this.d.decrementAndGet();
b();
}
void a() {
SpscLinkedArrayQueue<R> spscLinkedArrayQueue = this.g.get();
if (spscLinkedArrayQueue != null) {
spscLinkedArrayQueue.clear();
}
}
}
}