/** * Returns the currently contained Disposable or null if this container is empty. * @return the current Disposable, may be null */ @Nullable public Disposable get() { Disposable d = resource.get(); if (d == DisposableHelper.DISPOSED) { return Disposables.disposed(); } return d; }
/** * Returns the currently contained Disposable or null if this container is empty. * @return the current Disposable, may be null */ @Nullable public Disposable get() { Disposable d = resource.get(); if (d == DisposableHelper.DISPOSED) { return Disposables.disposed(); } return d; }
@Override protected void subscribeActual(SingleObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); observer.onSuccess(value); }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); observer.onSuccess(value); }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); observer.onError(error); } }
@Override protected void subscribeActual(Observer<? super Integer> observer) { observer.onSubscribe(Disposables.disposed()); } }.refCount();
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); observer.onError(error); } }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); Throwable ex; try { ex = ObjectHelper.requireNonNull(errorSupplier.call(), "Callable returned null throwable. Null values are generally not allowed in 2.x operators and sources."); } catch (Throwable ex1) { Exceptions.throwIfFatal(ex1); ex = ex1; } observer.onError(ex); } }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); observer.onSuccess(value); }
@Override protected void subscribeActual(SingleObserver<? super T> s) { s.onSubscribe(Disposables.disposed()); s.onSuccess(value); }
@Override @SuppressLint("NewApi") // Async will only be true when the API is available to call. public Disposable schedule(Runnable run, long delay, TimeUnit unit) { if (run == null) throw new NullPointerException("run == null"); if (unit == null) throw new NullPointerException("unit == null"); if (disposed) { return Disposables.disposed(); } run = RxJavaPlugins.onSchedule(run); ScheduledRunnable scheduled = new ScheduledRunnable(handler, run); Message message = Message.obtain(handler, scheduled); message.obj = this; // Used as token for batch disposal of this worker's runnables. if (async) { message.setAsynchronous(true); } handler.sendMessageDelayed(message, unit.toMillis(delay)); // Re-check disposed state for removing in case we were racing a call to dispose(). if (disposed) { handler.removeCallbacks(scheduled); return Disposables.disposed(); } return scheduled; }
@Override protected void subscribeActual(MaybeObserver<? super T> observer) { observer.onSubscribe(Disposables.disposed()); Throwable ex; try { ex = ObjectHelper.requireNonNull(errorSupplier.call(), "Callable returned null throwable. Null values are generally not allowed in 2.x operators and sources."); } catch (Throwable ex1) { Exceptions.throwIfFatal(ex1); ex = ex1; } observer.onError(ex); } }
@Test public void testUnsubscribed() { Disposable disposed = Disposables.disposed(); assertTrue(disposed.isDisposed()); }
@Test public void shutdownRejects() { final int[] calls = { 0 }; Runnable r = new Runnable() { @Override public void run() { calls[0]++; } }; Scheduler s = new SingleScheduler(); s.shutdown(); assertEquals(Disposables.disposed(), s.scheduleDirect(r)); assertEquals(Disposables.disposed(), s.scheduleDirect(r, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), s.schedulePeriodicallyDirect(r, 1, 1, TimeUnit.SECONDS)); Worker w = s.createWorker(); ((ScheduledWorker)w).executor.shutdownNow(); assertEquals(Disposables.disposed(), w.schedule(r)); assertEquals(Disposables.disposed(), w.schedule(r, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), w.schedulePeriodically(r, 1, 1, TimeUnit.SECONDS)); assertEquals(0, calls[0]); w.dispose(); assertTrue(w.isDisposed()); }
s.shutdown(); assertEquals(Disposables.disposed(), s.scheduleDirect(r)); assertEquals(Disposables.disposed(), s.scheduleDirect(r, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), s.schedulePeriodicallyDirect(r, 1, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), w.schedule(r)); assertEquals(Disposables.disposed(), w.schedule(r, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), w.schedulePeriodically(r, 1, 1, TimeUnit.SECONDS));
@Test(expected = UnsupportedOperationException.class) public void offer() { TestObserver<Integer> to = new TestObserver<Integer>(); BasicFuseableObserver<Integer, Integer> o = new BasicFuseableObserver<Integer, Integer>(to) { @Nullable @Override public Integer poll() throws Exception { return null; } @Override public int requestFusion(int mode) { return 0; } @Override public void onNext(Integer value) { } @Override protected boolean beforeDownstream() { return false; } }; o.onSubscribe(Disposables.disposed()); to.assertNotSubscribed(); o.offer(1); }
@Test public void shutdownRejects() { final int[] calls = { 0 }; Runnable r = new Runnable() { @Override public void run() { calls[0]++; } }; Scheduler s = getScheduler(); Worker w = s.createWorker(); w.dispose(); assertTrue(w.isDisposed()); assertEquals(Disposables.disposed(), w.schedule(r)); assertEquals(Disposables.disposed(), w.schedule(r, 1, TimeUnit.SECONDS)); assertEquals(Disposables.disposed(), w.schedulePeriodically(r, 1, 1, TimeUnit.SECONDS)); NewThreadWorker actual = (NewThreadWorker)w; CompositeDisposable cd = new CompositeDisposable(); actual.scheduleActual(r, 1, TimeUnit.SECONDS, cd); assertEquals(0, cd.size()); assertEquals(0, calls[0]); }
@Test public void toV1SubscriptionIsUnsubscribedTrue() { assertTrue(RxJavaInterop.toV1Subscription(Disposables.disposed()).isUnsubscribed()); }
@Override public Disposable scheduleDirect(Runnable run) { ScheduledExecutorService exec = pick(); if (exec == REJECTING) { return Disposables.disposed(); } try { return Disposables.fromFuture(exec.submit(RxJavaPlugins.onSchedule(run))); } catch (RejectedExecutionException ex) { return Disposables.disposed(); } }