X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=server.h;h=2cb078e3fc418bdd6b47665bba31635b3af6e4e2;hp=99009600a46f0401a325ced52e04f542c57b602f;hb=b59fa7ce2d47f135ea027548cc89f937a5fa875b;hpb=6d062eab70fd6528219545846e6c19c1cad35a3d;ds=sidebyside diff --git a/server.h b/server.h index 9900960..2cb078e 100644 --- a/server.h +++ b/server.h @@ -3,10 +3,11 @@ #include #include +#include #include #include +#include -#define NUM_SERVERS 4 #define BACKLOG_SIZE 1048576 #define EPOLL_MAX_EVENTS 8192 #define EPOLL_TIMEOUT_MS 20 @@ -77,6 +78,7 @@ private: class Server { public: Server(); + ~Server(); // Start a new thread that handles clients. void run(); @@ -87,7 +89,11 @@ public: CubemapStateProto serialize() const; void add_client(int sock); + void add_client_from_serialized(const ClientProto &client); + void add_stream(const std::string &stream_id); + void add_stream_from_serialized(const StreamProto &stream); + void set_header(const std::string &stream_id, const std::string &header); void add_data(const std::string &stream_id, const char *data, size_t bytes); @@ -126,10 +132,13 @@ private: // Close a given client socket, and clean up after it. void close_client(Client *client); - // Parse the HTTP request, construct the header, and set the client into - // the SENDING_HEADER state. + // Parse the HTTP request. void parse_request(Client *client); + // Construct the HTTP header, and set the client into + // the SENDING_HEADER state. + void construct_header(Client *client); + // Put client to sleep, since there is no more data for it; we will on // longer listen on POLLOUT until we get more data. Also, it will be put // in the list of clients to wake up when we do.