diff --git a/pom.xml b/pom.xml index 6f64f77..b8c76ba 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ 4.0.0 net.pcsx2 HifumiBot - 4.8.4 + 4.9.0 21 21 diff --git a/src/main/java/net/pcsx2/hifumi/Scheduler.java b/src/main/java/net/pcsx2/hifumi/Scheduler.java index 921506d..3adb9fd 100644 --- a/src/main/java/net/pcsx2/hifumi/Scheduler.java +++ b/src/main/java/net/pcsx2/hifumi/Scheduler.java @@ -25,7 +25,9 @@ import java.util.HashMap; import java.util.Set; +import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.ThreadFactory; @@ -36,11 +38,17 @@ public class Scheduler { private ScheduledExecutorService threadPool; + private ExecutorService messageEventFIFO; private HashMap runnables = new HashMap(); private HashMap> statuses = new HashMap>(); public Scheduler() { this.threadPool = Executors.newScheduledThreadPool(6, new SchedulerThreadFactory("pool")); + this.messageEventFIFO = Executors.newSingleThreadExecutor(new SchedulerThreadFactory("msg-evt-fifo")); + } + + public void addToMessageEventFIFO(Runnable runnable) { + this.messageEventFIFO.submit(runnable); } /** diff --git a/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java b/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java index 2456759..3a86ab2 100644 --- a/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java +++ b/src/main/java/net/pcsx2/hifumi/event/MessageEventListener.java @@ -32,7 +32,7 @@ public class MessageEventListener extends ListenerAdapter { @Override public void onMessageReceived(MessageReceivedEvent event) { - HifumiBot.getSelf().getScheduler().runOnce(() -> { + HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> { // Store the time of this event handler firing Instant now = Instant.now(); @@ -133,7 +133,7 @@ public void onMessageReceived(MessageReceivedEvent event) { @Override public void onMessageDelete(MessageDeleteEvent event) { - HifumiBot.getSelf().getScheduler().runOnce(() -> { + HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> { Database.insertMessageDeleteEvent(event); MessageObject deletedMessage = Database.getLatestMessage(event.getMessageId()); @@ -148,7 +148,7 @@ public void onMessageDelete(MessageDeleteEvent event) { @Override public void onMessageBulkDelete(MessageBulkDeleteEvent event) { - HifumiBot.getSelf().getScheduler().runOnce(() -> { + HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> { Database.insertMessageBulkDeleteEvent(event); for (String messageId : event.getMessageIds()) { @@ -166,7 +166,7 @@ public void onMessageBulkDelete(MessageBulkDeleteEvent event) { @Override public void onMessageUpdate(MessageUpdateEvent event) { - HifumiBot.getSelf().getScheduler().runOnce(() -> { + HifumiBot.getSelf().getScheduler().addToMessageEventFIFO(() -> { MessageObject beforeEditMessage = Database.getLatestMessage(event.getMessageId()); if (!HifumiBot.getSelf().getPermissionManager().hasPermission(PermissionLevel.ADMIN, event.getMember())) {