1 #ifndef MSP_HTTP_SERVER_H_
2 #define MSP_HTTP_SERVER_H_
4 #include <msp/io/eventdispatcher.h>
5 #include <msp/net/mspnet_api.h>
6 #include <msp/net/streamserversocket.h>
7 #include <msp/time/timedelta.h>
15 class MSPNET_API Server
18 sigc::signal<void, const Request &, Response &> signal_request;
23 std::unique_ptr<Net::StreamSocket> sock;
25 std::unique_ptr<Request> request;
26 std::unique_ptr<Response> response;
27 bool keepalive = false;
31 Client(std::unique_ptr<Net::StreamSocket>);
34 Net::StreamServerSocket sock;
35 std::list<Client> clients;
36 std::map<Response *, Client *> responses;
37 IO::EventDispatcher *event_disp = nullptr;
44 void listen(unsigned);
45 unsigned get_port() const;
46 void use_event_dispatcher(IO::EventDispatcher *);
47 void delay_response(Response &);
48 void submit_response(Response &);
49 void cancel_keepalive(Response &);
50 void close_connections(const Time::TimeDelta &);
52 void data_available();
53 void client_data_available(Client &);
54 void send_response(Client &, Response &);
55 void client_end_of_file(Client &);
56 Client &get_client_by_response(Response &);