package com.aol.micro.server.event.metrics;
import java.util.concurrent.TimeUnit;
import com.codahale.metrics.Timer.Context;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import cyclops.control.Maybe;
public class TimerManager {
private final Cache<Long, Context> contexts;
public TimerManager(long maxSize, int minutesUntilExpire) {
contexts = CacheBuilder.newBuilder()
.maximumSize(maxSize)
.expireAfterWrite(minutesUntilExpire, TimeUnit.MINUTES)
.build();
}
public void complete(long id) {
Maybe.ofNullable(contexts.getIfPresent(id))
.forEach(c -> c.stop());
contexts.invalidate(id);
}
public void start(long id, Context context) {
contexts.put(id, context);
}
}