You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by or...@apache.org on 2023/12/18 17:02:28 UTC
(camel) 03/03: CAMEL-20225: use a monotonic source for computing duration
This is an automated email from the ASF dual-hosted git repository.
orpiske pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
commit 5f3c86019c15ef9f883cd3c19bd0084cdb5a6e91
Author: Otavio Rodolfo Piske <an...@gmail.com>
AuthorDate: Fri Dec 15 12:11:58 2023 -0300
CAMEL-20225: use a monotonic source for computing duration
---
.../src/main/java/org/apache/camel/support/MonotonicClock.java | 6 +++++-
.../src/main/java/org/apache/camel/support/ResetableClock.java | 9 ++++++++-
2 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/MonotonicClock.java b/core/camel-support/src/main/java/org/apache/camel/support/MonotonicClock.java
index 3a3ca3f482b..1642f57dfae 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/MonotonicClock.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/MonotonicClock.java
@@ -17,18 +17,22 @@
package org.apache.camel.support;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.Clock;
public class MonotonicClock implements Clock {
private final long created;
+ private final long createdNano;
MonotonicClock() {
this.created = System.currentTimeMillis();
+ this.createdNano = System.nanoTime();
}
@Override
public long elapsed() {
- return System.currentTimeMillis() - created;
+ return TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - createdNano);
}
@Override
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/ResetableClock.java b/core/camel-support/src/main/java/org/apache/camel/support/ResetableClock.java
index cabf9c776fc..130deaecfd4 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/ResetableClock.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/ResetableClock.java
@@ -17,22 +17,27 @@
package org.apache.camel.support;
+import java.util.concurrent.TimeUnit;
+
import org.apache.camel.Clock;
public final class ResetableClock implements Clock {
private long created;
+ private long createdNano;
ResetableClock(Clock clock) {
this.created = clock.getCreated();
+ this.createdNano = System.nanoTime();
}
ResetableClock() {
this.created = System.currentTimeMillis();
+ this.createdNano = System.nanoTime();
}
@Override
public long elapsed() {
- return System.currentTimeMillis() - created;
+ return TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - createdNano);
}
@Override
@@ -45,6 +50,7 @@ public final class ResetableClock implements Clock {
*/
public void reset() {
this.created = System.currentTimeMillis();
+ this.createdNano = System.nanoTime();
}
/**
@@ -53,5 +59,6 @@ public final class ResetableClock implements Clock {
*/
void unset() {
this.created = 0;
+ this.createdNano = 0;
}
}