--- Smersh/Daemon.cpp 2004/06/18 05:12:33 164 +++ Smersh/Daemon.cpp 2004/06/22 03:16:43 174 @@ -6,12 +6,46 @@ #include "Daemon.hpp" -Daemon::Daemon() +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)); + } } -Daemon::~Daemon() +int Daemon::handle(api::TcpSocket* client) { + ios::InputOutputStreamBufAdapter adapter(*client); + iostream socket(&adapter); + // + + delete client; }