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.functions.ObjectHelper; import io.reactivex.internal.fuseable.QueueDisposable; import io.reactivex.internal.fuseable.SimpleQueue; import io.reactivex.internal.observers.InnerQueuedObserver; import io.reactivex.internal.observers.InnerQueuedObserverSupport; import io.reactivex.internal.queue.SpscLinkedArrayQueue; import io.reactivex.internal.util.AtomicThrowable; import io.reactivex.internal.util.ErrorMode; import io.reactivex.plugins.RxJavaPlugins; import java.util.ArrayDeque; import java.util.concurrent.atomic.AtomicInteger; /* loaded from: classes2.dex */ public final class ObservableConcatMapEager extends AbstractObservableWithUpstream { final Function> b; final ErrorMode c; final int d; final int e; public ObservableConcatMapEager(ObservableSource observableSource, Function> function, ErrorMode errorMode, int i, int i2) { super(observableSource); this.b = function; this.c = errorMode; this.d = i; this.e = i2; } @Override // io.reactivex.Observable protected void subscribeActual(Observer observer) { this.a.subscribe(new ConcatMapEagerMainObserver(observer, this.b, this.d, this.e, this.c)); } static final class ConcatMapEagerMainObserver extends AtomicInteger implements Observer, Disposable, InnerQueuedObserverSupport { final Observer a; final Function> b; final int c; final int d; final ErrorMode e; final AtomicThrowable f = new AtomicThrowable(); final ArrayDeque> g = new ArrayDeque<>(); SimpleQueue h; Disposable i; volatile boolean j; int k; volatile boolean l; InnerQueuedObserver m; int n; ConcatMapEagerMainObserver(Observer observer, Function> function, int i, int i2, ErrorMode errorMode) { this.a = observer; this.b = function; this.c = i; this.d = i2; this.e = errorMode; } @Override // io.reactivex.internal.observers.InnerQueuedObserverSupport public void a(InnerQueuedObserver innerQueuedObserver, R r) { innerQueuedObserver.queue().offer(r); a(); } void b() { InnerQueuedObserver innerQueuedObserver = this.m; if (innerQueuedObserver != null) { innerQueuedObserver.dispose(); } while (true) { InnerQueuedObserver poll = this.g.poll(); if (poll == null) { return; } else { poll.dispose(); } } } @Override // io.reactivex.disposables.Disposable public void dispose() { this.l = true; if (getAndIncrement() == 0) { this.h.clear(); b(); } } @Override // io.reactivex.Observer public void onComplete() { this.j = true; a(); } @Override // io.reactivex.Observer public void onError(Throwable th) { if (!this.f.addThrowable(th)) { RxJavaPlugins.b(th); } else { this.j = true; a(); } } @Override // io.reactivex.Observer public void onNext(T t) { if (this.k == 0) { this.h.offer(t); } a(); } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { if (DisposableHelper.validate(this.i, disposable)) { this.i = disposable; if (disposable instanceof QueueDisposable) { QueueDisposable queueDisposable = (QueueDisposable) disposable; int requestFusion = queueDisposable.requestFusion(3); if (requestFusion == 1) { this.k = requestFusion; this.h = queueDisposable; this.j = true; this.a.onSubscribe(this); a(); return; } if (requestFusion == 2) { this.k = requestFusion; this.h = queueDisposable; this.a.onSubscribe(this); return; } } this.h = new SpscLinkedArrayQueue(this.d); this.a.onSubscribe(this); } } @Override // io.reactivex.internal.observers.InnerQueuedObserverSupport public void a(InnerQueuedObserver innerQueuedObserver, Throwable th) { if (this.f.addThrowable(th)) { if (this.e == ErrorMode.IMMEDIATE) { this.i.dispose(); } innerQueuedObserver.setDone(); a(); return; } RxJavaPlugins.b(th); } @Override // io.reactivex.internal.observers.InnerQueuedObserverSupport public void a(InnerQueuedObserver innerQueuedObserver) { innerQueuedObserver.setDone(); a(); } @Override // io.reactivex.internal.observers.InnerQueuedObserverSupport public void a() { R poll; boolean z; if (getAndIncrement() != 0) { return; } SimpleQueue simpleQueue = this.h; ArrayDeque> arrayDeque = this.g; Observer observer = this.a; ErrorMode errorMode = this.e; int i = 1; while (true) { int i2 = this.n; while (i2 != this.c) { if (this.l) { simpleQueue.clear(); b(); return; } if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) { simpleQueue.clear(); b(); observer.onError(this.f.terminate()); return; } try { T poll2 = simpleQueue.poll(); if (poll2 == null) { break; } ObservableSource apply = this.b.apply(poll2); ObjectHelper.a(apply, "The mapper returned a null ObservableSource"); ObservableSource observableSource = apply; InnerQueuedObserver innerQueuedObserver = new InnerQueuedObserver<>(this, this.d); arrayDeque.offer(innerQueuedObserver); observableSource.subscribe(innerQueuedObserver); i2++; } catch (Throwable th) { Exceptions.b(th); this.i.dispose(); simpleQueue.clear(); b(); this.f.addThrowable(th); observer.onError(this.f.terminate()); return; } } this.n = i2; if (this.l) { simpleQueue.clear(); b(); return; } if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) { simpleQueue.clear(); b(); observer.onError(this.f.terminate()); return; } InnerQueuedObserver innerQueuedObserver2 = this.m; if (innerQueuedObserver2 == null) { if (errorMode == ErrorMode.BOUNDARY && this.f.get() != null) { simpleQueue.clear(); b(); observer.onError(this.f.terminate()); return; } boolean z2 = this.j; InnerQueuedObserver poll3 = arrayDeque.poll(); boolean z3 = poll3 == null; if (z2 && z3) { if (this.f.get() != null) { simpleQueue.clear(); b(); observer.onError(this.f.terminate()); return; } observer.onComplete(); return; } if (!z3) { this.m = poll3; } innerQueuedObserver2 = poll3; } if (innerQueuedObserver2 != null) { SimpleQueue queue = innerQueuedObserver2.queue(); while (!this.l) { boolean isDone = innerQueuedObserver2.isDone(); if (errorMode == ErrorMode.IMMEDIATE && this.f.get() != null) { simpleQueue.clear(); b(); observer.onError(this.f.terminate()); return; } try { poll = queue.poll(); z = poll == null; } catch (Throwable th2) { Exceptions.b(th2); this.f.addThrowable(th2); this.m = null; this.n--; } if (isDone && z) { this.m = null; this.n--; } else if (!z) { observer.onNext(poll); } } simpleQueue.clear(); b(); return; } i = addAndGet(-i); if (i == 0) { return; } } } } }