comparison test/chatserver.d @ 12:d6a3cfe7c3de

more stuff
author rick@Macintosh.local
date Wed, 27 Aug 2008 00:47:33 -0400
parents e75a2e506b1d
children 8c9b1276f623
comparison
equal deleted inserted replaced
11:5836613d16ac 12:d6a3cfe7c3de
1
1 module chatserver; 2 module chatserver;
2 3
3 import tango.net.Socket; 4 import dreactor.core.Vat;
4 import tango.core.Thread; 5 import dreactor.core.Task;
5 import tango.io.Stdout; 6 import dreactor.protocol.TcpProvider;
6 import tango.util.log.Log;
7 import dreactor.core.Vat;
8 import dreactor.core.Dispatcher;
9 7
10 import dreactor.protocol.RawTcp;
11 import dreactor.transport.AsyncSocketConduit;
12 8
13 int main() 9 class ChatConnectionTask : Task
14 { 10 {
15 Vat l_vat = new Vat(); 11 public
16 Logger log = Log.lookup("dreactor.chatserver");
17 Log.root.level(log.Level.Info, true);
18 RawTCPListener listener = new RawTCPListener(l_vat, new IPv4Address(5555));
19 12
20 listener.setDataHandler( (char[] inbuf, Dispatcher d) { 13 void run()
21 14 {
22 listener.broadcast(inbuf, [d]); 15 Message msg;
16 while (msg = receive())
17 {
18 switch(msg.type)
19 {
20 case TCP_PROVIDER_RECEIVE:
21 //Stdout(cast(char[]) msg.payload);
22 break;
23 case TCP_PROVIDER_SEND_COMPLETE:
24 break;
25 case TCP_PROVIDER_REMOTE_CLOSED:
26 Stdout("--- Remote host closed connection \n");
27 break;
28 default:
29 Stdout("Unknown message received\n");
30 }
31 }
32 em.stopNow();
33 }
23 34
24 }); 35 void send(char[] buf)
25 l_vat.run(); 36 {
37 tcp.send(buf);
38 }
26 39
27 return 0; 40 static CircularList!(ChatConnectionTask!(
28 } 41 }
29 42
43
44 int main(int argc, char[][] argv)
45 {
46 auto vat = new Vat;
47
48 void listentask(Message msg)
49 {
50 switch(msg.type)
51 {
52 case TCP_PROVIDER_CONNECT:
53 AsyncSocketConduit cond = cast(AsyncSocketConduit) msg.payload;
54 auto tsk = ChatConnectionTask(new TcpProvider(cond));
55 vat.addTask(tsk);
56 break;
57 default:
58 Stdout("Unknown message received\n");
59 }
60 }
61
62
63 auto provider = new TcpProvider(new IPv4Address("localhost", 5555), vat);
64 auto srvtsk = new Task(&listentask, provider);
65 vat.addTask(task, client);
66 }