Add support for streaming I/O to webserver request data

Rather than reading request body data in memory and sending it to
remote request handlers over D-Bus, send the data to the handler
over a pipe as the data are coming in.

BUG: 24166746
Change-Id: I53499f9f8ed00a9d02740556616ef9b7ea7cc493
diff --git a/libwebserv/request.cc b/libwebserv/request.cc
index 7b518a4..93b80c4 100644
--- a/libwebserv/request.cc
+++ b/libwebserv/request.cc
@@ -16,6 +16,7 @@
 
 #include <base/callback.h>
 #include <chromeos/http/http_utils.h>
+#include <chromeos/streams/file_stream.h>
 
 #include <libwebserv/protocol_handler.h>
 
@@ -53,8 +54,9 @@
 Request::~Request() {
 }
 
-const std::vector<uint8_t>& Request::GetData() const {
-  return raw_data_;
+chromeos::StreamPtr Request::GetDataStream() {
+  return chromeos::FileStream::FromFileDescriptor(
+      raw_data_fd_.GetPlatformFile(), false, nullptr);
 }
 
 std::vector<PairOfStrings> Request::GetFormData() const {