package io.reactivex.subjects; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.internal.disposables.EmptyDisposable; import io.reactivex.internal.functions.ObjectHelper; import io.reactivex.internal.fuseable.SimpleQueue; import io.reactivex.internal.observers.BasicIntQueueDisposable; import io.reactivex.internal.queue.SpscLinkedArrayQueue; import io.reactivex.plugins.RxJavaPlugins; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; /* loaded from: classes2.dex */ public final class UnicastSubject extends Subject { final SpscLinkedArrayQueue a; final AtomicReference> b; final AtomicReference c; final boolean d; volatile boolean e; volatile boolean f; Throwable g; final AtomicBoolean h; final BasicIntQueueDisposable i; boolean j; final class UnicastQueueDisposable extends BasicIntQueueDisposable { UnicastQueueDisposable() { } @Override // io.reactivex.internal.fuseable.SimpleQueue public void clear() { UnicastSubject.this.a.clear(); } @Override // io.reactivex.disposables.Disposable public void dispose() { if (UnicastSubject.this.e) { return; } UnicastSubject unicastSubject = UnicastSubject.this; unicastSubject.e = true; unicastSubject.b(); UnicastSubject.this.b.lazySet(null); if (UnicastSubject.this.i.getAndIncrement() == 0) { UnicastSubject.this.b.lazySet(null); UnicastSubject.this.a.clear(); } } @Override // io.reactivex.internal.fuseable.SimpleQueue public boolean isEmpty() { return UnicastSubject.this.a.isEmpty(); } @Override // io.reactivex.internal.fuseable.SimpleQueue public T poll() throws Exception { return UnicastSubject.this.a.poll(); } @Override // io.reactivex.internal.fuseable.QueueFuseable public int requestFusion(int i) { if ((i & 2) == 0) { return 0; } UnicastSubject.this.j = true; return 2; } } UnicastSubject(int i, boolean z) { ObjectHelper.a(i, "capacityHint"); this.a = new SpscLinkedArrayQueue<>(i); this.c = new AtomicReference<>(); this.d = z; this.b = new AtomicReference<>(); this.h = new AtomicBoolean(); this.i = new UnicastQueueDisposable(); } public static UnicastSubject a(int i) { return new UnicastSubject<>(i, true); } public static UnicastSubject d() { return new UnicastSubject<>(Observable.bufferSize(), true); } void b() { Runnable runnable = this.c.get(); if (runnable == null || !this.c.compareAndSet(runnable, null)) { return; } runnable.run(); } void c(Observer observer) { this.b.lazySet(null); Throwable th = this.g; if (th != null) { observer.onError(th); } else { observer.onComplete(); } } @Override // io.reactivex.Observer public void onComplete() { if (this.f || this.e) { return; } this.f = true; b(); c(); } @Override // io.reactivex.Observer public void onError(Throwable th) { ObjectHelper.a(th, "onError called with null. Null values are generally not allowed in 2.x operators and sources."); if (this.f || this.e) { RxJavaPlugins.b(th); return; } this.g = th; this.f = true; b(); c(); } @Override // io.reactivex.Observer public void onNext(T t) { ObjectHelper.a((Object) t, "onNext called with null. Null values are generally not allowed in 2.x operators and sources."); if (this.f || this.e) { return; } this.a.offer(t); c(); } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { if (this.f || this.e) { disposable.dispose(); } } @Override // io.reactivex.Observable protected void subscribeActual(Observer observer) { if (this.h.get() || !this.h.compareAndSet(false, true)) { EmptyDisposable.error(new IllegalStateException("Only a single observer allowed."), observer); return; } observer.onSubscribe(this.i); this.b.lazySet(observer); if (this.e) { this.b.lazySet(null); } else { c(); } } public static UnicastSubject a(int i, Runnable runnable) { return new UnicastSubject<>(i, runnable, true); } void a(Observer observer) { SpscLinkedArrayQueue spscLinkedArrayQueue = this.a; int i = 1; boolean z = !this.d; while (!this.e) { boolean z2 = this.f; if (z && z2 && a(spscLinkedArrayQueue, observer)) { return; } observer.onNext(null); if (z2) { c(observer); return; } else { i = this.i.addAndGet(-i); if (i == 0) { return; } } } this.b.lazySet(null); spscLinkedArrayQueue.clear(); } void b(Observer observer) { SpscLinkedArrayQueue spscLinkedArrayQueue = this.a; boolean z = !this.d; boolean z2 = true; int i = 1; while (!this.e) { boolean z3 = this.f; T poll = this.a.poll(); boolean z4 = poll == null; if (z3) { if (z && z2) { if (a(spscLinkedArrayQueue, observer)) { return; } else { z2 = false; } } if (z4) { c(observer); return; } } if (z4) { i = this.i.addAndGet(-i); if (i == 0) { return; } } else { observer.onNext(poll); } } this.b.lazySet(null); spscLinkedArrayQueue.clear(); } void c() { if (this.i.getAndIncrement() != 0) { return; } Observer observer = this.b.get(); int i = 1; while (observer == null) { i = this.i.addAndGet(-i); if (i == 0) { return; } else { observer = this.b.get(); } } if (this.j) { a(observer); } else { b(observer); } } UnicastSubject(int i, Runnable runnable, boolean z) { ObjectHelper.a(i, "capacityHint"); this.a = new SpscLinkedArrayQueue<>(i); ObjectHelper.a(runnable, "onTerminate"); this.c = new AtomicReference<>(runnable); this.d = z; this.b = new AtomicReference<>(); this.h = new AtomicBoolean(); this.i = new UnicastQueueDisposable(); } boolean a(SimpleQueue simpleQueue, Observer observer) { Throwable th = this.g; if (th == null) { return false; } this.b.lazySet(null); simpleQueue.clear(); observer.onError(th); return true; } }