170 lines
5.8 KiB
Java
170 lines
5.8 KiB
Java
package io.reactivex.internal.operators.observable;
|
|
|
|
import io.reactivex.CompletableObserver;
|
|
import io.reactivex.CompletableSource;
|
|
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.observers.BasicIntQueueDisposable;
|
|
import io.reactivex.internal.util.AtomicThrowable;
|
|
import io.reactivex.plugins.RxJavaPlugins;
|
|
import java.util.concurrent.atomic.AtomicReference;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class ObservableFlatMapCompletable<T> extends AbstractObservableWithUpstream<T, T> {
|
|
final Function<? super T, ? extends CompletableSource> b;
|
|
final boolean c;
|
|
|
|
public ObservableFlatMapCompletable(ObservableSource<T> observableSource, Function<? super T, ? extends CompletableSource> function, boolean z) {
|
|
super(observableSource);
|
|
this.b = function;
|
|
this.c = z;
|
|
}
|
|
|
|
@Override // io.reactivex.Observable
|
|
protected void subscribeActual(Observer<? super T> observer) {
|
|
this.a.subscribe(new FlatMapCompletableMainObserver(observer, this.b, this.c));
|
|
}
|
|
|
|
static final class FlatMapCompletableMainObserver<T> extends BasicIntQueueDisposable<T> implements Observer<T> {
|
|
final Observer<? super T> a;
|
|
final Function<? super T, ? extends CompletableSource> c;
|
|
final boolean d;
|
|
Disposable f;
|
|
volatile boolean g;
|
|
final AtomicThrowable b = new AtomicThrowable();
|
|
final CompositeDisposable e = new CompositeDisposable();
|
|
|
|
final class InnerObserver extends AtomicReference<Disposable> implements CompletableObserver, Disposable {
|
|
InnerObserver() {
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
DisposableHelper.dispose(this);
|
|
}
|
|
|
|
@Override // io.reactivex.CompletableObserver, io.reactivex.MaybeObserver
|
|
public void onComplete() {
|
|
FlatMapCompletableMainObserver.this.a(this);
|
|
}
|
|
|
|
@Override // io.reactivex.CompletableObserver
|
|
public void onError(Throwable th) {
|
|
FlatMapCompletableMainObserver.this.a(this, th);
|
|
}
|
|
|
|
@Override // io.reactivex.CompletableObserver
|
|
public void onSubscribe(Disposable disposable) {
|
|
DisposableHelper.setOnce(this, disposable);
|
|
}
|
|
}
|
|
|
|
FlatMapCompletableMainObserver(Observer<? super T> observer, Function<? super T, ? extends CompletableSource> function, boolean z) {
|
|
this.a = observer;
|
|
this.c = function;
|
|
this.d = z;
|
|
lazySet(1);
|
|
}
|
|
|
|
void a(FlatMapCompletableMainObserver<T>.InnerObserver innerObserver) {
|
|
this.e.c(innerObserver);
|
|
onComplete();
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public void clear() {
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
this.g = true;
|
|
this.f.dispose();
|
|
this.e.dispose();
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public boolean isEmpty() {
|
|
return true;
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onComplete() {
|
|
if (decrementAndGet() == 0) {
|
|
Throwable terminate = this.b.terminate();
|
|
if (terminate != null) {
|
|
this.a.onError(terminate);
|
|
} else {
|
|
this.a.onComplete();
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onError(Throwable th) {
|
|
if (!this.b.addThrowable(th)) {
|
|
RxJavaPlugins.b(th);
|
|
return;
|
|
}
|
|
if (this.d) {
|
|
if (decrementAndGet() == 0) {
|
|
this.a.onError(this.b.terminate());
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
dispose();
|
|
if (getAndSet(0) > 0) {
|
|
this.a.onError(this.b.terminate());
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onNext(T t) {
|
|
try {
|
|
CompletableSource apply = this.c.apply(t);
|
|
ObjectHelper.a(apply, "The mapper returned a null CompletableSource");
|
|
CompletableSource completableSource = apply;
|
|
getAndIncrement();
|
|
InnerObserver innerObserver = new InnerObserver();
|
|
if (this.g || !this.e.b(innerObserver)) {
|
|
return;
|
|
}
|
|
completableSource.a(innerObserver);
|
|
} catch (Throwable th) {
|
|
Exceptions.b(th);
|
|
this.f.dispose();
|
|
onError(th);
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.Observer
|
|
public void onSubscribe(Disposable disposable) {
|
|
if (DisposableHelper.validate(this.f, disposable)) {
|
|
this.f = disposable;
|
|
this.a.onSubscribe(this);
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public T poll() throws Exception {
|
|
return null;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.QueueFuseable
|
|
public int requestFusion(int i) {
|
|
return i & 2;
|
|
}
|
|
|
|
void a(FlatMapCompletableMainObserver<T>.InnerObserver innerObserver, Throwable th) {
|
|
this.e.c(innerObserver);
|
|
onError(th);
|
|
}
|
|
}
|
|
}
|