Compare commits

...

3 Commits

3 changed files with 27 additions and 16 deletions

View File

@ -24,7 +24,9 @@ public struct EngineSettings
} }
/** /**
* Hold off mode
* *
* Method to use for "sleeping" the event loop
*/ */
public enum HoldOffMode public enum HoldOffMode
{ {

View File

@ -165,6 +165,7 @@ public final class Engine : Thread
this(EngineSettings settings) this(EngineSettings settings)
{ {
super(&run); super(&run);
queueLock = new Mutex(); queueLock = new Mutex();
handlerLock = new Mutex(); handlerLock = new Mutex();
threadStoreLock = new Mutex(); threadStoreLock = new Mutex();
@ -322,14 +323,16 @@ public final class Engine : Thread
} }
/** /**
* Dispatch(Signal[] set, Event e)
*
* Creates a new thread per signal and dispatches the event to them * Creates a new thread per signal and dispatches the event to them
* *
* TODO: Add ability to dispatch on this thread * Params:
* signalSet = The signal handlers to use for dispatching
* e = the Event to be dispatched to each handler
*/ */
private void dispatch(Signal[] signalSet, Event e) private void dispatch(Signal[] signalSet, Event e)
{ {
/* TODO: Add ability to dispatch on this thread */
foreach (Signal signal; signalSet) foreach (Signal signal; signalSet)
{ {
/* Create a new Thread */ /* Create a new Thread */
@ -359,14 +362,19 @@ public final class Engine : Thread
} }
/** /**
* Store the thread * Adds a thread to the thread store
* *
* Params:
* t = the thread to add
*/
private void storeThread(DispatchWrapper t)
{
/**
* TODO: This can only be implemented if we use * TODO: This can only be implemented if we use
* wrapper threads that exit, and we can signal * wrapper threads that exit, and we can signal
* removal from thread store then * removal from thread store then
*/ */
private void storeThread(DispatchWrapper t)
{
/* Lock the thread store from editing */ /* Lock the thread store from editing */
threadStoreLock.lock(); threadStoreLock.lock();

View File

@ -5,3 +5,4 @@ public import eventy.exceptions;
public import eventy.engine; public import eventy.engine;
public import eventy.queues; public import eventy.queues;
public import eventy.signal; public import eventy.signal;
public import eventy.config;