Mercurial > projects > dreactor
diff dreactor/protocol/Emitter.d @ 12:d6a3cfe7c3de
more stuff
author | rick@Macintosh.local |
---|---|
date | Wed, 27 Aug 2008 00:47:33 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dreactor/protocol/Emitter.d Wed Aug 27 00:47:33 2008 -0400 @@ -0,0 +1,48 @@ +module Emitter + + + + +import tango.core.Thread; + +import dreactor.core.Task; + +alias Message delegate(void) 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; + EmitterCb callback; +} +