annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13
8c9b1276f623 bug fixes
rick@minifunk
parents: 12
diff changeset
1 module dreactor.util.Emitter;
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
2
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
3
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
4
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
5
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
6 import tango.core.Thread;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
7
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
8 import dreactor.core.Task;
13
8c9b1276f623 bug fixes
rick@minifunk
parents: 12
diff changeset
9 import dreactor.protocol.IProvider;
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
10
13
8c9b1276f623 bug fixes
rick@minifunk
parents: 12
diff changeset
11 alias Message delegate() EmitterDg;
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
13 class Emitter
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
14 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
15 public
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
16 this(Task t, EmitterDg cb)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
17 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
18 task = t;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
19 callback = cb;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
20 thread = new Thread(&run);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
21 thread.start();
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
22 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
23
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
24 void stop()
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
25 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
26 running = false;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
27 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
28
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
29 void stopNow()
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
30 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
31 thread.isDaemon(true);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
32 running = false;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
33 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
34 private
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
35
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
36 void run()
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
37 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
38 while(running)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
39 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
40 Message msg = callback();
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
41 task.appendIVMessage(msg);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
42 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
43 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
44 Task task;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
45 Thread thread;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
46 bool running;
13
8c9b1276f623 bug fixes
rick@minifunk
parents: 12
diff changeset
47 EmitterDg callback;
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
48 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents:
diff changeset
49