Go to the documentation of this file.
62 result.append(
reinterpret_cast<const char*
>(
72 #define GROW(x) (3 * (x) / 2)
79 const size_t slice_count,
80 const size_t slice_offset) {
81 if (slice_offset != 0) {
103 if (sb->
count == 0) {
110 size_t slice_count = sb->
count + slice_offset;
140 if (sb->
count == 0)
goto add_first;
176 if (s.refcount !=
nullptr && back !=
nullptr &&
189 if (!s.refcount &&
n) {
200 s.data.inlined.bytes, s.data.inlined.length);
206 s.data.inlined.bytes, cp1);
213 static_cast<uint8_t>(s.data.inlined.length - cp1);
215 s.data.inlined.length - cp1);
217 sb->
length += s.data.inlined.length;
226 for (
i = 0;
i <
n;
i++) {
232 if (sb->
count != 0) {
250 size_t a_offset =
static_cast<size_t>(
a->slices -
a->base_slices);
251 size_t b_offset =
static_cast<size_t>(
b->slices -
b->base_slices);
253 size_t a_count =
a->count + a_offset;
254 size_t b_count =
b->count + b_offset;
256 if (
a->base_slices ==
a->inlined) {
257 if (
b->base_slices ==
b->inlined) {
265 a->base_slices =
b->base_slices;
266 b->base_slices =
b->inlined;
269 }
else if (
b->base_slices ==
b->inlined) {
271 b->base_slices =
a->base_slices;
272 a->base_slices =
a->inlined;
282 a->slices =
a->base_slices + b_offset;
283 b->slices =
b->base_slices + a_offset;
294 if (src->
count == 0) {
298 if (
dst->count == 0) {
308 template <
bool incref>
317 size_t output_len =
dst->length +
n;
318 size_t new_input_len = src->
length -
n;
320 while (src->
count > 0) {
326 }
else if (
n == slice_len) {
350 slice_buffer_move_first_maybe_ref<true>(src,
n,
dst);
355 slice_buffer_move_first_maybe_ref<false>(src,
n,
dst);
360 char* dstp =
static_cast<char*
>(
dst);
371 }
else if (slice_len ==
n) {
389 for (
size_t i = 0;
i < src->
count;
i++) {
392 if (slice_len >=
n) {
418 }
else if (slice_len ==
n) {
454 if (--sb->
count == 0) {
static void maybe_embiggen(grpc_slice_buffer *sb)
struct grpc_slice_refcount * refcount
const grpc_slice & grpc_slice_ref_internal(const grpc_slice &slice)
#define GPR_DEBUG_ASSERT(x)
void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice s)
GPRAPI void gpr_free(void *ptr)
void grpc_slice_buffer_move_into(grpc_slice_buffer *src, grpc_slice_buffer *dst)
GPRAPI void * gpr_malloc(size_t size)
grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer *sb)
void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b)
GPRAPI grpc_slice grpc_slice_sub_no_ref(grpc_slice s, size_t begin, size_t end)
uint8_t * grpc_slice_buffer_tiny_add(grpc_slice_buffer *sb, size_t n)
Slice TakeFirst()
Removes the first slice in the SliceBuffer and returns it.
static void GPR_ATTRIBUTE_NOINLINE do_embiggen(grpc_slice_buffer *sb, const size_t slice_count, const size_t slice_offset)
std::string JoinIntoString() const
Concatenate all slices and return the resulting string.
Slice RefSlice(size_t index) const
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static void slice_buffer_move_first_maybe_ref(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst)
grpc_slice_buffer slice_buffer_
The backing raw slice buffer.
void grpc_slice_buffer_move_first_into_buffer(grpc_slice_buffer *src, size_t n, void *dst)
GPRAPI void * gpr_realloc(void *p, size_t size)
void grpc_slice_buffer_undo_take_first(grpc_slice_buffer *sb, grpc_slice slice)
size_t AppendIndexed(Slice slice)
struct grpc_slice::grpc_slice_data::grpc_slice_inlined inlined
#define GRPC_SLICE_START_PTR(slice)
GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref(grpc_slice *s, size_t split, grpc_slice_ref_whom ref_whom)
void swap(Json::Value &a, Json::Value &b)
Specialize std::swap() for Json::Value.
void grpc_slice_buffer_move_first(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst)
size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer *sb, grpc_slice s)
#define GRPC_SLICE_END_PTR(slice)
void grpc_slice_buffer_trim_end(grpc_slice_buffer *sb, size_t n, grpc_slice_buffer *garbage)
#define GRPC_SLICE_LENGTH(slice)
void grpc_slice_buffer_move_first_no_ref(grpc_slice_buffer *src, size_t n, grpc_slice_buffer *dst)
struct grpc_slice::grpc_slice_data::grpc_slice_refcounted refcounted
void grpc_slice_buffer_pop(grpc_slice_buffer *sb)
void grpc_slice_buffer_addn(grpc_slice_buffer *sb, grpc_slice *s, size_t n)
union grpc_slice::grpc_slice_data data
#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS
#define GRPC_SLICE_INLINED_SIZE
GPRAPI grpc_slice grpc_slice_split_head(grpc_slice *s, size_t split)
uint8_t bytes[GRPC_SLICE_INLINED_SIZE]
void grpc_slice_buffer_destroy_internal(grpc_slice_buffer *sb)
grpc_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS]
void Prepend(Slice slice)
Prepends the slice to the the front of the SliceBuffer.
void grpc_slice_buffer_remove_first(grpc_slice_buffer *sb)
void grpc_slice_buffer_copy_first_into_buffer(grpc_slice_buffer *src, size_t n, void *dst)
void grpc_slice_buffer_reset_and_unref_internal(grpc_slice_buffer *sb)
void grpc_slice_buffer_sub_first(grpc_slice_buffer *sb, size_t begin, size_t end)
void grpc_slice_buffer_init(grpc_slice_buffer *sb)
void grpc_slice_unref_internal(const grpc_slice &slice)
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:13