@SuppressWarnings("unchecked") @Override public void onComplete() { if (subscribers.get() == TERMINATED) { return; } T v = value; AsyncDisposable<T>[] array = subscribers.getAndSet(TERMINATED); if (v == null) { for (AsyncDisposable<T> as : array) { as.onComplete(); } } else { for (AsyncDisposable<T> as : array) { as.complete(v); } } }
@SuppressWarnings("unchecked") @Override public void onError(Throwable t) { ObjectHelper.requireNonNull(t, "onError called with null. Null values are generally not allowed in 2.x operators and sources."); if (subscribers.get() == TERMINATED) { RxJavaPlugins.onError(t); return; } value = null; error = t; for (AsyncDisposable<T> as : subscribers.getAndSet(TERMINATED)) { as.onError(t); } }
@Override protected void subscribeActual(Observer<? super T> s) { AsyncDisposable<T> as = new AsyncDisposable<T>(s, this); s.onSubscribe(as); if (add(as)) { if (as.isDisposed()) { remove(as); } } else { Throwable ex = error; if (ex != null) { s.onError(ex); } else { T v = value; if (v != null) { as.complete(v); } else { as.onComplete(); } } } }
void onError(Throwable t) { if (isDisposed()) { RxJavaPlugins.onError(t); } else { actual.onError(t); } } }
void onComplete() { if (!isDisposed()) { actual.onComplete(); } }
@Override protected void subscribeActual(Observer<? super T> observer) { AsyncDisposable<T> as = new AsyncDisposable<T>(observer, this); observer.onSubscribe(as); if (add(as)) { if (as.isDisposed()) { remove(as); } } else { Throwable ex = error; if (ex != null) { observer.onError(ex); } else { T v = value; if (v != null) { as.complete(v); } else { as.onComplete(); } } } }
@SuppressWarnings("unchecked") @Override public void onComplete() { if (subscribers.get() == TERMINATED) { return; } T v = value; AsyncDisposable<T>[] array = subscribers.getAndSet(TERMINATED); if (v == null) { for (AsyncDisposable<T> as : array) { as.onComplete(); } } else { for (AsyncDisposable<T> as : array) { as.complete(v); } } }
@SuppressWarnings("unchecked") @Override public void onError(Throwable t) { ObjectHelper.requireNonNull(t, "onError called with null. Null values are generally not allowed in 2.x operators and sources."); if (subscribers.get() == TERMINATED) { RxJavaPlugins.onError(t); return; } value = null; error = t; for (AsyncDisposable<T> as : subscribers.getAndSet(TERMINATED)) { as.onError(t); } }
void onComplete() { if (!isDisposed()) { downstream.onComplete(); } }
void onError(Throwable t) { if (isDisposed()) { RxJavaPlugins.onError(t); } else { downstream.onError(t); } } }