Mercurial > projects > dreactor
view test/chatserver.d @ 12:d6a3cfe7c3de
more stuff
author | rick@Macintosh.local |
---|---|
date | Wed, 27 Aug 2008 00:47:33 -0400 |
parents | e75a2e506b1d |
children | 8c9b1276f623 |
line wrap: on
line source
module chatserver; import dreactor.core.Vat; import dreactor.core.Task; import dreactor.protocol.TcpProvider; class ChatConnectionTask : Task { public void run() { Message msg; while (msg = receive()) { switch(msg.type) { case TCP_PROVIDER_RECEIVE: //Stdout(cast(char[]) msg.payload); break; case TCP_PROVIDER_SEND_COMPLETE: break; case TCP_PROVIDER_REMOTE_CLOSED: Stdout("--- Remote host closed connection \n"); break; default: Stdout("Unknown message received\n"); } } em.stopNow(); } void send(char[] buf) { tcp.send(buf); } static CircularList!(ChatConnectionTask!( } int main(int argc, char[][] argv) { auto vat = new Vat; void listentask(Message msg) { switch(msg.type) { case TCP_PROVIDER_CONNECT: AsyncSocketConduit cond = cast(AsyncSocketConduit) msg.payload; auto tsk = ChatConnectionTask(new TcpProvider(cond)); vat.addTask(tsk); break; default: Stdout("Unknown message received\n"); } } auto provider = new TcpProvider(new IPv4Address("localhost", 5555), vat); auto srvtsk = new Task(&listentask, provider); vat.addTask(task, client); }