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

144 lines
4.4 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.Scheduler;
import io.reactivex.disposables.Disposable;
import io.reactivex.internal.disposables.DisposableHelper;
import io.reactivex.observers.SerializedObserver;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes2.dex */
public final class ObservableSampleTimed<T> extends AbstractObservableWithUpstream<T, T> {
final long b;
final TimeUnit c;
final Scheduler d;
final boolean e;
static final class SampleTimedEmitLast<T> extends SampleTimedObserver<T> {
final AtomicInteger g;
SampleTimedEmitLast(Observer<? super T> observer, long j, TimeUnit timeUnit, Scheduler scheduler) {
super(observer, j, timeUnit, scheduler);
this.g = new AtomicInteger(1);
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleTimed.SampleTimedObserver
void b() {
c();
if (this.g.decrementAndGet() == 0) {
this.a.onComplete();
}
}
@Override // java.lang.Runnable
public void run() {
if (this.g.incrementAndGet() == 2) {
c();
if (this.g.decrementAndGet() == 0) {
this.a.onComplete();
}
}
}
}
static final class SampleTimedNoLast<T> extends SampleTimedObserver<T> {
SampleTimedNoLast(Observer<? super T> observer, long j, TimeUnit timeUnit, Scheduler scheduler) {
super(observer, j, timeUnit, scheduler);
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleTimed.SampleTimedObserver
void b() {
this.a.onComplete();
}
@Override // java.lang.Runnable
public void run() {
c();
}
}
static abstract class SampleTimedObserver<T> extends AtomicReference<T> implements Observer<T>, Disposable, Runnable {
final Observer<? super T> a;
final long b;
final TimeUnit c;
final Scheduler d;
final AtomicReference<Disposable> e = new AtomicReference<>();
Disposable f;
SampleTimedObserver(Observer<? super T> observer, long j, TimeUnit timeUnit, Scheduler scheduler) {
this.a = observer;
this.b = j;
this.c = timeUnit;
this.d = scheduler;
}
void a() {
DisposableHelper.dispose(this.e);
}
abstract void b();
void c() {
T andSet = getAndSet(null);
if (andSet != null) {
this.a.onNext(andSet);
}
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
a();
this.f.dispose();
}
@Override // io.reactivex.Observer
public void onComplete() {
a();
b();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
a();
this.a.onError(th);
}
@Override // io.reactivex.Observer
public void onNext(T t) {
lazySet(t);
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
if (DisposableHelper.validate(this.f, disposable)) {
this.f = disposable;
this.a.onSubscribe(this);
Scheduler scheduler = this.d;
long j = this.b;
DisposableHelper.replace(this.e, scheduler.a(this, j, j, this.c));
}
}
}
public ObservableSampleTimed(ObservableSource<T> observableSource, long j, TimeUnit timeUnit, Scheduler scheduler, boolean z) {
super(observableSource);
this.b = j;
this.c = timeUnit;
this.d = scheduler;
this.e = z;
}
@Override // io.reactivex.Observable
public void subscribeActual(Observer<? super T> observer) {
SerializedObserver serializedObserver = new SerializedObserver(observer);
if (this.e) {
this.a.subscribe(new SampleTimedEmitLast(serializedObserver, this.b, this.c, this.d));
} else {
this.a.subscribe(new SampleTimedNoLast(serializedObserver, this.b, this.c, this.d));
}
}
}