diff options
author | Alistair Veitch <aveitch@google.com> | 2016-01-22 11:43:30 -0800 |
---|---|---|
committer | Alistair Veitch <aveitch@google.com> | 2016-01-22 11:43:30 -0800 |
commit | c45d088ae7d8f67f9422abc19562a81307bf78a2 (patch) | |
tree | 561a8b7a18051185d2d057a0a315cecb3323cd50 /include/grpc/census.h | |
parent | d409e3bf41d0102c7ab4370a5470c4259aad88a8 (diff) |
Single encode function
Diffstat (limited to 'include/grpc/census.h')
-rw-r--r-- | include/grpc/census.h | 29 |
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. */ |