package org.atomnuke.task.polling; import org.atomnuke.task.TaskHandle; import org.atomnuke.util.TimeValue; /** * * @author zinic */ public class TimeIntervalPollingController extends AbstractPollingController { private final TimeValue scheduleInterval; private TimeValue nextRun; public TimeIntervalPollingController(TaskHandle taskHandle, TimeValue scheduleInterval) { super(taskHandle); this.scheduleInterval = scheduleInterval; scheduled(); } private synchronized void scheduled() { nextRun = TimeValue.now().add(scheduleInterval); } @Override public boolean shouldPoll(TimeValue now) { return nextRun.isLessThan(now); } @Override public void taskScheduled(TaskFuture scheduleFuture) { scheduleFuture.onTaskCompletion(new Runnable() { @Override public void run() { scheduled(); } }); } }