aboutsummaryrefslogtreecommitdiffhomepage
path: root/include/grpc/census.h
diff options
context:
space:
mode:
authorGravatar Alistair Veitch <aveitch@google.com>2016-01-22 11:43:30 -0800
committerGravatar Alistair Veitch <aveitch@google.com>2016-01-22 11:43:30 -0800
commitc45d088ae7d8f67f9422abc19562a81307bf78a2 (patch)
tree561a8b7a18051185d2d057a0a315cecb3323cd50 /include/grpc/census.h
parentd409e3bf41d0102c7ab4370a5470c4259aad88a8 (diff)
Single encode function
Diffstat (limited to 'include/grpc/census.h')
-rw-r--r--include/grpc/census.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/include/grpc/census.h b/include/grpc/census.h
index 84a3f8faf6..6e4fa5a825 100644
--- a/include/grpc/census.h
+++ b/include/grpc/census.h
@@ -433,17 +433,24 @@ int census_tag_set_get_tag_by_key(const census_tag_set *tags, const char *key,
for use by RPC systems only, for purposes of transmitting/receiving tag
sets. */
-/* Encode to-be-propagated non-binary tags from a tag set into a memory
- buffer. The total number of bytes used in the buffer is returned. If the
- buffer is too small to contain the encoded tag set, then 0 is returned. */
-size_t census_tag_set_encode_propagated(const census_tag_set *tags,
- char *buffer, size_t buf_size);
-
-/* Encode to-be-propagated binary tags from a tag set into a memory
- buffer. The total number of bytes used in the buffer is returned. If the
- buffer is too small to contain the encoded tag set, then 0 is returned. */
-size_t census_tag_set_encode_propagated_binary(const census_tag_set *tags,
- char *buffer, size_t buf_size);
+/* Encode a tag set into a buffer. The propagated tags are encoded into the
+ buffer in two regions: one for printable tags, and one for binary tags.
+ @param tags tag set to be encoded
+ @param buffer pointer to buffer. This address will be used to encode the
+ printable tags.
+ @param buf_size On input, will be a pointer to total buffer size. On output,
+ will be set to total number of bytes consumed by printable
+ tags.
+ @param bin_buf_size on output, will be set to the number of bytes used to
+ encode the binary tags.
+ @return A pointer to the binary tag's encoded, or NULL if the buffer was
+ insufficiently large to hold the encoded tags. Thus, if successful,
+ printable tags are encoded into
+ [buffer, buffer + *buf_size) and binary tags into
+ [returned-ptr, returned-ptr + *bin_buf_size) (and the return value
+ should be buffer + *buf_size) */
+char *census_tag_set_encode(const census_tag_set *tags, char *buffer,
+ size_t *buf_size, size_t *bin_buf_size);
/* Decode tag set buffers encoded with census_tag_set_encode_*(). Returns NULL
if there is an error in parsing either buffer. */