From f9b2d24e8c37f3804a5b0393bc142f11ffbd5283 Mon Sep 17 00:00:00 2001 From: "Tristan B. Kildaire" Date: Thu, 9 Sep 2021 23:00:33 +0200 Subject: [PATCH] Fully implemented dispatcher --- source/tasky/engine.d | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/source/tasky/engine.d b/source/tasky/engine.d index 4aea105..e1efb12 100644 --- a/source/tasky/engine.d +++ b/source/tasky/engine.d @@ -5,6 +5,7 @@ import core.sync.mutex : Mutex; import tristanable.manager; import std.socket : Socket; import tristanable.queue : Queue; +import tristanable.queueitem; import tristanable.encoding : DataMessage, encodeForSend; import eventy; @@ -57,8 +58,11 @@ public final class TaskManager : Thread /* If the job is fulfilled */ if(job.isFulfilled()) { - /* Get the job's task */ - Task jobTask = job.getTask(); + /* Get the Event for dispatching */ + Event dispatchEvent = job.getEventForDispatch(); + + /* Dispatch the event */ + eventEngine.push(dispatchEvent); /* Free the tristanable tag for this job */ job.complete(); @@ -116,6 +120,18 @@ public final class TaskManager : Thread return tEncoded; } + public Event getEventForDispatch() + { + /* Dequeue the data from the tristanable queue */ + QueueItem queueItem = tristanableTag.dequeue(); + byte[] receivedData = queueItem.getData(); + + /* Parse into Event (based on the Job's task type) and return */ + Event eventToDispatch = task.getEvent(receivedData); + + return eventToDispatch; + } + public bool isFulfilled() { return tristanableTag.poll();