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);
}