11package org .iot .dsa ;
22
3- import org .iot .dsa .time .DSTime ;
3+ import org .iot .dsa .time .Time ;
44
55/**
66 * DSA thread pool and timers.
@@ -61,8 +61,8 @@ public static Timer run(Runnable arg, long start, long intervalMillis) {
6161 * @return For inspecting and cancel execution.
6262 */
6363 public static Timer runAfterDelay (Runnable arg , long delayMillis , long intervalMillis ) {
64- long intervalNanos = intervalMillis * DSTime .NANOS_IN_MS ;
65- long delayNanos = delayMillis * DSTime .NANOS_IN_MS ;
64+ long intervalNanos = intervalMillis * Time .NANOS_IN_MS ;
65+ long delayNanos = delayMillis * Time .NANOS_IN_MS ;
6666 long startNanos = System .nanoTime () + delayNanos ;
6767 Timer f = new Timer (arg , startNanos , intervalNanos );
6868 synchronized (DSRuntime .class ) {
@@ -102,7 +102,7 @@ public static Timer runAt(Runnable arg, long at) {
102102 * @return For inspecting and cancel execution.
103103 */
104104 public static Timer runDelayed (Runnable arg , long delayMillis ) {
105- long delayNanos = delayMillis * DSTime .NANOS_IN_MS ;
105+ long delayNanos = delayMillis * Time .NANOS_IN_MS ;
106106 long startNanos = System .nanoTime () + delayNanos ;
107107 Timer f = new Timer (arg , startNanos , -1 );
108108 synchronized (DSRuntime .class ) {
@@ -179,6 +179,14 @@ private static void executeTimers() {
179179 }
180180 }
181181
182+ private static long nanoTimeToSystemTimeMillis (long nanoTime ) {
183+ long nowNanos = System .nanoTime ();
184+ long nowMillis = System .currentTimeMillis ();
185+ long nanosTillTime = nanoTime - nowNanos ;
186+ long millisTillTime = nanosTillTime / Time .NANOS_IN_MS ;
187+ return nowMillis + millisTillTime ;
188+ }
189+
182190 private static void shutdown () {
183191 synchronized (DSRuntime .class ) {
184192 alive = false ;
@@ -206,7 +214,7 @@ public void run() {
206214 while (alive ) {
207215 executeTimers ();
208216 synchronized (DSRuntime .class ) {
209- delta = (nextCycle - System .nanoTime ()) / DSTime .NANOS_IN_MS ;
217+ delta = (nextCycle - System .nanoTime ()) / Time .NANOS_IN_MS ;
210218 if (delta > 0 ) {
211219 try {
212220 DSRuntime .class .wait (delta );
@@ -274,7 +282,7 @@ public void cancel() {
274282 * The interval between runs, zero or less for no interval.
275283 */
276284 public long getInterval () {
277- return interval / DSTime .NANOS_IN_MS ;
285+ return interval / Time .NANOS_IN_MS ;
278286 }
279287
280288 /**
@@ -306,7 +314,7 @@ public boolean isRunning() {
306314 * The lastRun run or -1 if it hasn't run yet.
307315 */
308316 public long lastRun () {
309- return hasRun ? DSTime . nanoTimeToSystemTimeMillis (lastRun ) : -1 ;
317+ return hasRun ? nanoTimeToSystemTimeMillis (lastRun ) : -1 ;
310318 }
311319
312320 /**
@@ -315,7 +323,7 @@ public long lastRun() {
315323 * @return 0 or less when finished.
316324 */
317325 public long nextRun () {
318- return done ? cancelled ? 0 : -1 : DSTime . nanoTimeToSystemTimeMillis (nextRun );
326+ return done ? cancelled ? 0 : -1 : nanoTimeToSystemTimeMillis (nextRun );
319327 }
320328
321329 /**
@@ -350,7 +358,7 @@ public Timer setSkipMissedIntervals(boolean skipMissed) {
350358
351359 public String toString () {
352360 StringBuilder buf = new StringBuilder ();
353- DSTime .encode (nextRun (), false , buf );
361+ Time .encode (nextRun (), false , buf );
354362 buf .append (" - " ).append (runnable .toString ());
355363 return buf .toString ();
356364 }
0 commit comments