@Override void onUnsubscribed() { if (wip.getAndIncrement() == 0) { queue.lazySet(null); } }
MergeSubscriber(Subscriber<? super U> actual, Function<? super T, ? extends Publisher<? extends U>> mapper, boolean delayErrors, int maxConcurrency, int bufferSize) { this.downstream = actual; this.mapper = mapper; this.delayErrors = delayErrors; this.maxConcurrency = maxConcurrency; this.bufferSize = bufferSize; this.scalarLimit = Math.max(1, maxConcurrency >> 1); subscribers.lazySet(EMPTY); }
void setCurrent(Object o) { writeLock.lock(); index++; value.lazySet(o); writeLock.unlock(); }
@Override public void onNext(T t) { current.lazySet(t); drain(); }
@Override public void onComplete() { current.lazySet(NotificationLite.COMPLETE); drain(); }
@Override public void onSuccess(T value) { current.lazySet(value); drain(); }
/** * Constructs a BehaviorSubject with the given initial value. * @param defaultValue the initial value, not null (verified) * @throws NullPointerException if {@code defaultValue} is null * @since 2.0 */ BehaviorSubject(T defaultValue) { this(); this.value.lazySet(ObjectHelper.requireNonNull(defaultValue, "defaultValue is null")); }
@Override public void onComplete() { current.lazySet(NotificationLite.COMPLETE); drain(); }
/** * Constructs a BehaviorProcessor with the given initial value. * @param defaultValue the initial value, not null (verified) * @throws NullPointerException if {@code defaultValue} is null * @since 2.0 */ BehaviorProcessor(T defaultValue) { this(); this.value.lazySet(ObjectHelper.requireNonNull(defaultValue, "defaultValue is null")); }
@Override public void onSuccess(T value) { current.lazySet(value); drain(); }
@Override public void onComplete() { current.lazySet(NotificationLite.COMPLETE); drain(); }
@Override public void onSuccess(T value) { current.lazySet(value); drain(); }
@Override public void subscribe(Subscriber<? super T> s) { if (once.compareAndSet(false, true)) { s.onSubscribe(this); actual.lazySet(s); drain(); } else { EmptySubscription.error(new IllegalStateException("Only one Subscriber allowed!"), s); } }
@Override public void dispose() { cancelled = true; upstream.dispose(); worker.dispose(); if (getAndIncrement() == 0) { latest.lazySet(null); } }
@Override public void dispose() { if (cancelled.compareAndSet(false, true)) { if (getAndIncrement() == 0) { actual.lazySet(null); parent.cancel(key); } } }
@Override public void cancel() { if (!cancelled) { cancelled = true; upstream.cancel(); if (getAndIncrement() == 0) { current.lazySet(null); } } }
void errorOrComplete(Observer<? super T> a) { downstream.lazySet(null); Throwable ex = error; if (ex != null) { a.onError(ex); } else { a.onComplete(); } }
@Override public void onError(Throwable e) { current.lazySet(NotificationLite.COMPLETE); if (errors.addThrowable(e)) { drain(); } else { RxJavaPlugins.onError(e); } }
@Override public void onError(Throwable t) { upstream.lazySet(SubscriptionHelper.CANCELLED); actual.onError(t); }
@Override public void cancel() { cancelled = true; upstream.cancel(); worker.dispose(); if (getAndIncrement() == 0) { latest.lazySet(null); } }