/* wait until the next reaction has to run. */
Optional<net.pterodactylus.rhynodge.State> lastState = stateManager.loadLastState(reactionName);
- long lastStateTime = lastState.isPresent() ? lastState.get().time() : 0;
int lastStateFailCount = lastState.isPresent() ? lastState.get().failCount() : 0;
- long waitTime = (lastStateTime + nextReaction.get().getReaction().updateInterval()) - System.currentTimeMillis();
+ long waitTime = nextReaction.get().getNextTime() - System.currentTimeMillis();
logger.debug(format("Time to wait for next Reaction: %d millseconds.", waitTime));
if (waitTime > 0) {
- synchronized (reactions) {
- try {
- logger.info(format("Waiting until %tc.", lastStateTime + nextReaction.get().getReaction().updateInterval()));
- reactions.wait(waitTime);
- } catch (InterruptedException ie1) {
- /* we’re looping! */
- }
- }
+ waitForNextReactionToStart(nextReaction, waitTime);
/* re-start loop to check for new reactions. */
continue;
}
}
+ private void waitForNextReactionToStart(Optional<NextReaction> nextReaction, long waitTime) {
+ synchronized (reactions) {
+ try {
+ logger.info(format("Waiting until %tc.", nextReaction.get().getNextTime()));
+ reactions.wait(waitTime);
+ } catch (InterruptedException ie1) {
+ /* we’re looping! */
+ }
+ }
+ }
+
private Optional<NextReaction> getNextReaction() {
while (isRunning()) {
synchronized (reactions) {