89 lines
2.4 KiB
Java
89 lines
2.4 KiB
Java
package io.reactivex.internal.operators.observable;
|
|
|
|
import io.reactivex.Observable;
|
|
import io.reactivex.Observer;
|
|
import io.reactivex.internal.observers.BasicIntQueueDisposable;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class ObservableRangeLong extends Observable<Long> {
|
|
private final long a;
|
|
private final long b;
|
|
|
|
static final class RangeDisposable extends BasicIntQueueDisposable<Long> {
|
|
final Observer<? super Long> a;
|
|
final long b;
|
|
long c;
|
|
boolean d;
|
|
|
|
RangeDisposable(Observer<? super Long> observer, long j, long j2) {
|
|
this.a = observer;
|
|
this.c = j;
|
|
this.b = j2;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public void clear() {
|
|
this.c = this.b;
|
|
lazySet(1);
|
|
}
|
|
|
|
@Override // io.reactivex.disposables.Disposable
|
|
public void dispose() {
|
|
set(1);
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public boolean isEmpty() {
|
|
return this.c == this.b;
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.QueueFuseable
|
|
public int requestFusion(int i) {
|
|
if ((i & 1) == 0) {
|
|
return 0;
|
|
}
|
|
this.d = true;
|
|
return 1;
|
|
}
|
|
|
|
void run() {
|
|
if (this.d) {
|
|
return;
|
|
}
|
|
Observer<? super Long> observer = this.a;
|
|
long j = this.b;
|
|
for (long j2 = this.c; j2 != j && get() == 0; j2++) {
|
|
observer.onNext(Long.valueOf(j2));
|
|
}
|
|
if (get() == 0) {
|
|
lazySet(1);
|
|
observer.onComplete();
|
|
}
|
|
}
|
|
|
|
@Override // io.reactivex.internal.fuseable.SimpleQueue
|
|
public Long poll() throws Exception {
|
|
long j = this.c;
|
|
if (j != this.b) {
|
|
this.c = 1 + j;
|
|
return Long.valueOf(j);
|
|
}
|
|
lazySet(1);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public ObservableRangeLong(long j, long j2) {
|
|
this.a = j;
|
|
this.b = j2;
|
|
}
|
|
|
|
@Override // io.reactivex.Observable
|
|
protected void subscribeActual(Observer<? super Long> observer) {
|
|
long j = this.a;
|
|
RangeDisposable rangeDisposable = new RangeDisposable(observer, j, j + this.b);
|
|
observer.onSubscribe(rangeDisposable);
|
|
rangeDisposable.run();
|
|
}
|
|
}
|