package io.reactivex.internal.operators.observable; import io.reactivex.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.queue.SpscLinkedArrayQueue; import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /* loaded from: classes2.dex */ public final class ObservableZip extends Observable { final ObservableSource[] a; final Iterable> b; final Function c; final int d; final boolean e; static final class ZipObserver implements Observer { final ZipCoordinator a; final SpscLinkedArrayQueue b; volatile boolean c; Throwable d; final AtomicReference e = new AtomicReference<>(); ZipObserver(ZipCoordinator zipCoordinator, int i) { this.a = zipCoordinator; this.b = new SpscLinkedArrayQueue<>(i); } public void a() { DisposableHelper.dispose(this.e); } @Override // io.reactivex.Observer public void onComplete() { this.c = true; this.a.d(); } @Override // io.reactivex.Observer public void onError(Throwable th) { this.d = th; this.c = true; this.a.d(); } @Override // io.reactivex.Observer public void onNext(T t) { this.b.offer(t); this.a.d(); } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { DisposableHelper.setOnce(this.e, disposable); } } public ObservableZip(ObservableSource[] observableSourceArr, Iterable> iterable, Function function, int i, boolean z) { this.a = observableSourceArr; this.b = iterable; this.c = function; this.d = i; this.e = z; } @Override // io.reactivex.Observable public void subscribeActual(Observer observer) { int length; ObservableSource[] observableSourceArr = this.a; if (observableSourceArr == null) { observableSourceArr = new Observable[8]; length = 0; for (ObservableSource observableSource : this.b) { if (length == observableSourceArr.length) { ObservableSource[] observableSourceArr2 = new ObservableSource[(length >> 2) + length]; System.arraycopy(observableSourceArr, 0, observableSourceArr2, 0, length); observableSourceArr = observableSourceArr2; } observableSourceArr[length] = observableSource; length++; } } else { length = observableSourceArr.length; } if (length == 0) { EmptyDisposable.complete(observer); } else { new ZipCoordinator(observer, this.c, length, this.e).a(observableSourceArr, this.d); } } static final class ZipCoordinator extends AtomicInteger implements Disposable { final Observer a; final Function b; final ZipObserver[] c; final T[] d; final boolean e; volatile boolean f; ZipCoordinator(Observer observer, Function function, int i, boolean z) { this.a = observer; this.b = function; this.c = new ZipObserver[i]; this.d = (T[]) new Object[i]; this.e = z; } public void a(ObservableSource[] observableSourceArr, int i) { ZipObserver[] zipObserverArr = this.c; int length = zipObserverArr.length; for (int i2 = 0; i2 < length; i2++) { zipObserverArr[i2] = new ZipObserver<>(this, i); } lazySet(0); this.a.onSubscribe(this); for (int i3 = 0; i3 < length && !this.f; i3++) { observableSourceArr[i3].subscribe(zipObserverArr[i3]); } } void b() { for (ZipObserver zipObserver : this.c) { zipObserver.a(); } } void c() { for (ZipObserver zipObserver : this.c) { zipObserver.b.clear(); } } public void d() { Throwable th; if (getAndIncrement() != 0) { return; } ZipObserver[] zipObserverArr = this.c; Observer observer = this.a; T[] tArr = this.d; boolean z = this.e; int i = 1; while (true) { int i2 = 0; int i3 = 0; for (ZipObserver zipObserver : zipObserverArr) { if (tArr[i3] == null) { boolean z2 = zipObserver.c; T poll = zipObserver.b.poll(); boolean z3 = poll == null; if (a(z2, z3, observer, z, zipObserver)) { return; } if (z3) { i2++; } else { tArr[i3] = poll; } } else if (zipObserver.c && !z && (th = zipObserver.d) != null) { a(); observer.onError(th); return; } i3++; } if (i2 != 0) { i = addAndGet(-i); if (i == 0) { return; } } else { try { R apply = this.b.apply(tArr.clone()); ObjectHelper.a(apply, "The zipper returned a null value"); observer.onNext(apply); Arrays.fill(tArr, (Object) null); } catch (Throwable th2) { Exceptions.b(th2); a(); observer.onError(th2); return; } } } } @Override // io.reactivex.disposables.Disposable public void dispose() { if (this.f) { return; } this.f = true; b(); if (getAndIncrement() == 0) { c(); } } void a() { c(); b(); } boolean a(boolean z, boolean z2, Observer observer, boolean z3, ZipObserver zipObserver) { if (this.f) { a(); return true; } if (!z) { return false; } if (z3) { if (!z2) { return false; } Throwable th = zipObserver.d; a(); if (th != null) { observer.onError(th); } else { observer.onComplete(); } return true; } Throwable th2 = zipObserver.d; if (th2 != null) { a(); observer.onError(th2); return true; } if (!z2) { return false; } a(); observer.onComplete(); return true; } } }