Mercurial > projects > dreactor
diff dreactor/util/Emitter.d @ 13:8c9b1276f623 default tip
bug fixes
author | rick@minifunk |
---|---|
date | Sat, 20 Sep 2008 18:33:11 -0400 |
parents | dreactor/protocol/Emitter.d@d6a3cfe7c3de |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dreactor/util/Emitter.d Sat Sep 20 18:33:11 2008 -0400 @@ -0,0 +1,49 @@ +module dreactor.util.Emitter; + + + + +import tango.core.Thread; + +import dreactor.core.Task; +import dreactor.protocol.IProvider; + +alias Message delegate() EmitterDg; + +class Emitter +{ +public + this(Task t, EmitterDg cb) + { + task = t; + callback = cb; + thread = new Thread(&run); + thread.start(); + } + + void stop() + { + running = false; + } + + void stopNow() + { + thread.isDaemon(true); + running = false; + } +private + + void run() + { + while(running) + { + Message msg = callback(); + task.appendIVMessage(msg); + } + } + Task task; + Thread thread; + bool running; + EmitterDg callback; +} +