Skip to content
Snippets Groups Projects
RemoteCompressionClient.java 1.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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();
        }
    }