// 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;
// 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);