]> git.sesse.net Git - cubemap/blobdiff - server.h
Add support for deduplicating headers/short responses.
[cubemap] / server.h
index 68e72c4d543165e938a3e63810395727629c85ae..2fe4f15184a62699c6bcb8c89606ffa95f9559e8 100644 (file)
--- a/server.h
+++ b/server.h
@@ -57,8 +57,8 @@ public:
        // These should not be called while running, since that would violate
        // threading assumptions (ie., that epoll is only called from one thread
        // at the same time).
-       CubemapStateProto serialize();
-       void add_client_from_serialized(const ClientProto &client);
+       CubemapStateProto serialize(std::unordered_map<const std::string *, size_t> *short_response_pool);
+       void add_client_from_serialized(const ClientProto &client, const std::vector<std::shared_ptr<const std::string>> &short_responses);
        int add_stream(const std::string &url, size_t bytes_received, size_t prebuffering_bytes, Stream::Encoding encoding, Stream::Encoding src_encoding);
        int add_stream_from_serialized(const StreamProto &stream, int data_fd);
        int lookup_stream_by_url(const std::string &url) const;
@@ -162,6 +162,11 @@ private:
        // Listen for a different set of epoll events.
        void change_epoll_events(Client *client, uint32_t events);
 
+       // If we're supposed to listen for more requests (persistent HTTP connections),
+       // puts the client back into READING_REQUEST, changes its epoll flags and returns
+       // true.
+       bool more_requests(Client *client);
+
        // Parse the HTTP request. Returns a HTTP status code (200/204/400/404).
        int parse_request(Client *client);