@Override protected void subscribeActual(Subscriber<? super Void> s) { MergeSubscriber parent = new MergeSubscriber(s, delayErrors, maxConcurrency, sources); s.onSubscribe(parent); parent.subscribe(maxConcurrency); }
getAndIncrement(); complete(); break; n = get(); if (e == n) { n = addAndGet(-e); if (n == 0) { break;
MergeSubscriber(Subscriber<? super Void> downstream, boolean delayErrors, int maxConcurrency, Nono[] sources) { this.downstream = downstream; this.delayErrors = delayErrors; this.errors = new AtomicThrowable(); this.sources = sources; this.set = new CompositeSubscription(); this.wip = new AtomicInteger(); this.lazySet(1); }
getAndIncrement(); complete(); break; n = get(); if (e == n) { n = addAndGet(-e); if (n == 0) { break;
@Override public void innerError(InnerSubscriber inner, Throwable ex) { set.delete(inner); if (errors.addThrowable(ex)) { if (!delayErrors) { set.cancel(); ex = errors.terminate(); if (ex != ExceptionHelper.TERMINATED) { downstream.onError(ex); } } else { subscribe(1); complete(); } } else { RxJavaPlugins.onError(ex); } }
@Override public void innerError(InnerSubscriber inner, Throwable ex) { set.delete(inner); if (errors.addThrowable(ex)) { if (!delayErrors) { set.cancel(); ex = errors.terminate(); if (ex != ExceptionHelper.TERMINATED) { downstream.onError(ex); } } else { subscribe(1); complete(); } } else { RxJavaPlugins.onError(ex); } }
void complete() { if (decrementAndGet() == 0) { Throwable ex = errors.terminate(); if (ex != null) { downstream.onError(ex); } else { downstream.onComplete(); } } } }
void complete() { if (decrementAndGet() == 0) { Throwable ex = errors.terminate(); if (ex != null) { downstream.onError(ex); } else { downstream.onComplete(); } } } }
@Override protected void subscribeActual(Subscriber<? super Void> s) { MergeSubscriber parent = new MergeSubscriber(s, delayErrors, maxConcurrency, sources); s.onSubscribe(parent); parent.subscribe(maxConcurrency); }
MergeSubscriber(Subscriber<? super Void> downstream, boolean delayErrors, int maxConcurrency, Nono[] sources) { this.downstream = downstream; this.delayErrors = delayErrors; this.errors = new AtomicThrowable(); this.sources = sources; this.set = new CompositeSubscription(); this.wip = new AtomicInteger(); this.lazySet(1); }