diff options
Diffstat (limited to 'libs/protoutil/src/ProtoOutputStream.cpp')
-rw-r--r-- | libs/protoutil/src/ProtoOutputStream.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libs/protoutil/src/ProtoOutputStream.cpp b/libs/protoutil/src/ProtoOutputStream.cpp index 9dadf1c20510..b91e3db0e39c 100644 --- a/libs/protoutil/src/ProtoOutputStream.cpp +++ b/libs/protoutil/src/ProtoOutputStream.cpp @@ -234,6 +234,10 @@ ProtoOutputStream::write(uint64_t fieldId, const char* val, size_t size) case TYPE_BYTES: writeUtf8StringImpl(id, val, size); return true; + case TYPE_MESSAGE: + // can directly write valid format of message bytes into ProtoOutputStream without calling start/end + writeMessageBytesImpl(id, val, size); + return true; default: ALOGW("Field type %d is not supported when writing char[] val.", (int)((fieldId & FIELD_TYPE_MASK) >> FIELD_TYPE_SHIFT)); @@ -678,6 +682,16 @@ ProtoOutputStream::writeUtf8StringImpl(uint32_t id, const char* val, size_t size } } +inline void +ProtoOutputStream::writeMessageBytesImpl(uint32_t id, const char* val, size_t size) +{ + if (val == NULL) return; + writeLengthDelimitedHeader(id, size); + for (size_t i=0; i<size; i++) { + mBuffer.writeRawByte(val[i]); + } +} + } // util } // android |