org.infinispan.util.DefaultTimeService Maven / Gradle / Ivy
package org.infinispan.util;
import java.time.Clock;
import java.time.Instant;
import java.util.concurrent.TimeUnit;
/**
* The default implementation of {@link TimeService}. It does not perform any optimization and relies on {@link
* System#currentTimeMillis()} and {@link System#nanoTime()}.
*
* @author Pedro Ruivo
* @since 5.3
*/
public class DefaultTimeService implements TimeService {
private final Clock clock;
public DefaultTimeService() {
this.clock = Clock.systemUTC();
}
@Override
public long wallClockTime() {
return System.currentTimeMillis();
}
@Override
public long time() {
return System.nanoTime();
}
@Override
public Instant instant() {
return clock.instant();
}
@Override
public long timeDuration(long startTime, TimeUnit outputTimeUnit) {
return timeDuration(startTime, time(), outputTimeUnit);
}
@Override
public long timeDuration(long startTime, long endTime, TimeUnit outputTimeUnit) {
long remaining = endTime - startTime;
if (remaining <= 0) {
return 0;
}
return outputTimeUnit.convert(remaining, TimeUnit.NANOSECONDS);
}
@Override
public boolean isTimeExpired(long endTime) {
return time() - endTime >= 0;
}
@Override
public long remainingTime(long endTime, TimeUnit outputTimeUnit) {
long remaining = endTime - time();
return remaining <= 0 ? 0 : outputTimeUnit.convert(remaining, TimeUnit.NANOSECONDS);
}
@Override
public long expectedEndTime(long duration, TimeUnit inputTimeUnit) {
if (duration <= 0) {
return time();
}
return time() + inputTimeUnit.toNanos(duration);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy