X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Examples%2FTCPClientServer%2Fserver.cc;h=40e3139bf2131bc21da9f976b81bc5d2589641dd;hb=14f43d9587103f6a78e51628785f93f1c14f99a0;hp=ef9f7efe8bc7eb3748eccf0d365a2a7737c328bd;hpb=8d2d26f114d3df0a60c5c516fcf40671b1e55558;p=senf.git diff --git a/Examples/TCPClientServer/server.cc b/Examples/TCPClientServer/server.cc index ef9f7ef..40e3139 100644 --- a/Examples/TCPClientServer/server.cc +++ b/Examples/TCPClientServer/server.cc @@ -1,9 +1,9 @@ // $Id$ // // Copyright (C) 2007 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Thorsten Horstmann +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Thorsten Horstmann // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -28,43 +28,44 @@ // Custom includes #include #include -#include "../../Scheduler/Scheduler.hh" -#include "../../Utils/membind.hh" -#include "../../Socket/Protocols/INet/TCPSocketHandle.hh" -#include "../../Socket/Protocols/INet/INetAddressing.hh" - +#include +#include +#include class Server { senf::TCPv4ServerSocketHandle serverSock; + senf::scheduler::FdEvent acceptevent; + senf::scheduler::FdEvent readevent; public: Server(senf::INet4Address const & host, unsigned int port) - : serverSock(senf::INet4SocketAddress(host, port)) {} - - void run() + : serverSock(senf::INet4SocketAddress(host, port)), + acceptevent("Server accept", senf::membind(&Server::accept, this), + serverSock, senf::scheduler::FdEvent::EV_READ), + readevent("Server read", 0) + {} + + void run() { - senf::Scheduler::instance().add( - serverSock, - senf::membind(&Server::accept, this), - senf::Scheduler::EV_READ); - senf::Scheduler::instance().process(); + senf::scheduler::process(); } - + private: - void accept(senf::FileHandle /* ignored */, senf::Scheduler::EventId event) + void accept(int event) { senf::TCPv4ClientSocketHandle clientSock (serverSock.accept()); - senf::Scheduler::instance().add( - clientSock, - senf::membind(&Server::readFromClient, this), - senf::Scheduler::EV_READ); + readevent + .action(boost::bind(&Server::readFromClient, this, clientSock, _1)) + .handle(clientSock) + .events(senf::scheduler::FdEvent::EV_READ) + .enable(); } - - void readFromClient(senf::TCPv4ClientSocketHandle clientSock, senf::Scheduler::EventId event) + + void readFromClient(senf::TCPv4ClientSocketHandle clientSock, int event) { if (!clientSock) { - senf::Scheduler::instance().remove(clientSock); + readevent.disable(); return; } std::string data (clientSock.read());