package io.reactivex.subjects; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import io.reactivex.internal.functions.ObjectHelper; import io.reactivex.plugins.RxJavaPlugins; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; /* loaded from: classes2.dex */ public final class PublishSubject extends Subject { static final PublishDisposable[] c = new PublishDisposable[0]; static final PublishDisposable[] d = new PublishDisposable[0]; final AtomicReference[]> a = new AtomicReference<>(d); Throwable b; PublishSubject() { } public static PublishSubject b() { return new PublishSubject<>(); } boolean a(PublishDisposable publishDisposable) { PublishDisposable[] publishDisposableArr; PublishDisposable[] publishDisposableArr2; do { publishDisposableArr = this.a.get(); if (publishDisposableArr == c) { return false; } int length = publishDisposableArr.length; publishDisposableArr2 = new PublishDisposable[length + 1]; System.arraycopy(publishDisposableArr, 0, publishDisposableArr2, 0, length); publishDisposableArr2[length] = publishDisposable; } while (!this.a.compareAndSet(publishDisposableArr, publishDisposableArr2)); return true; } @Override // io.reactivex.Observer public void onComplete() { PublishDisposable[] publishDisposableArr = this.a.get(); PublishDisposable[] publishDisposableArr2 = c; if (publishDisposableArr == publishDisposableArr2) { return; } for (PublishDisposable publishDisposable : this.a.getAndSet(publishDisposableArr2)) { publishDisposable.b(); } } @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."); PublishDisposable[] publishDisposableArr = this.a.get(); PublishDisposable[] publishDisposableArr2 = c; if (publishDisposableArr == publishDisposableArr2) { RxJavaPlugins.b(th); return; } this.b = th; for (PublishDisposable publishDisposable : this.a.getAndSet(publishDisposableArr2)) { publishDisposable.a(th); } } @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."); for (PublishDisposable publishDisposable : this.a.get()) { publishDisposable.a((PublishDisposable) t); } } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { if (this.a.get() == c) { disposable.dispose(); } } @Override // io.reactivex.Observable protected void subscribeActual(Observer observer) { PublishDisposable publishDisposable = new PublishDisposable<>(observer, this); observer.onSubscribe(publishDisposable); if (a(publishDisposable)) { if (publishDisposable.a()) { b(publishDisposable); } } else { Throwable th = this.b; if (th != null) { observer.onError(th); } else { observer.onComplete(); } } } static final class PublishDisposable extends AtomicBoolean implements Disposable { final Observer a; final PublishSubject b; PublishDisposable(Observer observer, PublishSubject publishSubject) { this.a = observer; this.b = publishSubject; } public void a(T t) { if (get()) { return; } this.a.onNext(t); } public void b() { if (get()) { return; } this.a.onComplete(); } @Override // io.reactivex.disposables.Disposable public void dispose() { if (compareAndSet(false, true)) { this.b.b(this); } } public void a(Throwable th) { if (get()) { RxJavaPlugins.b(th); } else { this.a.onError(th); } } public boolean a() { return get(); } } void b(PublishDisposable publishDisposable) { PublishDisposable[] publishDisposableArr; PublishDisposable[] publishDisposableArr2; do { publishDisposableArr = this.a.get(); if (publishDisposableArr == c || publishDisposableArr == d) { return; } int length = publishDisposableArr.length; int i = -1; int i2 = 0; while (true) { if (i2 >= length) { break; } if (publishDisposableArr[i2] == publishDisposable) { i = i2; break; } i2++; } if (i < 0) { return; } if (length == 1) { publishDisposableArr2 = d; } else { PublishDisposable[] publishDisposableArr3 = new PublishDisposable[length - 1]; System.arraycopy(publishDisposableArr, 0, publishDisposableArr3, 0, i); System.arraycopy(publishDisposableArr, i + 1, publishDisposableArr3, i, (length - i) - 1); publishDisposableArr2 = publishDisposableArr3; } } while (!this.a.compareAndSet(publishDisposableArr, publishDisposableArr2)); } }