package com.zillabyte.motherbrain.flow.operations; import java.io.Serializable; import java.util.concurrent.TimeUnit; public class OperationSleeper implements Serializable { private static final long serialVersionUID = -6034452657920383472L; private long _sleepUntil = 0L; public boolean isShouldSleep() { return (_sleepUntil > System.currentTimeMillis()); } public synchronized void sleepFor(long duration, TimeUnit unit) { long curTime = System.currentTimeMillis(); _sleepUntil = Math.max(_sleepUntil, curTime + TimeUnit.MILLISECONDS.convert(duration, unit)); } /** * * @param duration in Millis */ public void sleepFor(long duration) { sleepFor(duration, TimeUnit.MILLISECONDS); } public void sleepUntil(long systemMillis){ _sleepUntil = systemMillis; } public void sleepForever() { sleepFor(100, TimeUnit.DAYS); } }