package io.reactivex.internal.operators.observable; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.Observer; import io.reactivex.disposables.CompositeDisposable; 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.queue.SpscLinkedArrayQueue; import io.reactivex.internal.util.AtomicThrowable; import io.reactivex.plugins.RxJavaPlugins; import java.util.Collection; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.Callable; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; /* loaded from: classes2.dex */ public final class ObservableBufferBoundary, Open, Close> extends AbstractObservableWithUpstream { final Callable b; final ObservableSource c; final Function> d; static final class BufferCloseObserver> extends AtomicReference implements Observer, Disposable { final BufferBoundaryObserver a; final long b; BufferCloseObserver(BufferBoundaryObserver bufferBoundaryObserver, long j) { this.a = bufferBoundaryObserver; this.b = j; } @Override // io.reactivex.disposables.Disposable public void dispose() { DisposableHelper.dispose(this); } @Override // io.reactivex.Observer public void onComplete() { Disposable disposable = get(); DisposableHelper disposableHelper = DisposableHelper.DISPOSED; if (disposable != disposableHelper) { lazySet(disposableHelper); this.a.a(this, this.b); } } @Override // io.reactivex.Observer public void onError(Throwable th) { Disposable disposable = get(); DisposableHelper disposableHelper = DisposableHelper.DISPOSED; if (disposable == disposableHelper) { RxJavaPlugins.b(th); } else { lazySet(disposableHelper); this.a.a(this, th); } } @Override // io.reactivex.Observer public void onNext(Object obj) { Disposable disposable = get(); DisposableHelper disposableHelper = DisposableHelper.DISPOSED; if (disposable != disposableHelper) { lazySet(disposableHelper); disposable.dispose(); this.a.a(this, this.b); } } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { DisposableHelper.setOnce(this, disposable); } } public ObservableBufferBoundary(ObservableSource observableSource, ObservableSource observableSource2, Function> function, Callable callable) { super(observableSource); this.c = observableSource2; this.d = function; this.b = callable; } @Override // io.reactivex.Observable protected void subscribeActual(Observer observer) { BufferBoundaryObserver bufferBoundaryObserver = new BufferBoundaryObserver(observer, this.c, this.d, this.b); observer.onSubscribe(bufferBoundaryObserver); this.a.subscribe(bufferBoundaryObserver); } static final class BufferBoundaryObserver, Open, Close> extends AtomicInteger implements Observer, Disposable { final Observer a; final Callable b; final ObservableSource c; final Function> d; volatile boolean h; volatile boolean j; long k; final SpscLinkedArrayQueue i = new SpscLinkedArrayQueue<>(Observable.bufferSize()); final CompositeDisposable e = new CompositeDisposable(); final AtomicReference f = new AtomicReference<>(); Map l = new LinkedHashMap(); final AtomicThrowable g = new AtomicThrowable(); static final class BufferOpenObserver extends AtomicReference implements Observer, Disposable { final BufferBoundaryObserver a; BufferOpenObserver(BufferBoundaryObserver bufferBoundaryObserver) { this.a = bufferBoundaryObserver; } @Override // io.reactivex.disposables.Disposable public void dispose() { DisposableHelper.dispose(this); } @Override // io.reactivex.Observer public void onComplete() { lazySet(DisposableHelper.DISPOSED); this.a.a((BufferOpenObserver) this); } @Override // io.reactivex.Observer public void onError(Throwable th) { lazySet(DisposableHelper.DISPOSED); this.a.a(this, th); } @Override // io.reactivex.Observer public void onNext(Open open) { this.a.a((BufferBoundaryObserver) open); } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { DisposableHelper.setOnce(this, disposable); } } BufferBoundaryObserver(Observer observer, ObservableSource observableSource, Function> function, Callable callable) { this.a = observer; this.b = callable; this.c = observableSource; this.d = function; } void a(Open open) { try { C call = this.b.call(); ObjectHelper.a(call, "The bufferSupplier returned a null Collection"); C c = call; ObservableSource apply = this.d.apply(open); ObjectHelper.a(apply, "The bufferClose returned a null ObservableSource"); ObservableSource observableSource = apply; long j = this.k; this.k = 1 + j; synchronized (this) { Map map = this.l; if (map == null) { return; } map.put(Long.valueOf(j), c); BufferCloseObserver bufferCloseObserver = new BufferCloseObserver(this, j); this.e.b(bufferCloseObserver); observableSource.subscribe(bufferCloseObserver); } } catch (Throwable th) { Exceptions.b(th); DisposableHelper.dispose(this.f); onError(th); } } @Override // io.reactivex.disposables.Disposable public void dispose() { if (DisposableHelper.dispose(this.f)) { this.j = true; this.e.dispose(); synchronized (this) { this.l = null; } if (getAndIncrement() != 0) { this.i.clear(); } } } @Override // io.reactivex.Observer public void onComplete() { this.e.dispose(); synchronized (this) { Map map = this.l; if (map == null) { return; } Iterator it = map.values().iterator(); while (it.hasNext()) { this.i.offer(it.next()); } this.l = null; this.h = true; a(); } } @Override // io.reactivex.Observer public void onError(Throwable th) { if (!this.g.addThrowable(th)) { RxJavaPlugins.b(th); return; } this.e.dispose(); synchronized (this) { this.l = null; } this.h = true; a(); } @Override // io.reactivex.Observer public void onNext(T t) { synchronized (this) { Map map = this.l; if (map == null) { return; } Iterator it = map.values().iterator(); while (it.hasNext()) { it.next().add(t); } } } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { if (DisposableHelper.setOnce(this.f, disposable)) { BufferOpenObserver bufferOpenObserver = new BufferOpenObserver(this); this.e.b(bufferOpenObserver); this.c.subscribe(bufferOpenObserver); } } void a(BufferOpenObserver bufferOpenObserver) { this.e.c(bufferOpenObserver); if (this.e.c() == 0) { DisposableHelper.dispose(this.f); this.h = true; a(); } } void a(BufferCloseObserver bufferCloseObserver, long j) { boolean z; this.e.c(bufferCloseObserver); if (this.e.c() == 0) { DisposableHelper.dispose(this.f); z = true; } else { z = false; } synchronized (this) { if (this.l == null) { return; } this.i.offer(this.l.remove(Long.valueOf(j))); if (z) { this.h = true; } a(); } } void a(Disposable disposable, Throwable th) { DisposableHelper.dispose(this.f); this.e.c(disposable); onError(th); } void a() { if (getAndIncrement() != 0) { return; } Observer observer = this.a; SpscLinkedArrayQueue spscLinkedArrayQueue = this.i; int i = 1; while (!this.j) { boolean z = this.h; if (z && this.g.get() != null) { spscLinkedArrayQueue.clear(); observer.onError(this.g.terminate()); return; } C poll = spscLinkedArrayQueue.poll(); boolean z2 = poll == null; if (z && z2) { observer.onComplete(); return; } else if (z2) { i = addAndGet(-i); if (i == 0) { return; } } else { observer.onNext(poll); } } spscLinkedArrayQueue.clear(); } } }