diff test/chatclient.d @ 13:8c9b1276f623 default tip

bug fixes
author rick@minifunk
date Sat, 20 Sep 2008 18:33:11 -0400
parents d6a3cfe7c3de
children
line wrap: on
line diff
--- a/test/chatclient.d	Wed Aug 27 00:47:33 2008 -0400
+++ b/test/chatclient.d	Sat Sep 20 18:33:11 2008 -0400
@@ -1,18 +1,26 @@
 
 module chatclient;
 
+import tango.io.Stdout;
+import tango.io.Console;
+import tango.net.Socket;
+import tango.util.log.Log;
+
 import dreactor.core.Vat;
 import dreactor.core.Task;
 import dreactor.protocol.TcpProvider;
+import dreactor.util.Emitter;
 
-enum {EMITTER_CHAT_RECEIVE = 42};
+enum { StdinReceive = 42 }
+
+Logger log;
 
 class ChatTask : Task
 {
 
 private
     TcpProvider client;
-
+    bool running;
 public
     this(TcpProvider tcpclient) 
     {
@@ -22,40 +30,33 @@
     void run()
     {
         Message msg;
-
+        running = true;
         auto em = new Emitter(this, 
                 {
                      char buf[] = Cin.copyln(true);
-                     return new Message(buf, EMITTER_STDIN_RECEIVE, buf.size);
+                     return Message(cast(void*)buf.ptr, StdinReceive, buf.length);
                 });
         
-        while (msg = receive())
+        while (running)
         {
-            switch(msg.type)
+            msg = receive();
+            switch (msg.type)
             {
-                case EMITTER_CHAT_RECEIVE:
-                    char[] inbuf = msg.payload;
+                case StdinReceive:
+                {
+                    char[] inbuf = getString(msg);
                     if (inbuf == "quit")
                     {
-                        em.stopNow();
-                        return;
+                        running = false;
                     }
-                    client.send(msg.payload);
-                    break;
-
-                case TcpProvider.RECEIVE:
-                    Stdout(cast(char[]) msg.payload);
-                    break;
-
-                case TcpProvider.SEND_COMPLETE:
-                    break;
-
-                case TcpProvider.REMOTE_CLOSED:
-                    Stdout("--- Remote host closed connection \n");
-                    break;
-
+                    client.send(inbuf);
+                }
+                case TcpProvider.Receive:
+                {
+                    Stdout(getString(msg));
+                }
                 default:
-                    Stdout("Unknown message received\n");
+                    Stdout("unknown msg received: {}", msg.type);
             }
         }
         em.stopNow();
@@ -63,10 +64,10 @@
 }
 
 
-int main(int argc, char[][] argv)
+int main(char[][] args)
 {
-    auto vat = new Vat;
-    auto client = new TcpProvider(new IPv4Address("localhost", 5555), vat);
-    auto tsk = new ChatTask(client);
-    vat.addTask(task);
+    log = Log.lookup("dreactor.chatserver");
+    auto provider = new TcpProvider(new IPv4Address("localhost", 5555));
+    auto tsk = new ChatTask(provider);
+    return 0;
 }