GRPC Core
43.0.0
|
#include <grpc/impl/slice_type.h>
#include <grpc/support/port_platform.h>
#include <grpc/support/sync.h>
Go to the source code of this file.
Macros | |
#define | GRPC_SLICE_MALLOC(len) grpc_slice_malloc(len) |
Enumerations | |
enum | grpc_slice_ref_whom { GRPC_SLICE_REF_TAIL = 1, GRPC_SLICE_REF_HEAD = 2, GRPC_SLICE_REF_BOTH = 1 + 2 } |
Functions | |
GPRAPI grpc_slice | grpc_slice_ref (grpc_slice s) |
Increment the refcount of s. More... | |
GPRAPI void | grpc_slice_unref (grpc_slice s) |
Decrement the ref count of s. More... | |
GPRAPI grpc_slice | grpc_slice_copy (grpc_slice s) |
Copy slice - create a new slice that contains the same data as s. More... | |
GPRAPI grpc_slice | grpc_slice_new (void *p, size_t len, void(*destroy)(void *)) |
Create a slice pointing at some data. More... | |
GPRAPI grpc_slice | grpc_slice_new_with_user_data (void *p, size_t len, void(*destroy)(void *), void *user_data) |
Equivalent to grpc_slice_new, but with a separate pointer that is passed to the destroy function. More... | |
GPRAPI grpc_slice | grpc_slice_new_with_len (void *p, size_t len, void(*destroy)(void *, size_t)) |
Equivalent to grpc_slice_new, but with a two argument destroy function that also takes the slice length. More... | |
GPRAPI grpc_slice | grpc_slice_malloc (size_t length) |
Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() call. More... | |
GPRAPI grpc_slice | grpc_slice_malloc_large (size_t length) |
GPRAPI grpc_slice | grpc_slice_from_copied_string (const char *source) |
Create a slice by copying a string. More... | |
GPRAPI grpc_slice | grpc_slice_from_copied_buffer (const char *source, size_t len) |
Create a slice by copying a buffer. More... | |
GPRAPI grpc_slice | grpc_slice_from_static_string (const char *source) |
Create a slice pointing to constant memory. More... | |
GPRAPI grpc_slice | grpc_slice_from_static_buffer (const void *source, size_t len) |
Create a slice pointing to constant memory. More... | |
GPRAPI grpc_slice | grpc_slice_sub (grpc_slice s, size_t begin, size_t end) |
Return a result slice derived from s, which shares a ref count with s, where result.data==s.data+begin, and result.length==end-begin. More... | |
GPRAPI grpc_slice | grpc_slice_sub_no_ref (grpc_slice s, size_t begin, size_t end) |
The same as grpc_slice_sub, but without altering the ref count. More... | |
GPRAPI grpc_slice | grpc_slice_split_tail (grpc_slice *s, size_t split) |
Splits s into two: modifies s to be s[0:split], and returns a new slice, sharing a refcount with s, that contains s[split:s.length]. More... | |
GPRAPI grpc_slice | grpc_slice_split_tail_maybe_ref (grpc_slice *s, size_t split, grpc_slice_ref_whom ref_whom) |
The same as grpc_slice_split_tail, but with an option to skip altering refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to grpc_slice_split_tail(...)) More... | |
GPRAPI grpc_slice | grpc_slice_split_head (grpc_slice *s, size_t split) |
Splits s into two: modifies s to be s[split:s.length], and returns a new slice, sharing a refcount with s, that contains s[0:split]. More... | |
GPRAPI grpc_slice | grpc_empty_slice (void) |
GPRAPI int | grpc_slice_eq (grpc_slice a, grpc_slice b) |
GPRAPI int | grpc_slice_cmp (grpc_slice a, grpc_slice b) |
Returns <0 if a < b, ==0 if a == b, >0 if a > b The order is arbitrary, and is not guaranteed to be stable across different versions of the API. More... | |
GPRAPI int | grpc_slice_str_cmp (grpc_slice a, const char *b) |
GPRAPI int | grpc_slice_buf_start_eq (grpc_slice a, const void *b, size_t blen) |
return non-zero if the first blen bytes of a are equal to b More... | |
GPRAPI int | grpc_slice_rchr (grpc_slice s, char c) |
return the index of the last instance of c in s, or -1 if not found More... | |
GPRAPI int | grpc_slice_chr (grpc_slice s, char c) |
GPRAPI int | grpc_slice_slice (grpc_slice haystack, grpc_slice needle) |
return the index of the first occurrence of needle in haystack, or -1 if it's not found More... | |
GPRAPI int | grpc_slice_is_equivalent (grpc_slice a, grpc_slice b) |
Do two slices point at the same memory, with the same length If a or b is inlined, actually compares data. More... | |
GPRAPI grpc_slice | grpc_slice_dup (grpc_slice a) |
Return a slice pointing to newly allocated memory that has the same contents as s. More... | |
GPRAPI char * | grpc_slice_to_c_string (grpc_slice s) |
Return a copy of slice as a C string. More... | |
#define GRPC_SLICE_MALLOC | ( | len | ) | grpc_slice_malloc(len) |
enum grpc_slice_ref_whom |
GPRAPI grpc_slice grpc_empty_slice | ( | void | ) |
GPRAPI int grpc_slice_buf_start_eq | ( | grpc_slice | a, |
const void * | b, | ||
size_t | blen | ||
) |
return non-zero if the first blen bytes of a are equal to b
GPRAPI int grpc_slice_chr | ( | grpc_slice | s, |
char | c | ||
) |
GPRAPI int grpc_slice_cmp | ( | grpc_slice | a, |
grpc_slice | b | ||
) |
Returns <0 if a < b, ==0 if a == b, >0 if a > b The order is arbitrary, and is not guaranteed to be stable across different versions of the API.
GPRAPI grpc_slice grpc_slice_copy | ( | grpc_slice | s | ) |
Copy slice - create a new slice that contains the same data as s.
GPRAPI grpc_slice grpc_slice_dup | ( | grpc_slice | a | ) |
Return a slice pointing to newly allocated memory that has the same contents as s.
GPRAPI int grpc_slice_eq | ( | grpc_slice | a, |
grpc_slice | b | ||
) |
GPRAPI grpc_slice grpc_slice_from_copied_buffer | ( | const char * | source, |
size_t | len | ||
) |
Create a slice by copying a buffer.
Equivalent to: grpc_slice slice = grpc_slice_malloc(len); memcpy(slice->data, source, len);
GPRAPI grpc_slice grpc_slice_from_copied_string | ( | const char * | source | ) |
Create a slice by copying a string.
Does not preserve null terminators. Equivalent to: size_t len = strlen(source); grpc_slice slice = grpc_slice_malloc(len); memcpy(slice->data, source, len);
GPRAPI grpc_slice grpc_slice_from_static_buffer | ( | const void * | source, |
size_t | len | ||
) |
Create a slice pointing to constant memory.
GPRAPI grpc_slice grpc_slice_from_static_string | ( | const char * | source | ) |
Create a slice pointing to constant memory.
GPRAPI int grpc_slice_is_equivalent | ( | grpc_slice | a, |
grpc_slice | b | ||
) |
Do two slices point at the same memory, with the same length If a or b is inlined, actually compares data.
GPRAPI grpc_slice grpc_slice_malloc | ( | size_t | length | ) |
Equivalent to grpc_slice_new(malloc(len), len, free), but saves one malloc() call.
Aborts if malloc() fails.
GPRAPI grpc_slice grpc_slice_malloc_large | ( | size_t | length | ) |
GPRAPI grpc_slice grpc_slice_new | ( | void * | p, |
size_t | len, | ||
void(*)(void *) | destroy | ||
) |
Create a slice pointing at some data.
Calls malloc to allocate a refcount for the object, and arranges that destroy will be called with the pointer passed in at destruction.
GPRAPI grpc_slice grpc_slice_new_with_len | ( | void * | p, |
size_t | len, | ||
void(*)(void *, size_t) | destroy | ||
) |
Equivalent to grpc_slice_new, but with a two argument destroy function that also takes the slice length.
GPRAPI grpc_slice grpc_slice_new_with_user_data | ( | void * | p, |
size_t | len, | ||
void(*)(void *) | destroy, | ||
void * | user_data | ||
) |
Equivalent to grpc_slice_new, but with a separate pointer that is passed to the destroy function.
This function can be useful when the data is part of a larger structure that must be destroyed when the data is no longer needed.
GPRAPI int grpc_slice_rchr | ( | grpc_slice | s, |
char | c | ||
) |
return the index of the last instance of c in s, or -1 if not found
GPRAPI grpc_slice grpc_slice_ref | ( | grpc_slice | s | ) |
Increment the refcount of s.
Requires slice is initialized. Returns s.
GPRAPI int grpc_slice_slice | ( | grpc_slice | haystack, |
grpc_slice | needle | ||
) |
return the index of the first occurrence of needle in haystack, or -1 if it's not found
GPRAPI grpc_slice grpc_slice_split_head | ( | grpc_slice * | s, |
size_t | split | ||
) |
Splits s into two: modifies s to be s[split:s.length], and returns a new slice, sharing a refcount with s, that contains s[0:split].
Requires s initialized, split <= s.length
GPRAPI grpc_slice grpc_slice_split_tail | ( | grpc_slice * | s, |
size_t | split | ||
) |
Splits s into two: modifies s to be s[0:split], and returns a new slice, sharing a refcount with s, that contains s[split:s.length].
Requires s initialized, split <= s.length
GPRAPI grpc_slice grpc_slice_split_tail_maybe_ref | ( | grpc_slice * | s, |
size_t | split, | ||
grpc_slice_ref_whom | ref_whom | ||
) |
The same as grpc_slice_split_tail, but with an option to skip altering refcounts (grpc_slice_split_tail_maybe_ref(..., true) is equivalent to grpc_slice_split_tail(...))
GPRAPI int grpc_slice_str_cmp | ( | grpc_slice | a, |
const char * | b | ||
) |
GPRAPI grpc_slice grpc_slice_sub | ( | grpc_slice | s, |
size_t | begin, | ||
size_t | end | ||
) |
Return a result slice derived from s, which shares a ref count with s, where result.data==s.data+begin, and result.length==end-begin.
The ref count of s is increased by one. Do not assign result back to s. Requires s initialized, begin <= end, begin <= s.length, and end <= source->length.
GPRAPI grpc_slice grpc_slice_sub_no_ref | ( | grpc_slice | s, |
size_t | begin, | ||
size_t | end | ||
) |
The same as grpc_slice_sub, but without altering the ref count.
GPRAPI char* grpc_slice_to_c_string | ( | grpc_slice | s | ) |
Return a copy of slice as a C string.
Offers no protection against embedded NULL's. Returned string must be freed with gpr_free.
GPRAPI void grpc_slice_unref | ( | grpc_slice | s | ) |
Decrement the ref count of s.
If the ref count of s reaches zero, all slices sharing the ref count are destroyed, and considered no longer initialized. If s is ultimately derived from a call to grpc_slice_new(start, len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is ultimately derived from a call to grpc_slice_new_with_len(start, len, dest) where dest!=NULL , then (*dest)(start, len). Requires s initialized.