Chromium Code Reviews| Index: dbus/message.cc | 
| diff --git a/dbus/message.cc b/dbus/message.cc | 
| index 2750cb187a08329d1e196c6d54817d41180ee54b..a6f8178442366c690e1b5332adea9bca3eda9f25 100644 | 
| --- a/dbus/message.cc | 
| +++ b/dbus/message.cc | 
| @@ -4,6 +4,8 @@ | 
| #include "dbus/message.h" | 
| +#include <string> | 
| + | 
| #include "base/basictypes.h" | 
| #include "base/format_macros.h" | 
| #include "base/logging.h" | 
| @@ -592,6 +594,18 @@ void MessageWriter::AppendArrayOfObjectPaths( | 
| CloseContainer(&array_writer); | 
| } | 
| +bool MessageWriter::AppendProtocolBuffer( | 
| + const google::protobuf::MessageLite& protobuf) { | 
| + std::string serialized_proto; | 
| + if (!protobuf.SerializeToString(&serialized_proto)) { | 
| + LOG(ERROR) << "Unable to serialize supplied protocol buffer"; | 
| + return false; | 
| + } | 
| + AppendArrayOfBytes(reinterpret_cast<const uint8*>(serialized_proto.data()), | 
| + serialized_proto.size()); | 
| + return true; | 
| +} | 
| + | 
| void MessageWriter::AppendVariantOfByte(uint8 value) { | 
| AppendVariantOfBasic(DBUS_TYPE_BYTE, &value); | 
| } | 
| @@ -799,6 +813,21 @@ bool MessageReader::PopArrayOfObjectPaths( | 
| return true; | 
| } | 
| +bool MessageReader::PopProtocolBuffer(google::protobuf::MessageLite* protobuf) { | 
| + DCHECK(protobuf != NULL); | 
| + char* serialized_buf; | 
| + size_t buf_size; | 
| 
 
satorux1
2012/01/31 21:42:31
Please initialize them.
char* serialized_buf = NU
 
rharrison
2012/02/01 19:03:20
Done.
 
 | 
| + if (!PopArrayOfBytes(reinterpret_cast<uint8**>(&serialized_buf), &buf_size)) { | 
| + LOG(ERROR) << "Error reading array of bytes"; | 
| + return false; | 
| + } | 
| + if (!protobuf->ParseFromArray(serialized_buf, buf_size)) { | 
| + LOG(ERROR) << "Failed to parse protocol buffer from array"; | 
| + return false; | 
| + } | 
| + return true; | 
| +} | 
| + | 
| bool MessageReader::PopVariantOfByte(uint8* value) { | 
| return PopVariantOfBasic(DBUS_TYPE_BYTE, value); | 
| } |