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 {