This commit is contained in:
Tristan B. Velloza Kildaire 2021-09-09 22:49:58 +02:00
parent efa818e06f
commit 72082d8d23
1 changed files with 33 additions and 12 deletions

View File

@ -71,9 +71,10 @@ unittest
TaskManager tMan = new TaskManager(manager); TaskManager tMan = new TaskManager(manager);
tMan.start(); tMan.start();
ReverseTask task = new ReverseTask(""); ReverseTask task = new ReverseTask("");
task.eventType = new ReverseEvent(1, "Hello");
tMan.pushJob(task); tMan.pushJob(task);
@ -206,7 +207,9 @@ public final class ReverseTask : Task
this(string words) this(string words)
{ {
super(cast(byte[])words); ReverseEvent revEvent = new ReverseEvent(1, words);
super(revEvent, [&reverseHandler], cast(byte[])"d");
} }
public static void reverseHandler(Event e) public static void reverseHandler(Event e)
@ -218,11 +221,6 @@ public final class ReverseTask : Task
private void sethandlers()
{
/* Set some signal handlers */
handlers = [new Signal([eventType.id], &reverseHandler)];
}
} }
public class Task public class Task
@ -240,18 +238,34 @@ public class Task
return eventType; return eventType;
} }
private void setEvent(Event eventType, EventHandler[] handlers)
{
this.eventType = eventType;
foreach(EventHandler handler; handlers)
{
this.handlers ~= [new Signal([eventType.id], handler)];
}
}
private byte[] dataToSend; private byte[] dataToSend;
this(byte[] dataToSend) this(Event eventType, EventHandler[] handlers, byte[] dataToSend)
{ {
setEvent(eventType, handlers);
this.dataToSend = dataToSend; this.dataToSend = dataToSend;
} }
public Signal[] getHandlers()
{
return handlers;
}
public ulong getID() public ulong getID()
{ {
return id; return id;
} }
private ulong id; private ulong id;
private bool isSet; private bool isSet;
@ -315,10 +329,7 @@ public final class TaskManager : Thread
foreach(Task task; currentTasks) foreach(Task task; currentTasks)
{ {
/* Find the matching tristananble queue */ /* Find the matching tristananble queue */
TQueue tQueue = manager.getQueue(task.getID()); TQueue tQueue = manager.getQueue(task.getID());
writeln(tQueue);
/* TODO: Poll queue here */ /* TODO: Poll queue here */
if(tQueue.poll()) if(tQueue.poll())
@ -334,6 +345,9 @@ public final class TaskManager : Thread
/* Add to list of tasks to delete (for-loop list safety) */ /* Add to list of tasks to delete (for-loop list safety) */
tasksToBeRemoved~=task; tasksToBeRemoved~=task;
writeln("disp");
writeln(eventEngine.getSignalsForEvent(task.getEvent()));
} }
} }
@ -370,6 +384,13 @@ public final class TaskManager : Thread
/* Set the task's ID */ /* Set the task's ID */
task.setId(taskQueue.getTag()); task.setId(taskQueue.getTag());
/* Install this task's type's handlers */
/* TODO: Install Like, event types */
foreach(Signal signal; task.getHandlers())
{
eventEngine.addSignalHandler(signal);
}
/* Lock the pending tasks queue */ /* Lock the pending tasks queue */
currentTasksLock.lock(); currentTasksLock.lock();