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

97 lines
3.1 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.CompositeException;
import io.reactivex.exceptions.Exceptions;
import io.reactivex.functions.Predicate;
import io.reactivex.internal.disposables.SequentialDisposable;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes2.dex */
public final class ObservableRetryPredicate<T> extends AbstractObservableWithUpstream<T, T> {
final Predicate<? super Throwable> b;
final long c;
static final class RepeatObserver<T> extends AtomicInteger implements Observer<T> {
final Observer<? super T> a;
final SequentialDisposable b;
final ObservableSource<? extends T> c;
final Predicate<? super Throwable> d;
long e;
RepeatObserver(Observer<? super T> observer, long j, Predicate<? super Throwable> predicate, SequentialDisposable sequentialDisposable, ObservableSource<? extends T> observableSource) {
this.a = observer;
this.b = sequentialDisposable;
this.c = observableSource;
this.d = predicate;
this.e = j;
}
void a() {
if (getAndIncrement() == 0) {
int i = 1;
while (!this.b.isDisposed()) {
this.c.subscribe(this);
i = addAndGet(-i);
if (i == 0) {
return;
}
}
}
}
@Override // io.reactivex.Observer
public void onComplete() {
this.a.onComplete();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
long j = this.e;
if (j != Long.MAX_VALUE) {
this.e = j - 1;
}
if (j == 0) {
this.a.onError(th);
return;
}
try {
if (this.d.a(th)) {
a();
} else {
this.a.onError(th);
}
} catch (Throwable th2) {
Exceptions.b(th2);
this.a.onError(new CompositeException(th, th2));
}
}
@Override // io.reactivex.Observer
public void onNext(T t) {
this.a.onNext(t);
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
this.b.update(disposable);
}
}
public ObservableRetryPredicate(Observable<T> observable, long j, Predicate<? super Throwable> predicate) {
super(observable);
this.b = predicate;
this.c = j;
}
@Override // io.reactivex.Observable
public void subscribeActual(Observer<? super T> observer) {
SequentialDisposable sequentialDisposable = new SequentialDisposable();
observer.onSubscribe(sequentialDisposable);
new RepeatObserver(observer, this.c, this.b, sequentialDisposable, this.a).a();
}
}