5 // Definition of non-inline non-template functions
7 // TODO: success logging
8 // TODO: limit max number of clients
10 #include "SimpleHTTPServer.hh"
11 //#include "SimpleHTTPServer.ih"
14 #include "Utils/membind.hh"
16 //#include "SimpleHTTPServer.mpp"
18 ///////////////////////////////cc.p////////////////////////////////////////
20 g0dil::mediaserv::SimpleHTTPServer * g0dil::mediaserv::SimpleHTTPServer::instance_ = 0;
22 prefix_ g0dil::mediaserv::SimpleHTTPServer::SimpleHTTPServer(ServerHandle socket,
24 : socket_(socket), logger_(logger)
27 senf::Scheduler::instance()
29 senf::membind(&SimpleHTTPServer::newConnection,this),
30 senf::Scheduler::EV_READ);
33 prefix_ g0dil::mediaserv::SimpleHTTPServer::~SimpleHTTPServer()
39 g0dil::mediaserv::SimpleHTTPServer::newConnection(ServerHandle handle,
40 senf::Scheduler::EventId event)
42 if (event != senf::Scheduler::EV_READ) {
43 logger_.failedRequest("unexpected event on server socket .. shuting down ..");
44 senf::Scheduler::instance().terminate();
48 ServerHandle::ClientSocketHandle client (socket_.accept());
49 if (! client.valid()) {
50 logger_.failedRequest("accept() would block !?");
53 connections_.insert(HTTPConnection::ptr(new HTTPConnection(client,*this,logger_)));
55 catch (std::exception & ex) {
56 logger_.failedRequest(ex.what());
60 prefix_ void g0dil::mediaserv::SimpleHTTPServer::done(HTTPConnection::ptr connection)
62 connections_.erase(connection);
65 ///////////////////////////////cc.e////////////////////////////////////////
67 //#include "SimpleHTTPServer.mpp"