@Override public void onComplete() { if (TERMINATED.compareAndSet(this, NOT_TERMINATED, TERMINATED_WITH_SUCCESS)) { timer.dispose(); checkedComplete(); } }
@Test public void scanWorker() { Worker worker = Schedulers.immediate().createWorker(); Scannable s = (Scannable) worker; assertThat(s.scan(Scannable.Attr.TERMINATED)).isFalse(); assertThat(s.scan(Scannable.Attr.CANCELLED)).isFalse(); assertThat(s.scan(Scannable.Attr.NAME)).isEqualTo(Schedulers.IMMEDIATE + ".worker"); worker.dispose(); assertThat(s.scan(Scannable.Attr.TERMINATED)).isTrue(); assertThat(s.scan(Scannable.Attr.CANCELLED)).isTrue(); } }
void doComplete(Subscriber<?> a) { a.onComplete(); worker.dispose(); }
void doComplete(Subscriber<?> a) { a.onComplete(); worker.dispose(); }
@Override public void dispose() { main.dispose(); }
@Override public void cancel() { Subscription a = s; if (a != Operators.cancelledSubscription()) { a = S.getAndSet(this, Operators.cancelledSubscription()); if (a != null && a != Operators.cancelledSubscription()) { a.cancel(); } } worker.dispose(); }
@Override public void onComplete() { actual.onComplete(); worker.dispose(); }
@Override public void cancel() { if (!cancelled) { cancelled = true; worker.dispose(); } } }
@Override public void onError(Throwable t) { error = t; done = true; if (enter()) { drainLoop(); } actual.onError(t); timer.dispose(); worker.dispose(); }
@Override public void cancel() { if (Operators.terminate(S, this)) { worker.dispose(); } } }
@Override public void onComplete() { actual.onComplete(); worker.dispose(); THREAD.lazySet(this,null); }
@Override public void cancel() { cancelled = true; s.cancel(); worker.dispose(); if (WIP.getAndIncrement(this) == 0) { clearQueue(); } }
@Override public void cancel() { if (cancelled) { return; } cancelled = true; s.cancel(); worker.dispose(); if (WIP.getAndIncrement(this) == 0) { Operators.onDiscardQueueWithClear(queue, actual.currentContext(), null); } }
void doError(Subscriber<?> a, Throwable e) { try { a.onError(e); } finally { worker.dispose(); } }
@Override public void onComplete() { done = true; if (enter()) { drainLoop(); } actual.onComplete(); timer.dispose(); worker.dispose(); }
@Override public void onError(Throwable t) { try{ actual.onError(t); } finally { worker.dispose(); THREAD.lazySet(this,null); } }
@Override public void cancel() { if (cancelled) { return; } cancelled = true; s.cancel(); worker.dispose(); if (WIP.getAndIncrement(this) == 0) { Operators.onDiscardQueueWithClear(queue, actual.currentContext(), null); } }
@Override public void onError(Throwable t) { try { actual.onError(t); } finally { worker.dispose(); } }
@Override public void cancel() { s.cancel(); w.dispose(); }
void doError(Subscriber<?> a, Throwable e) { try { a.onError(e); } finally { worker.dispose(); } }