@Override public void onError(Throwable e) { this.error = e; Disposable d = scheduler.scheduleDirect(this); DisposableHelper.replace(this, d); }
@Override public void onSuccess(T value) { this.value = value; DisposableHelper.replace(this, scheduler.scheduleDirect(this)); }
@Override public void dispose() { Disposable d = getAndSet(DisposableHelper.DISPOSED); if (d != DisposableHelper.DISPOSED) { this.ds = d; scheduler.scheduleDirect(this); } }
@Override public void onSuccess(T value) { this.value = value; DisposableHelper.replace(this, scheduler.scheduleDirect(this)); }
@Override public void onSuccess(T value) { this.value = value; Disposable d = scheduler.scheduleDirect(this); DisposableHelper.replace(this, d); }
@Override public void cancel() { if (compareAndSet(false, true)) { scheduler.scheduleDirect(new Cancellation()); } }
@Override protected void subscribeActual(final SingleObserver<? super T> s) { final SubscribeOnObserver<T> parent = new SubscribeOnObserver<T>(s, source); s.onSubscribe(parent); Disposable f = scheduler.scheduleDirect(parent); parent.task.replace(f); }
@Override protected void subscribeActual(final CompletableObserver s) { TimerDisposable parent = new TimerDisposable(s); s.onSubscribe(parent); parent.setFuture(scheduler.scheduleDirect(parent, delay, unit)); }
@Override protected void subscribeActual(final SingleObserver<? super Long> s) { TimerDisposable parent = new TimerDisposable(s); s.onSubscribe(parent); parent.setFuture(scheduler.scheduleDirect(parent, delay, unit)); }
@Override protected void subscribeActual(final CompletableObserver s) { TimerDisposable parent = new TimerDisposable(s); s.onSubscribe(parent); parent.setFuture(scheduler.scheduleDirect(parent, delay, unit)); }
@Override protected void subscribeActual(final SingleObserver<? super T> s) { final SubscribeOnObserver<T> parent = new SubscribeOnObserver<T>(s, source); s.onSubscribe(parent); Disposable f = scheduler.scheduleDirect(parent); parent.task.replace(f); }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { SubscribeOnMaybeObserver<T> parent = new SubscribeOnMaybeObserver<T>(observer); observer.onSubscribe(parent); parent.task.replace(scheduler.scheduleDirect(new SubscribeTask<T>(parent, source))); }
@Override public void subscribeActual(final Observer<? super T> s) { final SubscribeOnObserver<T> parent = new SubscribeOnObserver<T>(s); s.onSubscribe(parent); parent.setDisposable(scheduler.scheduleDirect(new SubscribeTask(parent))); }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { SubscribeOnMaybeObserver<T> parent = new SubscribeOnMaybeObserver<T>(observer); observer.onSubscribe(parent); parent.task.replace(scheduler.scheduleDirect(new SubscribeTask<T>(parent, source))); }
@Override public void subscribeActual(final CompletableObserver s) { final CompositeDisposable set = new CompositeDisposable(); s.onSubscribe(set); final AtomicBoolean once = new AtomicBoolean(); Disposable timer = scheduler.scheduleDirect(new DisposeTask(once, set, s), timeout, unit); set.add(timer); source.subscribe(new TimeOutObserver(set, once, s)); }
@Test public void scheduleDirect() { final int[] count = { 0 }; ImmediateThinScheduler.INSTANCE.scheduleDirect(new Runnable() { @Override public void run() { count[0]++; } }); assertEquals(1, count[0]); }
@Test public void scheduleDirect() throws Exception { Scheduler s = getScheduler(); final CountDownLatch cdl = new CountDownLatch(1); s.scheduleDirect(new Runnable() { @Override public void run() { cdl.countDown(); } }); assertTrue(cdl.await(5, TimeUnit.SECONDS)); }
@Test(timeout = 1000) public void runnableDisposedAsync() throws Exception { final Scheduler s = Schedulers.single(); Disposable d = s.scheduleDirect(Functions.EMPTY_RUNNABLE); while (!d.isDisposed()) { Thread.sleep(1); } }
@Test(timeout = 1000) public void runnableDisposedAsyncTimed() throws Exception { final Scheduler s = Schedulers.single(); Disposable d = s.scheduleDirect(Functions.EMPTY_RUNNABLE, 1, TimeUnit.MILLISECONDS); while (!d.isDisposed()) { Thread.sleep(1); } }
@Test public void await() throws Exception { Schedulers.single().scheduleDirect(new Runnable() { @Override public void run() { fs.onNext(1); fs.onComplete(); } }, 100, TimeUnit.MILLISECONDS); assertEquals(1, fs.get(5, TimeUnit.SECONDS).intValue()); }