34 #ifndef GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
35 #define GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
37 #include <type_traits>
53 class GrpcBufferWriterPeer;
61 : block_size_(block_size), byte_count_(0), have_backup_(false) {
63 slice_buffer_ = &(*bp)->data.raw.slice_buffer;
72 bool Next(
void** data,
int* size)
override {
74 slice_ = backup_slice_;
89 if (count == block_size_) {
90 backup_slice_ = slice_;
100 have_backup_ = backup_slice_.
refcount != NULL;
101 byte_count_ -= count;
108 const int block_size_;
120 : byte_count_(0), backup_count_(0), status_() {
124 "Couldn't initialize byte buffer reader");
131 bool Next(
const void** data,
int* size)
override {
135 if (backup_count_ > 0) {
139 *size = (int)backup_count_;
157 void BackUp(
int count)
override { backup_count_ = count; }
159 bool Skip(
int count)
override {
162 while (
Next(&data, &size)) {
175 return byte_count_ - backup_count_;
180 int64_t backup_count_;
189 grpc::protobuf::Message, T>::value>::type> {
194 int byte_size = msg.ByteSize();
206 return msg.SerializeToZeroCopyStream(&writer)
214 if (buffer ==
nullptr) {
224 decoder.SetTotalBytesLimit(INT_MAX, INT_MAX);
225 if (!msg->ParseFromCodedStream(&decoder)) {
228 if (!decoder.ConsumedEntireMessage()) {
239 #endif // GRPCXX_IMPL_CODEGEN_PROTO_UTILS_H
virtual void grpc_slice_buffer_pop(grpc_slice_buffer *sb)=0
virtual grpc_slice grpc_slice_malloc(size_t length)=0
Definition: proto_utils.h:116
~GrpcBufferWriter() override
Definition: proto_utils.h:66
virtual void grpc_byte_buffer_reader_destroy(grpc_byte_buffer_reader *reader)=0
grpc::protobuf::int64 ByteCount() const override
Definition: proto_utils.h:174
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:122
const int kGrpcBufferWriterMaxBufferLength
Definition: proto_utils.h:55
~GrpcBufferReader() override
Definition: proto_utils.h:127
bool Next(const void **data, int *size) override
Definition: proto_utils.h:131
Definition: grpc_types.h:55
#define GRPC_SLICE_START_PTR(slice)
Definition: slice.h:126
bool Skip(int count) override
Definition: proto_utils.h:159
#define GRPC_SLICE_END_PTR(slice)
Definition: slice.h:135
void BackUp(int count) override
Definition: proto_utils.h:157
static Status Deserialize(grpc_byte_buffer *buffer, grpc::protobuf::Message *msg)
Definition: proto_utils.h:212
virtual void grpc_byte_buffer_destroy(grpc_byte_buffer *bb)=0
Defines how to serialize and deserialize some type.
Definition: serialization_traits.h:64
::google::protobuf::io::ZeroCopyInputStream ZeroCopyInputStream
Definition: config_protobuf.h:101
static Status Serialize(const grpc::protobuf::Message &msg, grpc_byte_buffer **bp, bool *own_buffer)
Definition: proto_utils.h:191
struct grpc_slice_refcount * refcount
Definition: slice.h:91
void BackUp(int count) override
Definition: proto_utils.h:87
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:63
virtual grpc_byte_buffer * grpc_raw_byte_buffer_create(grpc_slice *slice, size_t nslices)=0
GrpcBufferWriter(grpc_byte_buffer **bp, int block_size)
Definition: proto_utils.h:60
Definition: proto_utils.h:57
friend class GrpcBufferWriterPeer
Definition: proto_utils.h:107
::google::protobuf::int64 int64
Definition: config_protobuf.h:86
virtual grpc_slice grpc_slice_split_tail(grpc_slice *s, size_t split)=0
grpc::protobuf::int64 ByteCount() const override
Definition: proto_utils.h:104
virtual void grpc_slice_unref(grpc_slice slice)=0
bool Next(void **data, int *size) override
Definition: proto_utils.h:72
virtual void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice slice)=0
bool ok() const
Is the status OK?
Definition: status.h:76
Did it work? If it didn't, why?
Definition: status.h:45
virtual const Status & ok()=0
virtual int grpc_byte_buffer_reader_next(grpc_byte_buffer_reader *reader, grpc_slice *slice)=0
::google::protobuf::io::ZeroCopyOutputStream ZeroCopyOutputStream
Definition: config_protobuf.h:100
#define GRPC_SLICE_LENGTH(slice)
Definition: slice.h:129
GrpcBufferReader(grpc_byte_buffer *buffer)
Definition: proto_utils.h:119
Definition: byte_buffer_reader.h:43
virtual int grpc_byte_buffer_reader_init(grpc_byte_buffer_reader *reader, grpc_byte_buffer *buffer) GRPC_MUST_USE_RESULT=0
Internal errors.
Definition: status_code_enum.h:134
Status status() const
Definition: proto_utils.h:155
::google::protobuf::Message Message
Definition: config_protobuf.h:85
::google::protobuf::io::CodedInputStream CodedInputStream
Definition: config_protobuf.h:102