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

82 lines
2.5 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.internal.disposables.SequentialDisposable;
import java.util.concurrent.atomic.AtomicInteger;
/* loaded from: classes2.dex */
public final class ObservableRepeat<T> extends AbstractObservableWithUpstream<T, T> {
final long b;
static final class RepeatObserver<T> extends AtomicInteger implements Observer<T> {
final Observer<? super T> a;
final SequentialDisposable b;
final ObservableSource<? extends T> c;
long d;
RepeatObserver(Observer<? super T> observer, long j, SequentialDisposable sequentialDisposable, ObservableSource<? extends T> observableSource) {
this.a = observer;
this.b = sequentialDisposable;
this.c = observableSource;
this.d = 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() {
long j = this.d;
if (j != Long.MAX_VALUE) {
this.d = j - 1;
}
if (j != 0) {
a();
} else {
this.a.onComplete();
}
}
@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 ObservableRepeat(Observable<T> observable, long j) {
super(observable);
this.b = j;
}
@Override // io.reactivex.Observable
public void subscribeActual(Observer<? super T> observer) {
SequentialDisposable sequentialDisposable = new SequentialDisposable();
observer.onSubscribe(sequentialDisposable);
long j = this.b;
new RepeatObserver(observer, j != Long.MAX_VALUE ? j - 1 : Long.MAX_VALUE, sequentialDisposable, this.a).a();
}
}