82 lines
2.5 KiB
Java
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();
|
|
}
|
|
}
|