Go to the documentation of this file.
41 #include <google/protobuf/io/coded_stream.h>
49 #include <google/protobuf/stubs/logging.h>
50 #include <google/protobuf/stubs/common.h>
51 #include <google/protobuf/arena.h>
52 #include <google/protobuf/io/zero_copy_stream.h>
53 #include <google/protobuf/io/zero_copy_stream_impl_lite.h>
54 #include <google/protobuf/stubs/stl_util.h>
57 #include <google/protobuf/port_def.inc>
65 static const int kMaxVarintBytes = 10;
66 static const int kMaxVarint32Bytes = 5;
74 }
while (success && *
size == 0);
94 if (backup_bytes > 0) {
127 if (PROTOBUF_PREDICT_TRUE(byte_limit >= 0 &&
128 byte_limit <= INT_MAX - current_position &&
148 std::pair<CodedInputStream::Limit, int>
194 <<
"A protocol message was rejected because it was too "
197 <<
" bytes). To increase the limit (or to disable these "
198 "warnings), see CodedInputStream::SetTotalBytesLimit() "
199 "in third_party/protobuf/src/google/protobuf/io/coded_stream.h.";
209 count -= original_buffer_size;
216 if (bytes_until_limit <
count) {
218 if (bytes_until_limit > 0) {
242 int current_buffer_size;
247 size -= current_buffer_size;
259 if (
size < 0)
return false;
283 if (closest_limit != INT_MAX) {
285 if (bytes_to_limit > 0 &&
size > 0 &&
size <= bytes_to_limit) {
290 int current_buffer_size;
293 if (current_buffer_size != 0) {
297 current_buffer_size);
299 size -= current_buffer_size;
365 PROTOBUF_ALWAYS_INLINE
366 ::std::pair<bool, const uint8_t*> ReadVarint32FromArray(
uint32_t first_byte,
369 inline ::std::pair<bool, const uint8_t*> ReadVarint32FromArray(
381 if (!(
b & 0x80))
goto done;
385 if (!(
b & 0x80))
goto done;
389 if (!(
b & 0x80))
goto done;
393 if (!(
b & 0x80))
goto done;
398 for (
int i = 0;
i < kMaxVarintBytes - kMaxVarint32Bytes;
i++) {
400 if (!(
b & 0x80))
goto done;
405 return std::make_pair(
false,
ptr);
409 return std::make_pair(
true,
ptr);
412 PROTOBUF_ALWAYS_INLINE::std::pair<bool, const uint8_t*> ReadVarint64FromArray(
414 inline ::std::pair<bool, const uint8_t*> ReadVarint64FromArray(
422 }
else if (
buffer[2] < 128) {
424 }
else if (
buffer[3] < 128) {
426 }
else if (
buffer[4] < 128) {
428 }
else if (
buffer[5] < 128) {
430 }
else if (
buffer[6] < 128) {
432 }
else if (
buffer[7] < 128) {
434 }
else if (
buffer[8] < 128) {
436 }
else if (
buffer[9] < 128) {
441 return std::make_pair(
false,
buffer + 11);
444 return std::make_pair(
true,
next);
463 <<
"Caller should provide us with *buffer_ when buffer is non-empty";
465 ::std::pair<bool, const uint8_t*>
p =
466 ReadVarint32FromArray(first_byte_or_zero,
buffer_, &
temp);
467 if (!
p.first)
return -1;
483 if (!
p.second ||
p.first >
static_cast<uint64_t>(INT_MAX))
return -1;
493 ::std::pair<bool, const uint8_t*>
p = ReadVarint64FromArray(
buffer_, &
temp);
494 if (!
p.first ||
temp >
static_cast<uint64_t>(INT_MAX))
return -1;
533 if (buf_size >= kMaxVarintBytes ||
538 if (first_byte_or_zero == 0) {
543 ::std::pair<bool, const uint8_t*>
p =
544 ReadVarint32FromArray(first_byte_or_zero,
buffer_, &
tag);
553 if ((buf_size == 0) &&
577 if (
count == kMaxVarintBytes) {
603 ::std::pair<bool, const uint8_t*>
p = ReadVarint64FromArray(
buffer_, &
temp);
605 return std::make_pair(0,
false);
608 return std::make_pair(
temp,
true);
612 return std::make_pair(
temp, success);
633 const void* void_buffer;
722 if (
count < 0)
return false;
789 if (PROTOBUF_PREDICT_FALSE(
stream_ ==
nullptr))
return Error();
863 #ifndef PROTOBUF_LITTLE_ENDIAN
933 bool do_eager_refresh)
934 :
impl_(
stream, IsDefaultSerializationDeterministic(), &cur_),
935 start_count_(
stream->ByteCount()) {
936 if (do_eager_refresh) {
970 }
while (
value >= 0x80);
978 #include <google/protobuf/port_undef.inc>
static uint8 * WriteStringToArray(const std::string &str, uint8 *target)
virtual bool WriteAliasedRaw(const void *data, int size)
const Descriptor::ReservedRange value
bool Skip(int count, uint8 **pp)
uint8 * WriteStringOutline(uint32 num, const std::string &s, uint8 *ptr)
static uint8 * WriteStringWithSizeToArray(const std::string &str, uint8 *target)
void EnableAliasing(bool enabled)
GRPC_CUSTOM_ZEROCOPYINPUTSTREAM ZeroCopyInputStream
uint8 * FlushAndResetBuffer(uint8 *)
uint8 * WriteRawMaybeAliased(const void *data, int size, uint8 *ptr)
std::ptrdiff_t GetSize(uint8 *ptr) const
GRPC_CUSTOM_ZEROCOPYOUTPUTSTREAM ZeroCopyOutputStream
uint8 * WriteRaw(const void *data, int size, uint8 *ptr)
static uint8 * WriteLittleEndian64ToArray(uint64 value, uint8 *target)
uint8 * EnsureSpaceFallback(uint8 *ptr)
uint8 * WriteStringMaybeAliasedOutline(uint32 num, const std::string &s, uint8 *ptr)
std::pair< char *, bool > as_string_data(std::string *s)
uint8 * WriteRawFallback(const void *data, int size, uint8 *ptr)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
CodedOutputStream(ZeroCopyOutputStream *stream)
void EnsureSpace(uint8 **ptr)
static void * tag(intptr_t t)
std::shared_ptr< ExternalConnectionAcceptorImpl > impl_
uint8 * SetInitialBuffer(void *data, int size)
#define GOOGLE_CHECK_GE(A, B)
unsigned __int64 uint64_t
PROTOBUF_ALWAYS_INLINE uint8 * WriteLengthDelim(int num, uint32 size, uint8 *ptr)
static std::atomic< bool > default_serialization_deterministic_
ZeroCopyOutputStream * stream_
virtual bool AllowsAliasing() const
static const LogLevel ERROR
bool GetDirectBufferPointer(void **data, int *size, uint8 **pp)
EpsCopyOutputStream impl_
uint8 * WriteAliasedRaw(const void *data, int size, uint8 *ptr)
uint8 * GetDirectBufferForNBytesAndAdvance(int size, uint8 **pp)
uint8 * WriteRawLittleEndian64(const void *data, int size, uint8 *ptr)
static uint8_t * WriteVarint32ToArrayOutOfLineHelper(uint32_t value, uint8_t *target)
AllocList * next[kMaxLevel]
virtual int64_t ByteCount() const =0
static uint8 * WriteVarint32ToArray(uint32 value, uint8 *target)
uint8 * WriteRawLittleEndian32(const void *data, int size, uint8 *ptr)
virtual bool Next(void **data, int *size)=0
uint8 buffer_[2 *kSlopBytes]
#define GOOGLE_LOG(LEVEL)
void STLStringResizeUninitialized(string *s, size_t new_size)
int64 ByteCount(uint8 *ptr) const
static uint8 * WriteLittleEndian32ToArray(uint32 value, uint8 *target)
virtual void BackUp(int count)=0
grpc
Author(s):
autogenerated on Fri May 16 2025 02:57:56