|
@@ -147,54 +147,3 @@ void grpc_metadata_buffer_flush(grpc_metadata_buffer *buffer,
|
|
|
gpr_free(impl);
|
|
|
*buffer = NULL;
|
|
|
}
|
|
|
-
|
|
|
-size_t grpc_metadata_buffer_count(const grpc_metadata_buffer *buffer) {
|
|
|
- return *buffer ? (*buffer)->elems : 0;
|
|
|
-}
|
|
|
-
|
|
|
-typedef struct {
|
|
|
- grpc_metadata_buffer_impl *impl;
|
|
|
-} elems_hdr;
|
|
|
-
|
|
|
-grpc_metadata *grpc_metadata_buffer_extract_elements(
|
|
|
- grpc_metadata_buffer *buffer) {
|
|
|
- grpc_metadata_buffer_impl *impl;
|
|
|
- elems_hdr *hdr;
|
|
|
- qelem *src;
|
|
|
- grpc_metadata *out;
|
|
|
- size_t i;
|
|
|
-
|
|
|
- impl = *buffer;
|
|
|
-
|
|
|
- if (!impl) {
|
|
|
- return NULL;
|
|
|
- }
|
|
|
-
|
|
|
- hdr = gpr_malloc(sizeof(elems_hdr) + impl->elems * sizeof(grpc_metadata));
|
|
|
- src = ELEMS(impl);
|
|
|
- out = (grpc_metadata *)(hdr + 1);
|
|
|
-
|
|
|
- hdr->impl = impl;
|
|
|
- for (i = 0; i < impl->elems; i++) {
|
|
|
- out[i].key = (char *)grpc_mdstr_as_c_string(src[i].md->key);
|
|
|
- out[i].value = (char *)grpc_mdstr_as_c_string(src[i].md->value);
|
|
|
- out[i].value_length = GPR_SLICE_LENGTH(src[i].md->value->slice);
|
|
|
- }
|
|
|
-
|
|
|
- /* clear out buffer (it's not possible to extract elements twice */
|
|
|
- *buffer = NULL;
|
|
|
-
|
|
|
- return out;
|
|
|
-}
|
|
|
-
|
|
|
-void grpc_metadata_buffer_cleanup_elements(void *elements,
|
|
|
- grpc_op_error error) {
|
|
|
- elems_hdr *hdr = ((elems_hdr *)elements) - 1;
|
|
|
-
|
|
|
- if (!elements) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- grpc_metadata_buffer_destroy(&hdr->impl, error);
|
|
|
- gpr_free(hdr);
|
|
|
-}
|