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);
}