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

142 lines
4.3 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.internal.disposables.DisposableHelper;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes2.dex */
public final class ObservableThrottleLatest<T> extends AbstractObservableWithUpstream<T, T> {
final long b;
final TimeUnit c;
final Scheduler d;
final boolean e;
static final class ThrottleLatestObserver<T> extends AtomicInteger implements Observer<T>, Disposable, Runnable {
final Observer<? super T> a;
final long b;
final TimeUnit c;
final Scheduler.Worker d;
final boolean e;
final AtomicReference<T> f = new AtomicReference<>();
Disposable g;
volatile boolean h;
Throwable i;
volatile boolean j;
volatile boolean k;
boolean l;
ThrottleLatestObserver(Observer<? super T> observer, long j, TimeUnit timeUnit, Scheduler.Worker worker, boolean z) {
this.a = observer;
this.b = j;
this.c = timeUnit;
this.d = worker;
this.e = z;
}
void a() {
if (getAndIncrement() != 0) {
return;
}
AtomicReference<T> atomicReference = this.f;
Observer<? super T> observer = this.a;
int i = 1;
while (!this.j) {
boolean z = this.h;
if (z && this.i != null) {
atomicReference.lazySet(null);
observer.onError(this.i);
this.d.dispose();
return;
}
boolean z2 = atomicReference.get() == null;
if (z) {
T andSet = atomicReference.getAndSet(null);
if (!z2 && this.e) {
observer.onNext(andSet);
}
observer.onComplete();
this.d.dispose();
return;
}
if (z2) {
if (this.k) {
this.l = false;
this.k = false;
}
} else if (!this.l || this.k) {
observer.onNext(atomicReference.getAndSet(null));
this.k = false;
this.l = true;
this.d.a(this, this.b, this.c);
}
i = addAndGet(-i);
if (i == 0) {
return;
}
}
atomicReference.lazySet(null);
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
this.j = true;
this.g.dispose();
this.d.dispose();
if (getAndIncrement() == 0) {
this.f.lazySet(null);
}
}
@Override // io.reactivex.Observer
public void onComplete() {
this.h = true;
a();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
this.i = th;
this.h = true;
a();
}
@Override // io.reactivex.Observer
public void onNext(T t) {
this.f.set(t);
a();
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
if (DisposableHelper.validate(this.g, disposable)) {
this.g = disposable;
this.a.onSubscribe(this);
}
}
@Override // java.lang.Runnable
public void run() {
this.k = true;
a();
}
}
public ObservableThrottleLatest(Observable<T> observable, long j, TimeUnit timeUnit, Scheduler scheduler, boolean z) {
super(observable);
this.b = j;
this.c = timeUnit;
this.d = scheduler;
this.e = z;
}
@Override // io.reactivex.Observable
protected void subscribeActual(Observer<? super T> observer) {
this.a.subscribe(new ThrottleLatestObserver(observer, this.b, this.c, this.d.a(), this.e));
}
}