From 9c79c0a0ee627e3e5676a285fb64931bf61e9e34 Mon Sep 17 00:00:00 2001 From: Ben Christensen Date: Tue, 11 Feb 2014 15:13:00 -0800 Subject: [PATCH] SchedulePeriodically Signature public Subscription schedulePeriodically(final Action1 action, long initialDelay, TimeUnit delayUnit, long period, TimeUnit periodUnit) --- .../src/main/scala/rx/lang/scala/Scheduler.scala | 1 + .../test/java/rx/schedulers/SwingSchedulerTest.java | 10 +++++----- rxjava-core/src/main/java/rx/Scheduler.java | 10 ++++++---- .../src/main/java/rx/operators/ChunkedOperation.java | 4 ++-- .../src/main/java/rx/operators/OperationInterval.java | 2 +- .../src/main/java/rx/operators/OperationTimer.java | 2 +- .../src/main/java/rx/schedulers/ExecutorScheduler.java | 6 +++--- .../src/test/java/rx/schedulers/TestSchedulerTest.java | 2 +- 8 files changed, 20 insertions(+), 17 deletions(-) diff --git a/language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Scheduler.scala b/language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Scheduler.scala index db82612c6f..2b13e6d6a4 100644 --- a/language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Scheduler.scala +++ b/language-adaptors/rxjava-scala/src/main/scala/rx/lang/scala/Scheduler.scala @@ -69,6 +69,7 @@ trait Scheduler { override def call(inner: rx.Scheduler.Inner): Unit = action(javaInnerToScalaInner(inner)) }, initialDelay.toNanos, + duration.NANOSECONDS, period.toNanos, duration.NANOSECONDS ) diff --git a/rxjava-contrib/rxjava-swing/src/test/java/rx/schedulers/SwingSchedulerTest.java b/rxjava-contrib/rxjava-swing/src/test/java/rx/schedulers/SwingSchedulerTest.java index 70008fab34..3b205a49e2 100644 --- a/rxjava-contrib/rxjava-swing/src/test/java/rx/schedulers/SwingSchedulerTest.java +++ b/rxjava-contrib/rxjava-swing/src/test/java/rx/schedulers/SwingSchedulerTest.java @@ -49,16 +49,16 @@ public void testInvalidDelayValues() { final Action1 action = mock(Action1.class); exception.expect(IllegalArgumentException.class); - scheduler.schedulePeriodically(action, -1L, 100L, TimeUnit.SECONDS); + scheduler.schedulePeriodically(action, -1L, TimeUnit.SECONDS, 100L, TimeUnit.SECONDS); exception.expect(IllegalArgumentException.class); - scheduler.schedulePeriodically(action, 100L, -1L, TimeUnit.SECONDS); + scheduler.schedulePeriodically(action, 100L, TimeUnit.SECONDS, -1L, TimeUnit.SECONDS); exception.expect(IllegalArgumentException.class); - scheduler.schedulePeriodically(action, 1L + Integer.MAX_VALUE, 100L, TimeUnit.MILLISECONDS); + scheduler.schedulePeriodically(action, 1L + Integer.MAX_VALUE, TimeUnit.MILLISECONDS, 100L, TimeUnit.MILLISECONDS); exception.expect(IllegalArgumentException.class); - scheduler.schedulePeriodically(action, 100L, 1L + Integer.MAX_VALUE / 1000, TimeUnit.SECONDS); + scheduler.schedulePeriodically(action, 100L, TimeUnit.SECONDS, 1L + Integer.MAX_VALUE / 1000, TimeUnit.SECONDS); } @Test @@ -80,7 +80,7 @@ public void call(Inner inner) { } }; - Subscription sub = scheduler.schedulePeriodically(action, 50, 200, TimeUnit.MILLISECONDS); + Subscription sub = scheduler.schedulePeriodically(action, 50, TimeUnit.MILLISECONDS, 200, TimeUnit.MILLISECONDS); if (!latch.await(5000, TimeUnit.MILLISECONDS)) { fail("timed out waiting for tasks to execute"); diff --git a/rxjava-core/src/main/java/rx/Scheduler.java b/rxjava-core/src/main/java/rx/Scheduler.java index fd93a92972..e233136621 100644 --- a/rxjava-core/src/main/java/rx/Scheduler.java +++ b/rxjava-core/src/main/java/rx/Scheduler.java @@ -71,14 +71,16 @@ public abstract class Scheduler { * The action to execute periodically. * @param initialDelay * Time to wait before executing the action for the first time. + * @param initialDelayUnit + * The time unit the interval above is given in. * @param period * The time interval to wait each time in between executing the action. - * @param unit + * @param periodUnit * The time unit the interval above is given in. * @return A subscription to be able to unsubscribe from action. */ - public Subscription schedulePeriodically(final Action1 action, long initialDelay, long period, TimeUnit unit) { - final long periodInNanos = unit.toNanos(period); + public Subscription schedulePeriodically(final Action1 action, long initialDelay, TimeUnit initialDelayUnit, long period, TimeUnit periodUnit) { + final long periodInNanos = periodUnit.toNanos(period); final Action1 recursiveAction = new Action1() { @Override @@ -91,7 +93,7 @@ public void call(Inner inner) { } } }; - return schedule(recursiveAction, initialDelay, unit); + return schedule(recursiveAction, initialDelay, initialDelayUnit); } public abstract static class Inner implements Subscription { diff --git a/rxjava-core/src/main/java/rx/operators/ChunkedOperation.java b/rxjava-core/src/main/java/rx/operators/ChunkedOperation.java index 42a096212f..d97b7751b8 100644 --- a/rxjava-core/src/main/java/rx/operators/ChunkedOperation.java +++ b/rxjava-core/src/main/java/rx/operators/ChunkedOperation.java @@ -573,7 +573,7 @@ public TimeBasedChunkCreator(final NonOverlappingChunks chunks, long time, public void call(Inner inner) { chunks.emitAndReplaceChunk(); } - }, 0, time, unit)); + }, 0, TimeUnit.MILLISECONDS, time, unit)); } public TimeBasedChunkCreator(final OverlappingChunks chunks, long time, TimeUnit unit, Scheduler scheduler) { @@ -582,7 +582,7 @@ public TimeBasedChunkCreator(final OverlappingChunks chunks, long time, Ti public void call(Inner inner) { chunks.createChunk(); } - }, 0, time, unit)); + }, 0, TimeUnit.MILLISECONDS, time, unit)); } @Override diff --git a/rxjava-core/src/main/java/rx/operators/OperationInterval.java b/rxjava-core/src/main/java/rx/operators/OperationInterval.java index c3936afc09..3345378e8e 100644 --- a/rxjava-core/src/main/java/rx/operators/OperationInterval.java +++ b/rxjava-core/src/main/java/rx/operators/OperationInterval.java @@ -74,7 +74,7 @@ public void call(Inner inner) { observer.onNext(currentValue); currentValue++; } - }, period, period, unit); + }, period, unit, period, unit); return Subscriptions.create(new Action0() { @Override diff --git a/rxjava-core/src/main/java/rx/operators/OperationTimer.java b/rxjava-core/src/main/java/rx/operators/OperationTimer.java index ee19ee7512..5c951b4318 100644 --- a/rxjava-core/src/main/java/rx/operators/OperationTimer.java +++ b/rxjava-core/src/main/java/rx/operators/OperationTimer.java @@ -87,7 +87,7 @@ public Subscription onSubscribe(final Observer t1) { public void call(Inner inner) { t1.onNext(count++); } - }, initialDelay, period, unit); + }, initialDelay, unit, period, unit); } } } diff --git a/rxjava-core/src/main/java/rx/schedulers/ExecutorScheduler.java b/rxjava-core/src/main/java/rx/schedulers/ExecutorScheduler.java index b0c0607456..553daf75ae 100644 --- a/rxjava-core/src/main/java/rx/schedulers/ExecutorScheduler.java +++ b/rxjava-core/src/main/java/rx/schedulers/ExecutorScheduler.java @@ -60,7 +60,7 @@ public Subscription schedule(Action1 action, long delayTime, TimeUnit uni } @Override - public Subscription schedulePeriodically(final Action1 action, long initialDelay, long period, TimeUnit unit) { + public Subscription schedulePeriodically(final Action1 action, long initialDelay, TimeUnit delayUnit, long period, TimeUnit periodUnit) { if (executor instanceof ScheduledExecutorService) { final InnerExecutorScheduler inner = new InnerExecutorScheduler(); ScheduledFuture f = ((ScheduledExecutorService) executor).scheduleAtFixedRate(new Runnable() { @@ -72,12 +72,12 @@ public void run() { } action.call(inner); } - }, initialDelay, period, unit); + }, delayUnit.toMillis(initialDelay), periodUnit.toMillis(period), TimeUnit.MILLISECONDS); inner.innerSubscription.set(Subscriptions.from(f)); return inner; } else { - return super.schedulePeriodically(action, initialDelay, period, unit); + return super.schedulePeriodically(action, initialDelay, delayUnit, period, periodUnit); } } diff --git a/rxjava-core/src/test/java/rx/schedulers/TestSchedulerTest.java b/rxjava-core/src/test/java/rx/schedulers/TestSchedulerTest.java index af64b87468..4dcad199ba 100644 --- a/rxjava-core/src/test/java/rx/schedulers/TestSchedulerTest.java +++ b/rxjava-core/src/test/java/rx/schedulers/TestSchedulerTest.java @@ -46,7 +46,7 @@ public void call(Inner inner) { System.out.println(scheduler.now()); calledOp.call(scheduler.now()); } - }, 1, 2, TimeUnit.SECONDS); + }, 1, TimeUnit.SECONDS, 2, TimeUnit.SECONDS); verify(calledOp, never()).call(anyLong());