@Override public void onSubscribe(Disposable d) { sd.replace(d); }
@Test public void notDisposedWhenReplaced() { final Disposable underlying = mock(Disposable.class); serialDisposable.set(underlying); serialDisposable.replace(Disposables.empty()); serialDisposable.dispose(); verify(underlying, never()).dispose(); }
@Override public void subscribe(final Subscriber<? super Integer> subscriber) { subscriber.onSubscribe(new BooleanSubscription()); task.replace(Schedulers.single().scheduleDirect(new Runnable() { @Override public void run() { try { while (running.get() && !task.isDisposed()) { subscriber.onNext(count.incrementAndGet()); timeHasPassed.countDown(); } subscriber.onComplete(); } catch (Throwable e) { subscriber.onError(e); } finally { finished.countDown(); } } })); }
@Override public void subscribe(final SingleObserver<? super String> observer) { SerialDisposable sd = new SerialDisposable(); observer.onSubscribe(sd); final Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); observer.onSuccess("success"); } catch (InterruptedException e) { interrupted.set(true); latch.countDown(); } } }); sd.replace(Disposables.fromRunnable(new Runnable() { @Override public void run() { unsubscribed.set(true); t.interrupt(); latch.countDown(); } })); t.start(); } });
@Override public void subscribe(final SingleObserver<? super String> observer) { SerialDisposable sd = new SerialDisposable(); observer.onSubscribe(sd); final Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); observer.onSuccess("success"); } catch (InterruptedException e) { interrupted.set(true); latch.countDown(); } } }); sd.replace(Disposables.fromRunnable(new Runnable() { @Override public void run() { unsubscribed.set(true); t.interrupt(); latch.countDown(); } })); t.start(); } });
@Override public void subscribe(final SingleObserver<? super String> observer) { SerialDisposable sd = new SerialDisposable(); observer.onSubscribe(sd); final Thread t = new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); observer.onSuccess("success"); } catch (InterruptedException e) { interrupted.set(true); latch.countDown(); } } }); sd.replace(Disposables.fromRunnable(new Runnable() { @Override public void run() { unsubscribed.set(true); t.interrupt(); latch.countDown(); } })); t.start(); } });
@Override public void subscribe(final Observer<? super Integer> o) { o.onSubscribe(Disposables.empty()); task.replace(Schedulers.single().scheduleDirect(new Runnable() { @Override public void run() { try { while (running.get() && !task.isDisposed()) { o.onNext(count.incrementAndGet()); timeHasPassed.countDown(); } o.onComplete(); } catch (Throwable e) { o.onError(e); } finally { finished.countDown(); } } })); }