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