@Override public void dispose() { upstream.dispose(); worker.dispose(); }
@Override public void onComplete() { if (index.getAndSet(Long.MAX_VALUE) != Long.MAX_VALUE) { task.dispose(); downstream.onComplete(); worker.dispose(); } }
@Override public void onComplete() { if (index.getAndSet(Long.MAX_VALUE) != Long.MAX_VALUE) { task.dispose(); downstream.onComplete(); worker.dispose(); } }
@Override public void onTimeout(long idx) { if (compareAndSet(idx, Long.MAX_VALUE)) { SubscriptionHelper.cancel(upstream); downstream.onError(new TimeoutException(timeoutMessage(timeout, unit))); worker.dispose(); } }
@Override public void onError(Throwable t) { synchronized (this) { buffer = null; } downstream.onError(t); w.dispose(); }
@Override public void dispose() { if (!disposed) { disposed = true; upstream.dispose(); worker.dispose(); if (getAndIncrement() == 0) { queue.clear(); } } }
@Override public void cancel() { upstream.cancel(); worker.dispose(); } }
@Override public void onComplete() { if (getAndSet(Long.MAX_VALUE) != Long.MAX_VALUE) { task.dispose(); downstream.onComplete(); worker.dispose(); } }
@Override public void onError(Throwable t) { if (done) { RxJavaPlugins.onError(t); } else { done = true; downstream.onError(t); worker.dispose(); } }
@Override public void onError(Throwable t) { done = true; w.dispose(); clear(); downstream.onError(t); }
@Override public void onComplete() { if (done) { return; } done = true; downstream.onComplete(); worker.dispose(); }
@Override public void dispose() { DisposableHelper.dispose(upstream); worker.dispose(); }
@Override public void onTimeout(long idx) { if (compareAndSet(idx, Long.MAX_VALUE)) { DisposableHelper.dispose(upstream); downstream.onError(new TimeoutException(timeoutMessage(timeout, unit))); worker.dispose(); } }
@Override public void dispose() { disposed = true; worker.dispose(); }
@Override public void onError(Throwable t) { synchronized (this) { buffer = null; } downstream.onError(t); w.dispose(); }
@Override public void cancel() { cancelled = true; upstream.cancel(); w.dispose(); clear(); }
@Override public void run() { calls[0]++; w.dispose(); assertSame(EmptyDisposable.INSTANCE, w.schedule(new Runnable() { @Override public void run() { calls[1]++; } }, 1, TimeUnit.MILLISECONDS)); } });
@Test public void dispose() { Worker w = Schedulers.trampoline().createWorker(); assertFalse(w.isDisposed()); w.dispose(); assertTrue(w.isDisposed()); assertEquals(EmptyDisposable.INSTANCE, w.schedule(Functions.EMPTY_RUNNABLE)); }
@Override public final void cancel() { if (!cancelled) { cancelled = true; upstream.cancel(); worker.dispose(); if (getAndIncrement() == 0) { queue.clear(); } } }
@Override public void onComplete() { downstream.onComplete(); worker.dispose(); }