Index: remoting/protocol/message_serialization.h |
diff --git a/remoting/protocol/message_serialization.h b/remoting/protocol/message_serialization.h |
index c550fbeba8c75efeb52056fd6ce77a7fbd5749ee..2a035ff5101e57870d0e448813ef766b136b0029 100644 |
--- a/remoting/protocol/message_serialization.h |
+++ b/remoting/protocol/message_serialization.h |
@@ -9,6 +9,7 @@ |
#define REMOTING_PROTOCOL_MESSAGE_SERIALIZATION_H_ |
#include "net/base/io_buffer.h" |
+#include "remoting/base/compound_buffer.h" |
#if defined(USE_SYSTEM_PROTOBUF) |
#include <google/protobuf/message_lite.h> |
@@ -19,6 +20,18 @@ |
namespace remoting { |
namespace protocol { |
+template <class T> |
+scoped_ptr<T> ParseMessage(CompoundBuffer* buffer) { |
+ scoped_ptr<T> message(new T()); |
+ CompoundBufferInputStream stream(buffer); |
+ if (!message->ParseFromZeroCopyStream(&stream)) { |
+ LOG(WARNING) << "Received message that is not a valid protocol buffer."; |
+ return nullptr; |
+ } |
+ DCHECK_EQ(stream.position(), buffer->total_bytes()); |
+ return message; |
+} |
+ |
// Serialize the Protocol Buffer message and provide sufficient framing for |
// sending it over the wire. |
// This will provide sufficient prefix and suffix for the receiver side to |