package dailyBot.control;
import java.util.concurrent.atomic.AtomicLong;
public abstract class DailyRunnable implements Runnable
{
private AtomicLong lastUpdate = new AtomicLong(System.currentTimeMillis());
private final String name;
private final long updateInterval;
private final boolean runWhileMarketClosed;
private AtomicLong lastRun = new AtomicLong();
public DailyRunnable(String name, long updateInterval, boolean runWhileMarketClosed)
{
this.name = name;
this.updateInterval = updateInterval;
this.runWhileMarketClosed = runWhileMarketClosed;
}
public abstract void runOnce();
public final void run()
{
lastRun.set(System.currentTimeMillis());
if(runWhileMarketClosed || (!DailyBotMain.marketClosed()))
runOnce();
setLastUpdate(System.currentTimeMillis());
}
private void setLastUpdate(long time)
{
lastUpdate.getAndSet(time);
}
public long getLastUpdate()
{
return lastUpdate.getAndAdd(0);
}
public long getUpdateInterval()
{
return updateInterval;
}
public long getLastRun()
{
return lastRun.get();
}
public String getName()
{
return name;
}
}