diff --git a/event-loop/src/main/java/mc/core/events/v3/EventPipeline.java b/event-loop/src/main/java/mc/core/events/v3/EventPipeline.java index d0773a3..f2aaa68 100644 --- a/event-loop/src/main/java/mc/core/events/v3/EventPipeline.java +++ b/event-loop/src/main/java/mc/core/events/v3/EventPipeline.java @@ -38,25 +38,27 @@ public class EventPipeline { } RegisteredEventHandler handler = handlers.get(currentIndex); - service.addTask(new ResourceRunnable() { - @Override - public void run() { - // TODO: Do we really need to process this in an async thread? - if (!event.isCanceled() || !handler.isIgnoreCancelled()) { + if (!event.isCanceled() || !handler.isIgnoreCancelled()) { + service.addTask(new ResourceRunnable() { + @Override + public void run() { try { handler.getMethod().invoke(handler.getObject(), event); } catch (IllegalAccessException | InvocationTargetException e) { log.error("Unable to dispatch event " + event.getClass().getSimpleName() + " to handler " + event.getClass().getName(), e); } } - } - @Override - public void after() { - currentIndex++; - next(service); - } - }); + @Override + public void after() { + currentIndex++; + next(service); + } + }); + } else { + currentIndex++; + next(service); + } } public enum PipelineState { diff --git a/event-loop/src/main/java/mc/core/events/v3/FullAsyncEventLoop.java b/event-loop/src/main/java/mc/core/events/v3/FullAsyncEventLoop.java index 4001869..a88e2e9 100644 --- a/event-loop/src/main/java/mc/core/events/v3/FullAsyncEventLoop.java +++ b/event-loop/src/main/java/mc/core/events/v3/FullAsyncEventLoop.java @@ -97,7 +97,6 @@ public class FullAsyncEventLoop { } if (queue.peek().getState() == EventPipeline.PipelineState.FINISHED) { - // TODO: Post-event callback? queue.poll(); } diff --git a/event-loop/src/main/java/mc/core/events/v3/runner/EventExecutorService.java b/event-loop/src/main/java/mc/core/events/v3/runner/EventExecutorService.java index 0a5a852..93bbee7 100644 --- a/event-loop/src/main/java/mc/core/events/v3/runner/EventExecutorService.java +++ b/event-loop/src/main/java/mc/core/events/v3/runner/EventExecutorService.java @@ -9,6 +9,7 @@ import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.BlockingQueue; public class EventExecutorService { + private static final boolean WORKER_INSTANT_EXECUTE = false; private BlockingQueue queue = new ArrayBlockingQueue<>(100); private ScheduleStrategy strategy = new DefaultScheduleStrategy(); private Set executorThreads = new HashSet<>(); @@ -42,8 +43,7 @@ public class EventExecutorService { } public void addTask(ResourceRunnable task) { - if (Thread.currentThread() instanceof ExecutorThread) { - // TODO: Do we really need instant execution? + if (WORKER_INSTANT_EXECUTE && Thread.currentThread() instanceof ExecutorThread) { ((ExecutorThread) Thread.currentThread()).executeTask(task); } else queue.offer(task);