196 lines
6.0 KiB
Java
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));
|
|
}
|
|
}
|
|
}
|