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