diff options
author | Mark D. Roth <roth@google.com> | 2018-02-28 13:00:04 -0800 |
---|---|---|
committer | Mark D. Roth <roth@google.com> | 2018-02-28 13:00:04 -0800 |
commit | 718c8341ca8dcad17d93dc9e20c289c48b7ece34 (patch) | |
tree | 0a1b19d4c150373b860a5c236528030c150f4494 /src/core/lib/transport/metadata_batch.cc | |
parent | 0fc97adc9ee41d517ee49ec8e3a8338b793fba7e (diff) |
Retry support.
Diffstat (limited to 'src/core/lib/transport/metadata_batch.cc')
-rw-r--r-- | src/core/lib/transport/metadata_batch.cc | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/core/lib/transport/metadata_batch.cc b/src/core/lib/transport/metadata_batch.cc index b23f516516..49740fcd1e 100644 --- a/src/core/lib/transport/metadata_batch.cc +++ b/src/core/lib/transport/metadata_batch.cc @@ -303,3 +303,27 @@ grpc_error* grpc_metadata_batch_filter(grpc_metadata_batch* batch, } return error; } + +void grpc_metadata_batch_copy(grpc_metadata_batch* src, + grpc_metadata_batch* dst, + grpc_linked_mdelem* storage) { + grpc_metadata_batch_init(dst); + dst->deadline = src->deadline; + size_t i = 0; + for (grpc_linked_mdelem* elem = src->list.head; elem != nullptr; + elem = elem->next) { + grpc_error* error = grpc_metadata_batch_add_tail(dst, &storage[i++], + GRPC_MDELEM_REF(elem->md)); + // The only way that grpc_metadata_batch_add_tail() can fail is if + // there's a duplicate entry for a callout. However, that can't be + // the case here, because we would not have been allowed to create + // a source batch that had that kind of conflict. + GPR_ASSERT(error == GRPC_ERROR_NONE); + } +} + +void grpc_metadata_batch_move(grpc_metadata_batch* src, + grpc_metadata_batch* dst) { + *dst = *src; + grpc_metadata_batch_init(src); +} |