- // Drops <num_bytes> bytes from the head of <pending_data>,
- // and outputs a warning.
- void drop_pending_data(size_t num_bytes);
-
- enum State {
- NOT_CONNECTED,
- SENDING_REQUEST,
- RECEIVING_HEADER,
- RECEIVING_DATA,
- CLOSING_SOCKET, // Due to error.
- };
- State state;
-
- std::string stream_id;
-
- // The URL and its parsed components.
- std::string url;
- std::string host, port, path;
-
- // The HTTP request, with headers and all.
- // Only relevant for SENDING_REQUEST.
- std::string request;
-
- // How many bytes we've sent of the request so far.
- // Only relevant for SENDING_REQUEST.
- size_t request_bytes_sent;
-
- // The HTTP response we've received so far. Only relevant for RECEIVING_HEADER.
- std::string response;
-
- // The HTTP respones headers we want to give clients for this input.
- std::string http_header;
-
- // Data we have received but not fully processed yet.
- std::vector<char> pending_data;
-
- // If <pending_data> starts with a Metacube header,
- // this is true.
- bool has_metacube_header;