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

81 lines
2.6 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.Observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.exceptions.Exceptions;
import io.reactivex.functions.BooleanSupplier;
import io.reactivex.internal.disposables.SequentialDisposable;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes2.dex */
public final class ObservableRepeatUntil<T> extends AbstractObservableWithUpstream<T, T> {
final BooleanSupplier b;
static final class RepeatUntilObserver<T> extends AtomicInteger implements Observer<T> {
final Observer<? super T> a;
final SequentialDisposable b;
final ObservableSource<? extends T> c;
final BooleanSupplier d;
RepeatUntilObserver(Observer<? super T> observer, BooleanSupplier booleanSupplier, SequentialDisposable sequentialDisposable, ObservableSource<? extends T> observableSource) {
this.a = observer;
this.b = sequentialDisposable;
this.c = observableSource;
this.d = booleanSupplier;
}
void a() {
if (getAndIncrement() == 0) {
int i = 1;
do {
this.c.subscribe(this);
i = addAndGet(-i);
} while (i != 0);
}
}
@Override // io.reactivex.Observer
public void onComplete() {
try {
if (this.d.a()) {
this.a.onComplete();
} else {
a();
}
} catch (Throwable th) {
Exceptions.b(th);
this.a.onError(th);
}
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
this.a.onError(th);
}
@Override // io.reactivex.Observer
public void onNext(T t) {
this.a.onNext(t);
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
this.b.replace(disposable);
}
}
public ObservableRepeatUntil(Observable<T> observable, BooleanSupplier booleanSupplier) {
super(observable);
this.b = booleanSupplier;
}
@Override // io.reactivex.Observable
public void subscribeActual(Observer<? super T> observer) {
SequentialDisposable sequentialDisposable = new SequentialDisposable();
observer.onSubscribe(sequentialDisposable);
new RepeatUntilObserver(observer, this.b, sequentialDisposable, this.a).a();
}
}