// Smersh // // Douglas Thrift // // $Id$ #include "Daemon.hpp" void Daemon::serve(int port, bool fork, Daemon* self) { api::TcpSocket server; server.Create(); server.SetAddress(api::InternetAddress(api::InternetAddress::Any, port)); if (fork) { switch (::fork()) { case -1: cerr << program << ": fork()\n"; exit(1); case 0: break; default: return; } } server.Listen(50); while (true) { api::TcpSocket* client(new api::TcpSocket()); server.Accept(*client); api::Thread thread(etl::BindAll(&Daemon::handle, self, client)); } } int Daemon::handle(api::TcpSocket* client) { ios::InputOutputStreamBufAdapter adapter(*client); iostream socket(&adapter); // delete client; }