diff options
author | 2015-04-30 16:07:06 -0700 | |
---|---|---|
committer | 2015-04-30 16:07:06 -0700 | |
commit | 3921c56bee2adff62cb0f9519114d2aa22a67410 (patch) | |
tree | 7fdd42a532ca2040b15441d92bcd0b66eccf0397 /src/cpp/proto | |
parent | 6d42a73bb984e19eb1bf84e2a952eec861cea464 (diff) |
Expose max message size at the server side
Diffstat (limited to 'src/cpp/proto')
-rw-r--r-- | src/cpp/proto/proto_utils.cc | 9 | ||||
-rw-r--r-- | src/cpp/proto/proto_utils.h | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/cpp/proto/proto_utils.cc b/src/cpp/proto/proto_utils.cc index b8de2ea173..8ab536aab8 100644 --- a/src/cpp/proto/proto_utils.cc +++ b/src/cpp/proto/proto_utils.cc @@ -158,9 +158,14 @@ bool SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** bp) { return msg.SerializeToZeroCopyStream(&writer); } -bool DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg) { +bool DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, + int max_message_size) { GrpcBufferReader reader(buffer); - return msg->ParseFromZeroCopyStream(&reader); + ::grpc::protobuf::io::CodedInputStream decoder(&reader); + if (max_message_size > 0) { + decoder.SetTotalBytesLimit(max_message_size, max_message_size); + } + return msg->ParseFromCodedStream(&decoder) && decoder.ConsumedEntireMessage(); } } // namespace grpc diff --git a/src/cpp/proto/proto_utils.h b/src/cpp/proto/proto_utils.h index bc60dc9929..67a775b3ca 100644 --- a/src/cpp/proto/proto_utils.h +++ b/src/cpp/proto/proto_utils.h @@ -47,7 +47,8 @@ bool SerializeProto(const grpc::protobuf::Message& msg, grpc_byte_buffer** buffer); // The caller keeps ownership of buffer and msg. -bool DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg); +bool DeserializeProto(grpc_byte_buffer* buffer, grpc::protobuf::Message* msg, + int max_message_size); } // namespace grpc |