package io.dropwizard.metrics; import io.dropwizard.metrics.Clock; import java.util.concurrent.TimeUnit; public class ManualClock extends Clock { long ticksInNanos = 0; public synchronized void addNanos(long nanos) { ticksInNanos += nanos; } public synchronized void addSeconds(long seconds) { ticksInNanos += TimeUnit.SECONDS.toNanos(seconds); } public synchronized void addMillis(long millis) { ticksInNanos += TimeUnit.MILLISECONDS.toNanos(millis); } public synchronized void addHours(long hours) { ticksInNanos += TimeUnit.HOURS.toNanos(hours); } @Override public synchronized long getTick() { return ticksInNanos; } @Override public synchronized long getTime() { return TimeUnit.NANOSECONDS.toMillis(ticksInNanos); } }