mirror of https://github.com/deavmi/eventy.git
Re-worked event system
This commit is contained in:
parent
f1a13623a6
commit
f649a63a77
|
@ -1,7 +1,7 @@
|
||||||
module eventy.engine;
|
module eventy.engine;
|
||||||
|
|
||||||
import eventy.queues : Queue;
|
import eventy.queues : Queue;
|
||||||
import eventy.signal : Signal, EventHandler;
|
import eventy.signal : Signal;
|
||||||
import eventy.event : Event;
|
import eventy.event : Event;
|
||||||
|
|
||||||
import std.container.dlist;
|
import std.container.dlist;
|
||||||
|
@ -26,10 +26,38 @@ unittest
|
||||||
engine.start();
|
engine.start();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Let the event engine know what typeIDs are
|
||||||
|
* allowed to be queued
|
||||||
|
*/
|
||||||
engine.addQueue(1);
|
engine.addQueue(1);
|
||||||
engine.addQueue(2);
|
engine.addQueue(2);
|
||||||
|
|
||||||
Signal j = new Signal([1,2], &runner);
|
|
||||||
|
/**
|
||||||
|
* Create a new Signal Handler that will handles
|
||||||
|
* event types `1` and `2` with the given `handler()`
|
||||||
|
* function
|
||||||
|
*/
|
||||||
|
class SignalHandler1 : Signal
|
||||||
|
{
|
||||||
|
this()
|
||||||
|
{
|
||||||
|
super([1,2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void handler(Event e)
|
||||||
|
{
|
||||||
|
import std.stdio;
|
||||||
|
writeln("Running event", e.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tell the event engine that I want to register
|
||||||
|
* the following handler for its queues `1` and `2`
|
||||||
|
*/
|
||||||
|
Signal j = new SignalHandler1();
|
||||||
engine.addSignalHandler(j);
|
engine.addSignalHandler(j);
|
||||||
|
|
||||||
Event eTest = new Event(1);
|
Event eTest = new Event(1);
|
||||||
|
@ -200,8 +228,8 @@ public final class Engine : Thread
|
||||||
|
|
||||||
public void worker()
|
public void worker()
|
||||||
{
|
{
|
||||||
EventHandler handler = signal.getHandler();
|
signal.handler(e);
|
||||||
handler(e);
|
//handler(e);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -9,20 +9,19 @@ import eventy.event : Event;
|
||||||
* which means that it contains an associated function to be run
|
* which means that it contains an associated function to be run
|
||||||
* on handling of a given Event
|
* on handling of a given Event
|
||||||
*/
|
*/
|
||||||
alias EventHandler = void function(Event);
|
//alias EventHandler = void function(Event);
|
||||||
|
|
||||||
public class Signal
|
public abstract class Signal
|
||||||
{
|
{
|
||||||
/* TypeIDs this signal handler associates with */
|
/* TypeIDs this signal handler associates with */
|
||||||
private ulong[] typeIDs;
|
private ulong[] typeIDs;
|
||||||
|
|
||||||
/* Signal handler */
|
/* Signal handler */
|
||||||
private EventHandler handler;
|
//private EventHandler handler;
|
||||||
|
|
||||||
this(ulong[] typeIDs, EventHandler handler)
|
this(ulong[] typeIDs)
|
||||||
{
|
{
|
||||||
this.typeIDs = typeIDs;
|
this.typeIDs = typeIDs;
|
||||||
this.handler = handler;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,8 +52,5 @@ public class Signal
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public EventHandler getHandler()
|
public abstract void handler(Event);
|
||||||
{
|
}
|
||||||
return handler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue