annotate dreactor/protocol/Emitter.d @ 12:d6a3cfe7c3de

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