X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fhttp%2Fserver.h;h=4835de039c87b46781499a52e54cb901782b5188;hb=ee01d294f9078fbf17dc6a0a645ad3a342c49b1a;hp=41894db99d6141dc89c901c354d06b4f25ca25b3;hpb=debe1004676d5431e571d9c4361072661dcc88c4;p=libs%2Fnet.git diff --git a/source/http/server.h b/source/http/server.h index 41894db..4835de0 100644 --- a/source/http/server.h +++ b/source/http/server.h @@ -4,6 +4,7 @@ #include #include #include +#include namespace Msp { namespace Http { @@ -23,6 +24,7 @@ private: std::string in_buf; Request *request; Response *response; + bool keepalive; bool async; bool stale; @@ -32,17 +34,25 @@ private: Net::StreamServerSocket sock; std::list clients; + std::map responses; IO::EventDispatcher *event_disp; public: + Server(); Server(unsigned); + ~Server(); + + void listen(unsigned); unsigned get_port() const; void use_event_dispatcher(IO::EventDispatcher *); void delay_response(Response &); void submit_response(Response &); + void cancel_keepalive(Response &); + void close_connections(const Time::TimeDelta &); private: void data_available(); void client_data_available(Client &); + void send_response(Client &, Response &); void client_end_of_file(Client &); Client &get_client_by_response(Response &); };