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

196 lines
6.0 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.internal.disposables.DisposableHelper;
import io.reactivex.observers.SerializedObserver;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
/* loaded from: classes2.dex */
public final class ObservableSampleWithObservable<T> extends AbstractObservableWithUpstream<T, T> {
final ObservableSource<?> b;
final boolean c;
static final class SampleMainEmitLast<T> extends SampleMainObserver<T> {
final AtomicInteger e;
volatile boolean f;
SampleMainEmitLast(Observer<? super T> observer, ObservableSource<?> observableSource) {
super(observer, observableSource);
this.e = new AtomicInteger();
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void b() {
this.f = true;
if (this.e.getAndIncrement() == 0) {
d();
this.a.onComplete();
}
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void c() {
this.f = true;
if (this.e.getAndIncrement() == 0) {
d();
this.a.onComplete();
}
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void e() {
if (this.e.getAndIncrement() == 0) {
do {
boolean z = this.f;
d();
if (z) {
this.a.onComplete();
return;
}
} while (this.e.decrementAndGet() != 0);
}
}
}
static final class SampleMainNoLast<T> extends SampleMainObserver<T> {
SampleMainNoLast(Observer<? super T> observer, ObservableSource<?> observableSource) {
super(observer, observableSource);
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void b() {
this.a.onComplete();
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void c() {
this.a.onComplete();
}
@Override // io.reactivex.internal.operators.observable.ObservableSampleWithObservable.SampleMainObserver
void e() {
d();
}
}
static abstract class SampleMainObserver<T> extends AtomicReference<T> implements Observer<T>, Disposable {
final Observer<? super T> a;
final ObservableSource<?> b;
final AtomicReference<Disposable> c = new AtomicReference<>();
Disposable d;
SampleMainObserver(Observer<? super T> observer, ObservableSource<?> observableSource) {
this.a = observer;
this.b = observableSource;
}
boolean a(Disposable disposable) {
return DisposableHelper.setOnce(this.c, disposable);
}
abstract void b();
abstract void c();
void d() {
T andSet = getAndSet(null);
if (andSet != null) {
this.a.onNext(andSet);
}
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
DisposableHelper.dispose(this.c);
this.d.dispose();
}
abstract void e();
@Override // io.reactivex.Observer
public void onComplete() {
DisposableHelper.dispose(this.c);
b();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
DisposableHelper.dispose(this.c);
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.d, disposable)) {
this.d = disposable;
this.a.onSubscribe(this);
if (this.c.get() == null) {
this.b.subscribe(new SamplerObserver(this));
}
}
}
public void a(Throwable th) {
this.d.dispose();
this.a.onError(th);
}
public void a() {
this.d.dispose();
c();
}
}
static final class SamplerObserver<T> implements Observer<Object> {
final SampleMainObserver<T> a;
SamplerObserver(SampleMainObserver<T> sampleMainObserver) {
this.a = sampleMainObserver;
}
@Override // io.reactivex.Observer
public void onComplete() {
this.a.a();
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
this.a.a(th);
}
@Override // io.reactivex.Observer
public void onNext(Object obj) {
this.a.e();
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
this.a.a(disposable);
}
}
public ObservableSampleWithObservable(ObservableSource<T> observableSource, ObservableSource<?> observableSource2, boolean z) {
super(observableSource);
this.b = observableSource2;
this.c = z;
}
@Override // io.reactivex.Observable
public void subscribeActual(Observer<? super T> observer) {
SerializedObserver serializedObserver = new SerializedObserver(observer);
if (this.c) {
this.a.subscribe(new SampleMainEmitLast(serializedObserver, this.b));
} else {
this.a.subscribe(new SampleMainNoLast(serializedObserver, this.b));
}
}
}