diff options
Diffstat (limited to 'libs/protoutil/src/ProtoOutputStream.cpp')
-rw-r--r-- | libs/protoutil/src/ProtoOutputStream.cpp | 18 |
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() { |