12
|
1 module Emitter
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6 import tango.core.Thread;
|
|
7
|
|
8 import dreactor.core.Task;
|
|
9
|
|
10 alias Message delegate(void) EmitterDg;
|
|
11
|
|
12 class Emitter
|
|
13 {
|
|
14 public
|
|
15 this(Task t, EmitterDg cb)
|
|
16 {
|
|
17 task = t;
|
|
18 callback = cb;
|
|
19 thread = new Thread(&run);
|
|
20 thread.start();
|
|
21 }
|
|
22
|
|
23 void stop()
|
|
24 {
|
|
25 running = false;
|
|
26 }
|
|
27
|
|
28 void stopNow()
|
|
29 {
|
|
30 thread.isDaemon(true);
|
|
31 running = false;
|
|
32 }
|
|
33 private
|
|
34
|
|
35 void run()
|
|
36 {
|
|
37 while(running)
|
|
38 {
|
|
39 Message msg = callback();
|
|
40 task.appendIVMessage(msg);
|
|
41 }
|
|
42 }
|
|
43 Task task;
|
|
44 Thread thread;
|
|
45 bool running;
|
|
46 EmitterCb callback;
|
|
47 }
|
|
48
|