Mercurial > projects > dreactor
view 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 source
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 { StdinReceive = 42 } Logger log; class ChatTask : Task { private TcpProvider client; bool running; public this(TcpProvider tcpclient) { super(tcpclient); } void run() { Message msg; running = true; auto em = new Emitter(this, { char buf[] = Cin.copyln(true); return Message(cast(void*)buf.ptr, StdinReceive, buf.length); }); while (running) { msg = receive(); switch (msg.type) { case StdinReceive: { char[] inbuf = getString(msg); if (inbuf == "quit") { running = false; } client.send(inbuf); } case TcpProvider.Receive: { Stdout(getString(msg)); } default: Stdout("unknown msg received: {}", msg.type); } } em.stopNow(); } } int main(char[][] args) { log = Log.lookup("dreactor.chatserver"); auto provider = new TcpProvider(new IPv4Address("localhost", 5555)); auto tsk = new ChatTask(provider); return 0; }