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

247 lines
8.7 KiB
Java

package io.reactivex.internal.operators.observable;
import io.reactivex.ObservableSource;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.exceptions.Exceptions;
import io.reactivex.functions.Function;
import io.reactivex.internal.disposables.DisposableHelper;
import io.reactivex.internal.disposables.EmptyDisposable;
import io.reactivex.internal.functions.ObjectHelper;
import io.reactivex.internal.util.AtomicThrowable;
import io.reactivex.internal.util.HalfSerializer;
import io.reactivex.plugins.RxJavaPlugins;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.concurrent.atomic.AtomicReferenceArray;
/* loaded from: classes2.dex */
public final class ObservableWithLatestFromMany<T, R> extends AbstractObservableWithUpstream<T, R> {
final ObservableSource<?>[] b;
final Iterable<? extends ObservableSource<?>> c;
final Function<? super Object[], R> d;
final class SingletonArrayFunc implements Function<T, R> {
SingletonArrayFunc() {
}
/* JADX WARN: Type inference failed for: r1v1, types: [java.lang.Object, java.lang.Object[]] */
@Override // io.reactivex.functions.Function
public R apply(T t) throws Exception {
R apply = ObservableWithLatestFromMany.this.d.apply(new Object[]{t});
ObjectHelper.a(apply, "The combiner returned a null value");
return apply;
}
}
static final class WithLatestInnerObserver extends AtomicReference<Disposable> implements Observer<Object> {
final WithLatestFromObserver<?, ?> a;
final int b;
boolean c;
WithLatestInnerObserver(WithLatestFromObserver<?, ?> withLatestFromObserver, int i) {
this.a = withLatestFromObserver;
this.b = i;
}
public void a() {
DisposableHelper.dispose(this);
}
@Override // io.reactivex.Observer
public void onComplete() {
this.a.a(this.b, this.c);
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
this.a.a(this.b, th);
}
@Override // io.reactivex.Observer
public void onNext(Object obj) {
if (!this.c) {
this.c = true;
}
this.a.a(this.b, obj);
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
DisposableHelper.setOnce(this, disposable);
}
}
public ObservableWithLatestFromMany(ObservableSource<T> observableSource, ObservableSource<?>[] observableSourceArr, Function<? super Object[], R> function) {
super(observableSource);
this.b = observableSourceArr;
this.c = null;
this.d = function;
}
@Override // io.reactivex.Observable
protected void subscribeActual(Observer<? super R> observer) {
int length;
ObservableSource<?>[] observableSourceArr = this.b;
if (observableSourceArr == null) {
observableSourceArr = new ObservableSource[8];
try {
length = 0;
for (ObservableSource<?> observableSource : this.c) {
if (length == observableSourceArr.length) {
observableSourceArr = (ObservableSource[]) Arrays.copyOf(observableSourceArr, (length >> 1) + length);
}
int i = length + 1;
observableSourceArr[length] = observableSource;
length = i;
}
} catch (Throwable th) {
Exceptions.b(th);
EmptyDisposable.error(th, observer);
return;
}
} else {
length = observableSourceArr.length;
}
if (length == 0) {
new ObservableMap(this.a, new SingletonArrayFunc()).subscribeActual(observer);
return;
}
WithLatestFromObserver withLatestFromObserver = new WithLatestFromObserver(observer, this.d, length);
observer.onSubscribe(withLatestFromObserver);
withLatestFromObserver.a(observableSourceArr, length);
this.a.subscribe(withLatestFromObserver);
}
static final class WithLatestFromObserver<T, R> extends AtomicInteger implements Observer<T>, Disposable {
final Observer<? super R> a;
final Function<? super Object[], R> b;
final WithLatestInnerObserver[] c;
final AtomicReferenceArray<Object> d;
final AtomicReference<Disposable> e;
final AtomicThrowable f;
volatile boolean g;
WithLatestFromObserver(Observer<? super R> observer, Function<? super Object[], R> function, int i) {
this.a = observer;
this.b = function;
WithLatestInnerObserver[] withLatestInnerObserverArr = new WithLatestInnerObserver[i];
for (int i2 = 0; i2 < i; i2++) {
withLatestInnerObserverArr[i2] = new WithLatestInnerObserver(this, i2);
}
this.c = withLatestInnerObserverArr;
this.d = new AtomicReferenceArray<>(i);
this.e = new AtomicReference<>();
this.f = new AtomicThrowable();
}
void a(ObservableSource<?>[] observableSourceArr, int i) {
WithLatestInnerObserver[] withLatestInnerObserverArr = this.c;
AtomicReference<Disposable> atomicReference = this.e;
for (int i2 = 0; i2 < i && !DisposableHelper.isDisposed(atomicReference.get()) && !this.g; i2++) {
observableSourceArr[i2].subscribe(withLatestInnerObserverArr[i2]);
}
}
@Override // io.reactivex.disposables.Disposable
public void dispose() {
DisposableHelper.dispose(this.e);
for (WithLatestInnerObserver withLatestInnerObserver : this.c) {
withLatestInnerObserver.a();
}
}
@Override // io.reactivex.Observer
public void onComplete() {
if (this.g) {
return;
}
this.g = true;
a(-1);
HalfSerializer.a(this.a, this, this.f);
}
@Override // io.reactivex.Observer
public void onError(Throwable th) {
if (this.g) {
RxJavaPlugins.b(th);
return;
}
this.g = true;
a(-1);
HalfSerializer.a((Observer<?>) this.a, th, (AtomicInteger) this, this.f);
}
@Override // io.reactivex.Observer
public void onNext(T t) {
if (this.g) {
return;
}
AtomicReferenceArray<Object> atomicReferenceArray = this.d;
int length = atomicReferenceArray.length();
Object[] objArr = new Object[length + 1];
int i = 0;
objArr[0] = t;
while (i < length) {
Object obj = atomicReferenceArray.get(i);
if (obj == null) {
return;
}
i++;
objArr[i] = obj;
}
try {
R apply = this.b.apply(objArr);
ObjectHelper.a(apply, "combiner returned a null value");
HalfSerializer.a(this.a, apply, this, this.f);
} catch (Throwable th) {
Exceptions.b(th);
dispose();
onError(th);
}
}
@Override // io.reactivex.Observer
public void onSubscribe(Disposable disposable) {
DisposableHelper.setOnce(this.e, disposable);
}
void a(int i, Object obj) {
this.d.set(i, obj);
}
void a(int i, Throwable th) {
this.g = true;
DisposableHelper.dispose(this.e);
a(i);
HalfSerializer.a((Observer<?>) this.a, th, (AtomicInteger) this, this.f);
}
void a(int i, boolean z) {
if (z) {
return;
}
this.g = true;
a(i);
HalfSerializer.a(this.a, this, this.f);
}
void a(int i) {
WithLatestInnerObserver[] withLatestInnerObserverArr = this.c;
for (int i2 = 0; i2 < withLatestInnerObserverArr.length; i2++) {
if (i2 != i) {
withLatestInnerObserverArr[i2].a();
}
}
}
}
public ObservableWithLatestFromMany(ObservableSource<T> observableSource, Iterable<? extends ObservableSource<?>> iterable, Function<? super Object[], R> function) {
super(observableSource);
this.b = null;
this.c = iterable;
this.d = function;
}
}