annotate test/chatserver.d @ 12:d6a3cfe7c3de

more stuff
author rick@Macintosh.local
date Wed, 27 Aug 2008 00:47:33 -0400
parents e75a2e506b1d
children 8c9b1276f623
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
1
7
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
2 module chatserver;
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
3
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
4 import dreactor.core.Vat;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
5 import dreactor.core.Task;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
6 import dreactor.protocol.TcpProvider;
7
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
7
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
8
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
9 class ChatConnectionTask : Task
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
10 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
11 public
7
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
12
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
13 void run()
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
14 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
15 Message msg;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
16 while (msg = receive())
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
17 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
18 switch(msg.type)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
19 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
20 case TCP_PROVIDER_RECEIVE:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
21 //Stdout(cast(char[]) msg.payload);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
22 break;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
23 case TCP_PROVIDER_SEND_COMPLETE:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
24 break;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
25 case TCP_PROVIDER_REMOTE_CLOSED:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
26 Stdout("--- Remote host closed connection \n");
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
27 break;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
28 default:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
29 Stdout("Unknown message received\n");
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
30 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
31 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
32 em.stopNow();
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
33 }
10
e75a2e506b1d housekeeping
rick@minifunk
parents: 9
diff changeset
34
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
35 void send(char[] buf)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
36 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
37 tcp.send(buf);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
38 }
7
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
39
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
40 static CircularList!(ChatConnectionTask!(
7
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
41 }
2c6ab06a8829 fixed up for chatserver
rick@minifunk
parents:
diff changeset
42
12
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
43
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
44 int main(int argc, char[][] argv)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
45 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
46 auto vat = new Vat;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
47
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
48 void listentask(Message msg)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
49 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
50 switch(msg.type)
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
51 {
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
52 case TCP_PROVIDER_CONNECT:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
53 AsyncSocketConduit cond = cast(AsyncSocketConduit) msg.payload;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
54 auto tsk = ChatConnectionTask(new TcpProvider(cond));
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
55 vat.addTask(tsk);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
56 break;
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
57 default:
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
58 Stdout("Unknown message received\n");
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
59 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
60 }
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
61
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
62
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
63 auto provider = new TcpProvider(new IPv4Address("localhost", 5555), vat);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
64 auto srvtsk = new Task(&listentask, provider);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
65 vat.addTask(task, client);
d6a3cfe7c3de more stuff
rick@Macintosh.local
parents: 10
diff changeset
66 }