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;
+}
+