package org.hyperic.hq.agent.stats; import java.io.File; import java.util.Date; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.TimeUnit; import org.hyperic.hq.agent.AgentConfig; import org.hyperic.hq.stats.AbstractStatsWriter; public class AgentStatsWriter extends AbstractStatsWriter { private static final String PREFIX = "agentstats"; private ScheduledThreadPoolExecutor executor; private AgentConfig config; public AgentStatsWriter(AgentConfig config) { super(AgentStatsCollector.getInstance(), Retention.MONTHLY, PREFIX); this.executor = new ScheduledThreadPoolExecutor(1); this.config = config; } protected ScheduledFuture<?> scheduleWithFixedDelay(Runnable task, Date startTime, long millis) { return executor.scheduleWithFixedDelay(task, millis, millis, TimeUnit.MILLISECONDS); } protected String getAndSetupBasedir() { File logDir = config.getLogDir(); File statsDir = new File(logDir, PREFIX); statsDir.mkdir(); return statsDir.getAbsolutePath(); } public void stopWriter() { executor.shutdown(); } }