X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Frhynodge%2Fengine%2FEngine.java;h=8ff70201734f934946e03c286b79e78069ab00d4;hb=e426b888068677738269eb378c24a6f62db3614d;hp=5c289c55fc87b9a1dc5d55430897f94391985949;hpb=09c47ffd3d61d5d8d63e95d253318ec361433c76;p=rhynodge.git diff --git a/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java b/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java index 5c289c5..8ff7020 100644 --- a/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java +++ b/src/main/java/net/pterodactylus/rhynodge/engine/Engine.java @@ -28,7 +28,11 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ScheduledThreadPoolExecutor; +import javax.inject.Inject; +import javax.inject.Singleton; + import net.pterodactylus.rhynodge.Reaction; +import net.pterodactylus.rhynodge.actions.EmailAction; import net.pterodactylus.rhynodge.states.StateManager; /** @@ -36,21 +40,19 @@ import net.pterodactylus.rhynodge.states.StateManager; * * @author David ‘Bombe’ Roden */ +@Singleton public class Engine { private final StateManager stateManager; private final ScheduledExecutorService executorService; private final Map> scheduledFutures = new ConcurrentHashMap<>(); + private final EmailAction errorEmailAction; - /** - * Creates a new engine. - * - * @param stateManager - * The state manager - */ - public Engine(StateManager stateManager) { + @Inject + public Engine(StateManager stateManager, EmailAction errorEmailAction) { this.stateManager = stateManager; - executorService = new ScheduledThreadPoolExecutor(10); + this.errorEmailAction = errorEmailAction; + executorService = new ScheduledThreadPoolExecutor(1); } // @@ -70,7 +72,7 @@ public class Engine { Optional lastState = reactionState.loadLastState(); long lastExecutionTime = lastState.map(net.pterodactylus.rhynodge.State::time).orElse(0L); long nextExecutionTime = lastExecutionTime + reaction.updateInterval(); - ReactionRunner reactionRunner = new ReactionRunner(reaction, reactionState); + ReactionRunner reactionRunner = new ReactionRunner(reaction, reactionState, errorEmailAction); ScheduledFuture future = executorService.scheduleWithFixedDelay(reactionRunner, nextExecutionTime - currentTimeMillis(), reaction.updateInterval(), MILLISECONDS); scheduledFutures.put(name, future); }