19 #ifndef GRPCPP_IMPL_CODEGEN_PROTO_BUFFER_READER_H 20 #define GRPCPP_IMPL_CODEGEN_PROTO_BUFFER_READER_H 22 #include <type_traits> 51 : byte_count_(0), backup_count_(0), status_() {
54 if (!buffer->
Valid() ||
55 !g_core_codegen_interface->grpc_byte_buffer_reader_init(
56 &reader_, buffer->c_buffer())) {
58 "Couldn't initialize byte buffer reader");
64 g_core_codegen_interface->grpc_byte_buffer_reader_destroy(&reader_);
70 bool Next(
const void** data,
int* size)
override {
75 if (backup_count_ > 0) {
79 *size = (int)backup_count_;
84 if (!g_core_codegen_interface->grpc_byte_buffer_reader_next(&reader_,
88 g_core_codegen_interface->grpc_slice_unref(slice_);
104 backup_count_ = count;
109 bool Skip(
int count)
override {
112 while (
Next(&data, &size)) {
126 return byte_count_ - backup_count_;
142 int64_t backup_count_;
151 #endif // GRPCPP_IMPL_CODEGEN_PROTO_BUFFER_READER_H
grpc_byte_buffer_reader * reader()
Definition: proto_buffer_reader.h:137
#define GPR_CODEGEN_ASSERT(x)
Codegen specific version of GPR_ASSERT.
Definition: core_codegen_interface.h:138
void BackUp(int count) override
The proto library calls this to indicate that we should back up count bytes that have already been re...
Definition: proto_buffer_reader.h:102
A grpc_slice s, if initialized, represents the byte range s.bytes[0..s.length-1]. ...
Definition: slice.h:80
#define GRPC_SLICE_START_PTR(slice)
Definition: slice.h:116
bool Valid() const
Is this ByteBuffer valid?
Definition: byte_buffer.h:133
Status status() const
Returns the status of the buffer reader.
Definition: proto_buffer_reader.h:97
::google::protobuf::io::ZeroCopyInputStream ZeroCopyInputStream
Definition: config_protobuf.h:88
An Alarm posts the user provided tag to its associated completion queue upon expiry or cancellation...
Definition: alarm.h:31
CoreCodegenInterface * g_core_codegen_interface
Definition: call.h:46
bool Next(const void **data, int *size) override
Give the proto library a chunk of data from the stream.
Definition: proto_buffer_reader.h:70
::google::protobuf::int64 int64
Definition: config_protobuf.h:73
bool ok() const
Is the status OK?
Definition: status.h:118
ProtoBufferReader(ByteBuffer *buffer)
Constructs buffer reader from buffer.
Definition: proto_buffer_reader.h:50
void set_backup_count(int64_t backup_count)
Definition: proto_buffer_reader.h:136
grpc_slice * slice()
Definition: proto_buffer_reader.h:138
grpc::protobuf::int64 ByteCount() const override
Returns the total number of bytes read since this object was created.
Definition: proto_buffer_reader.h:125
Did it work? If it didn't, why?
Definition: status.h:31
void set_byte_count(int64_t byte_count)
Definition: proto_buffer_reader.h:134
int64_t backup_count()
Definition: proto_buffer_reader.h:135
This is a specialization of the protobuf class ZeroCopyInputStream The principle is to get one chunk ...
Definition: proto_buffer_reader.h:46
#define GRPC_SLICE_LENGTH(slice)
Definition: slice.h:119
bool Skip(int count) override
The proto library calls this to skip over count bytes.
Definition: proto_buffer_reader.h:109
Definition: byte_buffer_reader.h:28
~ProtoBufferReader()
Definition: proto_buffer_reader.h:62
Internal errors.
Definition: status_code_enum.h:119
A sequence of bytes.
Definition: byte_buffer.h:53