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.Consumer; import io.reactivex.internal.disposables.DisposableHelper; import io.reactivex.internal.fuseable.HasUpstreamObservableSource; import io.reactivex.internal.util.ExceptionHelper; import io.reactivex.observables.ConnectableObservable; import io.reactivex.plugins.RxJavaPlugins; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; /* loaded from: classes2.dex */ public final class ObservablePublish extends ConnectableObservable implements HasUpstreamObservableSource { final ObservableSource a; final AtomicReference> b; final ObservableSource c; static final class InnerDisposable extends AtomicReference implements Disposable { final Observer a; InnerDisposable(Observer observer) { this.a = observer; } void a(PublishObserver publishObserver) { if (compareAndSet(null, publishObserver)) { return; } publishObserver.b(this); } @Override // io.reactivex.disposables.Disposable public void dispose() { Object andSet = getAndSet(this); if (andSet == null || andSet == this) { return; } ((PublishObserver) andSet).b(this); } } static final class PublishObserver implements Observer, Disposable { static final InnerDisposable[] e = new InnerDisposable[0]; static final InnerDisposable[] f = new InnerDisposable[0]; final AtomicReference> a; final AtomicReference d = new AtomicReference<>(); final AtomicReference[]> b = new AtomicReference<>(e); final AtomicBoolean c = new AtomicBoolean(); PublishObserver(AtomicReference> atomicReference) { this.a = atomicReference; } public boolean a() { return this.b.get() == f; } void b(InnerDisposable innerDisposable) { InnerDisposable[] innerDisposableArr; InnerDisposable[] innerDisposableArr2; do { innerDisposableArr = this.b.get(); int length = innerDisposableArr.length; if (length == 0) { return; } int i = -1; int i2 = 0; while (true) { if (i2 >= length) { break; } if (innerDisposableArr[i2].equals(innerDisposable)) { i = i2; break; } i2++; } if (i < 0) { return; } if (length == 1) { innerDisposableArr2 = e; } else { InnerDisposable[] innerDisposableArr3 = new InnerDisposable[length - 1]; System.arraycopy(innerDisposableArr, 0, innerDisposableArr3, 0, i); System.arraycopy(innerDisposableArr, i + 1, innerDisposableArr3, i, (length - i) - 1); innerDisposableArr2 = innerDisposableArr3; } } while (!this.b.compareAndSet(innerDisposableArr, innerDisposableArr2)); } @Override // io.reactivex.disposables.Disposable public void dispose() { if (this.b.getAndSet(f) != f) { this.a.compareAndSet(this, null); DisposableHelper.dispose(this.d); } } @Override // io.reactivex.Observer public void onComplete() { this.a.compareAndSet(this, null); for (InnerDisposable innerDisposable : this.b.getAndSet(f)) { innerDisposable.a.onComplete(); } } @Override // io.reactivex.Observer public void onError(Throwable th) { this.a.compareAndSet(this, null); InnerDisposable[] andSet = this.b.getAndSet(f); if (andSet.length == 0) { RxJavaPlugins.b(th); return; } for (InnerDisposable innerDisposable : andSet) { innerDisposable.a.onError(th); } } @Override // io.reactivex.Observer public void onNext(T t) { for (InnerDisposable innerDisposable : this.b.get()) { innerDisposable.a.onNext(t); } } @Override // io.reactivex.Observer public void onSubscribe(Disposable disposable) { DisposableHelper.setOnce(this.d, disposable); } boolean a(InnerDisposable innerDisposable) { InnerDisposable[] innerDisposableArr; InnerDisposable[] innerDisposableArr2; do { innerDisposableArr = this.b.get(); if (innerDisposableArr == f) { return false; } int length = innerDisposableArr.length; innerDisposableArr2 = new InnerDisposable[length + 1]; System.arraycopy(innerDisposableArr, 0, innerDisposableArr2, 0, length); innerDisposableArr2[length] = innerDisposable; } while (!this.b.compareAndSet(innerDisposableArr, innerDisposableArr2)); return true; } } static final class PublishSource implements ObservableSource { private final AtomicReference> a; PublishSource(AtomicReference> atomicReference) { this.a = atomicReference; } @Override // io.reactivex.ObservableSource public void subscribe(Observer observer) { InnerDisposable innerDisposable = new InnerDisposable(observer); observer.onSubscribe(innerDisposable); while (true) { PublishObserver publishObserver = this.a.get(); if (publishObserver == null || publishObserver.a()) { PublishObserver publishObserver2 = new PublishObserver<>(this.a); if (this.a.compareAndSet(publishObserver, publishObserver2)) { publishObserver = publishObserver2; } else { continue; } } if (publishObserver.a(innerDisposable)) { innerDisposable.a(publishObserver); return; } } } } private ObservablePublish(ObservableSource observableSource, ObservableSource observableSource2, AtomicReference> atomicReference) { this.c = observableSource; this.a = observableSource2; this.b = atomicReference; } public static ConnectableObservable a(ObservableSource observableSource) { AtomicReference atomicReference = new AtomicReference(); return RxJavaPlugins.a((ConnectableObservable) new ObservablePublish(new PublishSource(atomicReference), observableSource, atomicReference)); } @Override // io.reactivex.Observable protected void subscribeActual(Observer observer) { this.c.subscribe(observer); } @Override // io.reactivex.observables.ConnectableObservable public void a(Consumer consumer) { PublishObserver publishObserver; while (true) { publishObserver = this.b.get(); if (publishObserver != null && !publishObserver.a()) { break; } PublishObserver publishObserver2 = new PublishObserver<>(this.b); if (this.b.compareAndSet(publishObserver, publishObserver2)) { publishObserver = publishObserver2; break; } } boolean z = !publishObserver.c.get() && publishObserver.c.compareAndSet(false, true); try { consumer.accept(publishObserver); if (z) { this.a.subscribe(publishObserver); } } catch (Throwable th) { Exceptions.b(th); throw ExceptionHelper.a(th); } } }