summaryrefslogtreecommitdiff
path: root/libs/protoutil/src/ProtoOutputStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/protoutil/src/ProtoOutputStream.cpp')
-rw-r--r--libs/protoutil/src/ProtoOutputStream.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/libs/protoutil/src/ProtoOutputStream.cpp b/libs/protoutil/src/ProtoOutputStream.cpp
index 98a68c6482b5..6cfa357b580b 100644
--- a/libs/protoutil/src/ProtoOutputStream.cpp
+++ b/libs/protoutil/src/ProtoOutputStream.cpp
@@ -454,7 +454,6 @@ ProtoOutputStream::serializeToString(std::string* out)
if (out == nullptr) return false;
if (!compact()) return false;
-
sp<ProtoReader> reader = mBuffer->read();
out->reserve(reader->size());
while (reader->hasNext()) {
@@ -465,6 +464,23 @@ ProtoOutputStream::serializeToString(std::string* out)
return true;
}
+bool
+ProtoOutputStream::serializeToVector(std::vector<uint8_t>* out)
+{
+ if (out == nullptr) return false;
+ if (!compact()) return false;
+
+ sp<ProtoReader> reader = mBuffer->read();
+ out->reserve(reader->size());
+ while (reader->hasNext()) {
+ const uint8_t* buf = reader->readBuffer();
+ size_t size = reader->currentToRead();
+ out->insert(out->end(), buf, buf + size);
+ reader->move(size);
+ }
+ return true;
+}
+
sp<ProtoReader>
ProtoOutputStream::data()
{