package bdv.util; import java.time.Duration; import java.time.Instant; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; public class RemoteCompressionClient { private final AtomicInteger compressedAccumulation = new AtomicInteger(0); private final AtomicInteger uncompressedAccumulation = new AtomicInteger(0); private final AtomicInteger handledRequestCount = new AtomicInteger(0); private final AtomicLong compressionTimeAccumulation = new AtomicLong(0); private Instant lastAccessTime; public RemoteCompressionClient() { updateLastAccessTime(); } public AtomicInteger getCompressedAccumulation() { return compressedAccumulation; } public AtomicInteger getUncompressedAccumulation() { return uncompressedAccumulation; } public AtomicInteger getHandledRequestCount() { return handledRequestCount; } public AtomicLong getCompressionTimeAccumulation() { return compressionTimeAccumulation; } public void updateLastAccessTime() { lastAccessTime = Instant.now(); } public long getInactiveTimeInMinutes() { return Duration.between(lastAccessTime, Instant.now()).toMinutes(); } /** * Reset the compression client and update lastAccessTime. */ public void reset() { compressedAccumulation.set(0); uncompressedAccumulation.set(0); handledRequestCount.set(0); compressionTimeAccumulation.set(0); updateLastAccessTime(); } }