Mercurial > projects > dreactor
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; }