Merge pull request #19405 from markdroth/lb_policy_metadata

Add MetadataInterface abstraction to LB policy API.
pull/19781/head
Mark D. Roth 5 years ago committed by GitHub
commit 99deff5aed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 62
      src/core/ext/filters/client_channel/client_channel.cc
  2. 38
      src/core/ext/filters/client_channel/lb_policy.h
  3. 30
      src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc
  4. 126
      src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
  5. 7
      src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h
  6. 6
      src/core/ext/filters/load_reporting/server_load_reporting_filter.cc
  7. 653
      src/core/lib/transport/static_metadata.cc
  8. 202
      src/core/lib/transport/static_metadata.h
  9. 2
      test/core/end2end/fuzzers/hpack.dictionary
  10. 24
      test/core/util/test_lb_policies.cc
  11. 49
      tools/codegen/core/gen_static_metadata.py

@ -320,6 +320,54 @@ class CallData {
private:
class QueuedPickCanceller;
class Metadata : public LoadBalancingPolicy::MetadataInterface {
public:
Metadata(CallData* calld, grpc_metadata_batch* batch)
: calld_(calld), batch_(batch) {}
void Add(StringView key, StringView value) override {
grpc_linked_mdelem* linked_mdelem = static_cast<grpc_linked_mdelem*>(
calld_->arena_->Alloc(sizeof(grpc_linked_mdelem)));
linked_mdelem->md = grpc_mdelem_from_slices(
grpc_slice_from_static_buffer_internal(key.data(), key.size()),
grpc_slice_from_static_buffer_internal(value.data(), value.size()));
GPR_ASSERT(grpc_metadata_batch_link_tail(batch_, linked_mdelem) ==
GRPC_ERROR_NONE);
}
Iterator Begin() const override {
static_assert(sizeof(grpc_linked_mdelem*) <= sizeof(Iterator),
"iterator size too large");
return reinterpret_cast<Iterator>(batch_->list.head);
}
bool IsEnd(Iterator it) const override {
return reinterpret_cast<grpc_linked_mdelem*>(it) == nullptr;
}
void Next(Iterator* it) const override {
*it = reinterpret_cast<Iterator>(
reinterpret_cast<grpc_linked_mdelem*>(*it)->next);
}
StringView Key(Iterator it) const override {
return StringView(
GRPC_MDKEY(reinterpret_cast<grpc_linked_mdelem*>(it)->md));
}
StringView Value(Iterator it) const override {
return StringView(
GRPC_MDVALUE(reinterpret_cast<grpc_linked_mdelem*>(it)->md));
}
void Erase(Iterator* it) override {
grpc_linked_mdelem* linked_mdelem =
reinterpret_cast<grpc_linked_mdelem*>(*it);
*it = reinterpret_cast<Iterator>(linked_mdelem->next);
grpc_metadata_batch_remove(batch_, linked_mdelem);
}
private:
CallData* calld_;
grpc_metadata_batch* batch_;
};
class LbCallState : public LoadBalancingPolicy::CallState {
public:
explicit LbCallState(CallData* calld) : calld_(calld) {}
@ -660,7 +708,8 @@ class CallData {
LbCallState lb_call_state_;
RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
void (*lb_recv_trailing_metadata_ready_)(
void* user_data, grpc_metadata_batch* recv_trailing_metadata,
void* user_data,
LoadBalancingPolicy::MetadataInterface* recv_trailing_metadata,
LoadBalancingPolicy::CallState* call_state) = nullptr;
void* lb_recv_trailing_metadata_ready_user_data_ = nullptr;
grpc_closure pick_closure_;
@ -2109,9 +2158,10 @@ void CallData::RecvTrailingMetadataReadyForLoadBalancingPolicy(
void* arg, grpc_error* error) {
CallData* calld = static_cast<CallData*>(arg);
// Invoke callback to LB policy.
Metadata trailing_metadata(calld, calld->recv_trailing_metadata_);
calld->lb_recv_trailing_metadata_ready_(
calld->lb_recv_trailing_metadata_ready_user_data_,
calld->recv_trailing_metadata_, &calld->lb_call_state_);
calld->lb_recv_trailing_metadata_ready_user_data_, &trailing_metadata,
&calld->lb_call_state_);
// Chain to original callback.
GRPC_CLOSURE_RUN(calld->original_recv_trailing_metadata_ready_,
GRPC_ERROR_REF(error));
@ -3716,11 +3766,13 @@ void CallData::StartPickLocked(void* arg, grpc_error* error) {
// attempt) to the LB policy instead the one from the parent channel.
LoadBalancingPolicy::PickArgs pick_args;
pick_args.call_state = &calld->lb_call_state_;
pick_args.initial_metadata =
Metadata initial_metadata(
calld,
calld->seen_send_initial_metadata_
? &calld->send_initial_metadata_
: calld->pending_batches_[0]
.batch->payload->send_initial_metadata.send_initial_metadata;
.batch->payload->send_initial_metadata.send_initial_metadata);
pick_args.initial_metadata = &initial_metadata;
// Grab initial metadata flags so that we can check later if the call has
// wait_for_ready enabled.
const uint32_t send_initial_metadata_flags =

@ -27,10 +27,10 @@
#include "src/core/lib/gprpp/abstract.h"
#include "src/core/lib/gprpp/orphanable.h"
#include "src/core/lib/gprpp/ref_counted_ptr.h"
#include "src/core/lib/gprpp/string_view.h"
#include "src/core/lib/iomgr/combiner.h"
#include "src/core/lib/iomgr/polling_entity.h"
#include "src/core/lib/transport/connectivity_state.h"
#include "src/core/lib/transport/metadata_batch.h"
namespace grpc_core {
@ -92,14 +92,44 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
GRPC_ABSTRACT_BASE_CLASS
};
/// Interface for accessing metadata.
class MetadataInterface {
public:
// Implementations whose iterators fit in intptr_t may internally
// cast this directly to their iterator type. Otherwise, they may
// dynamically allocate their iterators and store the address here.
typedef intptr_t Iterator;
virtual ~MetadataInterface() = default;
/// Adds a key/value pair.
/// Does NOT take ownership of \a key or \a value.
/// Implementations must ensure that the key and value remain alive
/// until the call ends. If desired, they may be allocated via
/// CallState::Alloc().
virtual void Add(StringView key, StringView value) GRPC_ABSTRACT;
/// Iteration interface.
virtual Iterator Begin() const GRPC_ABSTRACT;
virtual bool IsEnd(Iterator it) const GRPC_ABSTRACT;
virtual void Next(Iterator* it) const GRPC_ABSTRACT;
virtual StringView Key(Iterator it) const GRPC_ABSTRACT;
virtual StringView Value(Iterator it) const GRPC_ABSTRACT;
/// Removes the element pointed to by \a it, which is modified to
/// point to the next element.
virtual void Erase(Iterator* it) GRPC_ABSTRACT;
GRPC_ABSTRACT_BASE_CLASS
};
/// Arguments used when picking a subchannel for an RPC.
struct PickArgs {
/// Initial metadata associated with the picking call.
/// The LB policy may use the existing metadata to influence its routing
/// decision, and it may add new metadata elements to be sent with the
/// call to the chosen backend.
// TODO(roth): Provide a more generic metadata API here.
grpc_metadata_batch* initial_metadata = nullptr;
MetadataInterface* initial_metadata;
/// An interface for accessing call state. Can be used to allocate
/// data associated with the call in an efficient way.
CallState* call_state;
@ -145,7 +175,7 @@ class LoadBalancingPolicy : public InternallyRefCounted<LoadBalancingPolicy> {
/// however, so any data that needs to be used after returning must
/// be copied.
void (*recv_trailing_metadata_ready)(
void* user_data, grpc_metadata_batch* recv_trailing_metadata,
void* user_data, MetadataInterface* recv_trailing_metadata,
CallState* call_state) = nullptr;
void* recv_trailing_metadata_ready_user_data = nullptr;
};

@ -20,9 +20,12 @@
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
#include <string.h>
#include <grpc/support/atm.h>
#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/profiling/timers.h"
@ -95,22 +98,33 @@ static void start_transport_stream_op_batch(
GPR_TIMER_SCOPE("clr_start_transport_stream_op_batch", 0);
// Handle send_initial_metadata.
if (batch->send_initial_metadata) {
// Grab client stats object from user_data for LB token metadata.
grpc_linked_mdelem* lb_token =
batch->payload->send_initial_metadata.send_initial_metadata->idx.named
.lb_token;
if (lb_token != nullptr) {
// Grab client stats object from metadata.
grpc_linked_mdelem* client_stats_md =
batch->payload->send_initial_metadata.send_initial_metadata->list.head;
for (; client_stats_md != nullptr;
client_stats_md = client_stats_md->next) {
if (GRPC_SLICE_START_PTR(GRPC_MDKEY(client_stats_md->md)) ==
static_cast<const void*>(grpc_core::kGrpcLbClientStatsMetadataKey)) {
break;
}
}
if (client_stats_md != nullptr) {
grpc_core::GrpcLbClientStats* client_stats =
static_cast<grpc_core::GrpcLbClientStats*>(grpc_mdelem_get_user_data(
lb_token->md, grpc_core::GrpcLbClientStats::Destroy));
const_cast<grpc_core::GrpcLbClientStats*>(
reinterpret_cast<const grpc_core::GrpcLbClientStats*>(
GRPC_SLICE_START_PTR(GRPC_MDVALUE(client_stats_md->md))));
if (client_stats != nullptr) {
calld->client_stats = client_stats->Ref();
calld->client_stats.reset(client_stats);
// Intercept completion.
calld->original_on_complete_for_send = batch->on_complete;
GRPC_CLOSURE_INIT(&calld->on_complete_for_send, on_complete_for_send,
calld, grpc_schedule_on_exec_ctx);
batch->on_complete = &calld->on_complete_for_send;
}
// Remove metadata so it doesn't go out on the wire.
grpc_metadata_batch_remove(
batch->payload->send_initial_metadata.send_initial_metadata,
client_stats_md);
}
}
// Intercept completion of recv_initial_metadata.

@ -108,11 +108,15 @@
#define GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS 10000
#define GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN "grpc.grpclb_address_lb_token"
#define GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS "grpc.grpclb_address_client_stats"
namespace grpc_core {
TraceFlag grpc_lb_glb_trace(false, "glb");
const char kGrpcLbClientStatsMetadataKey[] = "grpclb_client_stats";
const char kGrpcLbLbTokenMetadataKey[] = "lb-token";
namespace {
constexpr char kGrpclb[] = "grpclb";
@ -445,24 +449,44 @@ UniquePtr<char> GrpcLb::Serverlist::AsText() const {
return result;
}
// vtable for LB token channel arg.
// vtables for channel args for LB token and client stats.
void* lb_token_copy(void* token) {
return token == nullptr
? nullptr
: (void*)GRPC_MDELEM_REF(grpc_mdelem{(uintptr_t)token}).payload;
return gpr_strdup(static_cast<char*>(token));
}
void lb_token_destroy(void* token) {
if (token != nullptr) {
GRPC_MDELEM_UNREF(grpc_mdelem{(uintptr_t)token});
}
void lb_token_destroy(void* token) { gpr_free(token); }
void* client_stats_copy(void* p) {
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
client_stats->Ref().release();
return p;
}
void client_stats_destroy(void* p) {
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(p);
client_stats->Unref();
}
int lb_token_cmp(void* token1, void* token2) {
int equal_cmp(void* p1, void* p2) {
// Always indicate a match, since we don't want this channel arg to
// affect the subchannel's key in the index.
// TODO(roth): Is this right? This does prevent us from needlessly
// recreating the subchannel whenever the LB token or client stats
// changes (i.e., when the balancer call is terminated and reestablished).
// However, it means that we don't actually recreate the subchannel,
// which means that we won't ever switch over to using the new LB
// token or client stats. A better approach might be to find somewhere
// other than the subchannel args to store the LB token and client
// stats. They could be stored in a map and then looked up for each
// call (although we'd need to make sure our Map<> implementation is
// performant enough). Or we could do something more complicated whereby
// we create our own subchannel wrapper to store them, although that would
// involve a lot of refcounting overhead.
// Given that we're trying to move from grpclb to xds at this point,
// and that no one has actually reported any problems with this, we
// probably won't bother fixing this at this point.
return 0;
}
const grpc_arg_pointer_vtable lb_token_arg_vtable = {
lb_token_copy, lb_token_destroy, lb_token_cmp};
lb_token_copy, lb_token_destroy, equal_cmp};
const grpc_arg_pointer_vtable client_stats_arg_vtable = {
client_stats_copy, client_stats_destroy, equal_cmp};
bool IsServerValid(const grpc_grpclb_server* server, size_t idx, bool log) {
if (server->drop) return false;
@ -498,20 +522,14 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
grpc_resolved_address addr;
ParseServer(server, &addr);
// LB token processing.
grpc_mdelem lb_token;
char lb_token[GPR_ARRAY_SIZE(server->load_balance_token) + 1];
if (server->has_load_balance_token) {
const size_t lb_token_max_length =
GPR_ARRAY_SIZE(server->load_balance_token);
const size_t lb_token_length =
strnlen(server->load_balance_token, lb_token_max_length);
grpc_slice lb_token_mdstr = grpc_slice_from_copied_buffer(
server->load_balance_token, lb_token_length);
lb_token = grpc_mdelem_from_slices(GRPC_MDSTR_LB_TOKEN, lb_token_mdstr);
if (client_stats != nullptr) {
GPR_ASSERT(grpc_mdelem_set_user_data(
lb_token, GrpcLbClientStats::Destroy,
client_stats->Ref().release()) == client_stats);
}
memcpy(lb_token, server->load_balance_token, lb_token_length);
lb_token[lb_token_length] = '\0';
} else {
char* uri = grpc_sockaddr_to_uri(&addr);
gpr_log(GPR_INFO,
@ -519,16 +537,21 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
"be used instead",
uri);
gpr_free(uri);
lb_token = GRPC_MDELEM_LB_TOKEN_EMPTY;
lb_token[0] = '\0';
}
// Add address.
grpc_arg arg = grpc_channel_arg_pointer_create(
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
(void*)lb_token.payload, &lb_token_arg_vtable);
grpc_channel_args* args = grpc_channel_args_copy_and_add(nullptr, &arg, 1);
InlinedVector<grpc_arg, 2> args_to_add;
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
&lb_token_arg_vtable));
if (client_stats != nullptr) {
args_to_add.emplace_back(grpc_channel_arg_pointer_create(
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS), client_stats,
&client_stats_arg_vtable));
}
grpc_channel_args* args = grpc_channel_args_copy_and_add(
nullptr, args_to_add.data(), args_to_add.size());
addresses.emplace_back(addr, args);
// Clean up.
GRPC_MDELEM_UNREF(lb_token);
}
return addresses;
}
@ -573,25 +596,35 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
// If pick succeeded, add LB token to initial metadata.
if (result.type == PickResult::PICK_COMPLETE &&
result.subchannel != nullptr) {
const grpc_arg* arg = grpc_channel_args_find(
result.subchannel->channel_args(), GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN);
// Encode client stats object into metadata for use by
// client_load_reporting filter.
const grpc_arg* arg =
grpc_channel_args_find(result.subchannel->channel_args(),
GRPC_ARG_GRPCLB_ADDRESS_CLIENT_STATS);
if (arg != nullptr && arg->type == GRPC_ARG_POINTER &&
arg->value.pointer.p != nullptr) {
GrpcLbClientStats* client_stats =
static_cast<GrpcLbClientStats*>(arg->value.pointer.p);
client_stats->Ref().release(); // Ref passed via metadata.
// The metadata value is a hack: we pretend the pointer points to
// a string and rely on the client_load_reporting filter to know
// how to interpret it.
args.initial_metadata->Add(
kGrpcLbClientStatsMetadataKey,
StringView(reinterpret_cast<const char*>(client_stats), 0));
// Update calls-started.
client_stats->AddCallStarted();
}
// Encode the LB token in metadata.
arg = grpc_channel_args_find(result.subchannel->channel_args(),
GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN);
if (arg == nullptr) {
gpr_log(GPR_ERROR, "[grpclb %p picker %p] No LB token for subchannel %p",
parent_, this, result.subchannel.get());
abort();
}
grpc_mdelem lb_token = {reinterpret_cast<uintptr_t>(arg->value.pointer.p)};
GPR_ASSERT(!GRPC_MDISNULL(lb_token));
grpc_linked_mdelem* mdelem_storage = static_cast<grpc_linked_mdelem*>(
args.call_state->Alloc(sizeof(grpc_linked_mdelem)));
GPR_ASSERT(grpc_metadata_batch_add_tail(
args.initial_metadata, mdelem_storage,
GRPC_MDELEM_REF(lb_token)) == GRPC_ERROR_NONE);
GrpcLbClientStats* client_stats = static_cast<GrpcLbClientStats*>(
grpc_mdelem_get_user_data(lb_token, GrpcLbClientStats::Destroy));
if (client_stats != nullptr) {
client_stats->AddCallStarted();
}
args.initial_metadata->Add(kGrpcLbLbTokenMetadataKey,
static_cast<char*>(arg->value.pointer.p));
}
return result;
}
@ -1411,10 +1444,10 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
// Returns the backend addresses extracted from the given addresses.
ServerAddressList ExtractBackendAddresses(const ServerAddressList& addresses) {
void* lb_token = (void*)GRPC_MDELEM_LB_TOKEN_EMPTY.payload;
static const char* lb_token = "";
grpc_arg arg = grpc_channel_arg_pointer_create(
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN), lb_token,
&lb_token_arg_vtable);
const_cast<char*>(GRPC_ARG_GRPCLB_ADDRESS_LB_TOKEN),
const_cast<char*>(lb_token), &lb_token_arg_vtable);
ServerAddressList backend_addresses;
for (size_t i = 0; i < addresses.size(); ++i) {
if (!addresses[i].IsBalancer()) {
@ -1826,7 +1859,12 @@ bool maybe_add_client_load_reporting_filter(grpc_channel_stack_builder* builder,
grpc_channel_args_find(args, GRPC_ARG_LB_POLICY_NAME);
if (channel_arg != nullptr && channel_arg->type == GRPC_ARG_STRING &&
strcmp(channel_arg->value.string, "grpclb") == 0) {
return grpc_channel_stack_builder_append_filter(
// TODO(roth): When we get around to re-attempting
// https://github.com/grpc/grpc/pull/16214, we should try to keep
// this filter at the very top of the subchannel stack, since that
// will minimize the number of metadata elements that the filter
// needs to iterate through to find the ClientStats object.
return grpc_channel_stack_builder_prepend_filter(
builder, (const grpc_channel_filter*)arg, nullptr, nullptr);
}
return true;

@ -32,5 +32,12 @@
#define GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER \
"grpc.address_is_backend_from_grpclb_load_balancer"
namespace grpc_core {
extern const char kGrpcLbClientStatsMetadataKey[];
extern const char kGrpcLbLbTokenMetadataKey[];
} // namespace grpc_core
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_GRPCLB_H \
*/

@ -18,12 +18,15 @@
#include <grpc/support/port_platform.h>
#include <string.h>
#include <grpc/grpc_security.h>
#include <grpc/slice.h>
#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
#include <grpc/support/string_util.h>
#include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
#include "src/core/ext/filters/client_channel/parse_address.h"
#include "src/core/ext/filters/load_reporting/registered_opencensus_objects.h"
#include "src/core/ext/filters/load_reporting/server_load_reporting_filter.h"
@ -225,7 +228,8 @@ grpc_filtered_mdelem ServerLoadReportingCallData::RecvInitialMetadataFilter(
calld->target_host_[i] = static_cast<char>(
tolower(GRPC_SLICE_START_PTR(target_host_slice)[i]));
}
} else if (grpc_slice_eq(GRPC_MDKEY(md), GRPC_MDSTR_LB_TOKEN)) {
} else if (grpc_slice_str_cmp(GRPC_MDKEY(md),
grpc_core::kGrpcLbLbTokenMetadataKey) == 0) {
if (calld->client_ip_and_lr_token_ == nullptr) {
calld->StoreClientIpAndLrToken(
reinterpret_cast<const char*> GRPC_SLICE_START_PTR(GRPC_MDVALUE(md)),

@ -49,72 +49,72 @@ static uint8_t g_bytes[] = {
101, 113, 117, 101, 115, 116, 103, 114, 112, 99, 45, 105, 110, 116, 101,
114, 110, 97, 108, 45, 115, 116, 114, 101, 97, 109, 45, 101, 110, 99,
111, 100, 105, 110, 103, 45, 114, 101, 113, 117, 101, 115, 116, 117, 115,
101, 114, 45, 97, 103, 101, 110, 116, 104, 111, 115, 116, 108, 98, 45,
116, 111, 107, 101, 110, 103, 114, 112, 99, 45, 112, 114, 101, 118, 105,
111, 117, 115, 45, 114, 112, 99, 45, 97, 116, 116, 101, 109, 112, 116,
115, 103, 114, 112, 99, 45, 114, 101, 116, 114, 121, 45, 112, 117, 115,
104, 98, 97, 99, 107, 45, 109, 115, 103, 114, 112, 99, 45, 116, 105,
109, 101, 111, 117, 116, 49, 50, 51, 52, 103, 114, 112, 99, 46, 119,
97, 105, 116, 95, 102, 111, 114, 95, 114, 101, 97, 100, 121, 103, 114,
112, 99, 46, 116, 105, 109, 101, 111, 117, 116, 103, 114, 112, 99, 46,
109, 97, 120, 95, 114, 101, 113, 117, 101, 115, 116, 95, 109, 101, 115,
115, 97, 103, 101, 95, 98, 121, 116, 101, 115, 103, 114, 112, 99, 46,
109, 97, 120, 95, 114, 101, 115, 112, 111, 110, 115, 101, 95, 109, 101,
115, 115, 97, 103, 101, 95, 98, 121, 116, 101, 115, 47, 103, 114, 112,
99, 46, 108, 98, 46, 118, 49, 46, 76, 111, 97, 100, 66, 97, 108,
97, 110, 99, 101, 114, 47, 66, 97, 108, 97, 110, 99, 101, 76, 111,
97, 100, 47, 103, 114, 112, 99, 46, 104, 101, 97, 108, 116, 104, 46,
118, 49, 46, 72, 101, 97, 108, 116, 104, 47, 87, 97, 116, 99, 104,
47, 101, 110, 118, 111, 121, 46, 115, 101, 114, 118, 105, 99, 101, 46,
100, 105, 115, 99, 111, 118, 101, 114, 121, 46, 118, 50, 46, 65, 103,
103, 114, 101, 103, 97, 116, 101, 100, 68, 105, 115, 99, 111, 118, 101,
114, 121, 83, 101, 114, 118, 105, 99, 101, 47, 83, 116, 114, 101, 97,
109, 65, 103, 103, 114, 101, 103, 97, 116, 101, 100, 82, 101, 115, 111,
117, 114, 99, 101, 115, 100, 101, 102, 108, 97, 116, 101, 103, 122, 105,
112, 115, 116, 114, 101, 97, 109, 47, 103, 122, 105, 112, 71, 69, 84,
80, 79, 83, 84, 47, 47, 105, 110, 100, 101, 120, 46, 104, 116, 109,
108, 104, 116, 116, 112, 104, 116, 116, 112, 115, 50, 48, 48, 50, 48,
52, 50, 48, 54, 51, 48, 52, 52, 48, 48, 52, 48, 52, 53, 48,
48, 97, 99, 99, 101, 112, 116, 45, 99, 104, 97, 114, 115, 101, 116,
103, 122, 105, 112, 44, 32, 100, 101, 102, 108, 97, 116, 101, 97, 99,
99, 101, 112, 116, 45, 108, 97, 110, 103, 117, 97, 103, 101, 97, 99,
99, 101, 112, 116, 45, 114, 97, 110, 103, 101, 115, 97, 99, 99, 101,
112, 116, 97, 99, 99, 101, 115, 115, 45, 99, 111, 110, 116, 114, 111,
108, 45, 97, 108, 108, 111, 119, 45, 111, 114, 105, 103, 105, 110, 97,
103, 101, 97, 108, 108, 111, 119, 97, 117, 116, 104, 111, 114, 105, 122,
97, 116, 105, 111, 110, 99, 97, 99, 104, 101, 45, 99, 111, 110, 116,
114, 111, 108, 99, 111, 110, 116, 101, 110, 116, 45, 100, 105, 115, 112,
111, 115, 105, 116, 105, 111, 110, 99, 111, 110, 116, 101, 110, 116, 45,
108, 97, 110, 103, 117, 97, 103, 101, 99, 111, 110, 116, 101, 110, 116,
45, 108, 101, 110, 103, 116, 104, 99, 111, 110, 116, 101, 110, 116, 45,
108, 111, 99, 97, 116, 105, 111, 110, 99, 111, 110, 116, 101, 110, 116,
45, 114, 97, 110, 103, 101, 99, 111, 111, 107, 105, 101, 100, 97, 116,
101, 101, 116, 97, 103, 101, 120, 112, 101, 99, 116, 101, 120, 112, 105,
114, 101, 115, 102, 114, 111, 109, 105, 102, 45, 109, 97, 116, 99, 104,
105, 102, 45, 109, 111, 100, 105, 102, 105, 101, 100, 45, 115, 105, 110,
99, 101, 105, 102, 45, 110, 111, 110, 101, 45, 109, 97, 116, 99, 104,
105, 102, 45, 114, 97, 110, 103, 101, 105, 102, 45, 117, 110, 109, 111,
100, 105, 102, 105, 101, 100, 45, 115, 105, 110, 99, 101, 108, 97, 115,
116, 45, 109, 111, 100, 105, 102, 105, 101, 100, 108, 105, 110, 107, 108,
111, 99, 97, 116, 105, 111, 110, 109, 97, 120, 45, 102, 111, 114, 119,
97, 114, 100, 115, 112, 114, 111, 120, 121, 45, 97, 117, 116, 104, 101,
110, 116, 105, 99, 97, 116, 101, 112, 114, 111, 120, 121, 45, 97, 117,
116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 114, 97, 110, 103,
101, 114, 101, 102, 101, 114, 101, 114, 114, 101, 102, 114, 101, 115, 104,
114, 101, 116, 114, 121, 45, 97, 102, 116, 101, 114, 115, 101, 114, 118,
101, 114, 115, 101, 116, 45, 99, 111, 111, 107, 105, 101, 115, 116, 114,
105, 99, 116, 45, 116, 114, 97, 110, 115, 112, 111, 114, 116, 45, 115,
101, 99, 117, 114, 105, 116, 121, 116, 114, 97, 110, 115, 102, 101, 114,
45, 101, 110, 99, 111, 100, 105, 110, 103, 118, 97, 114, 121, 118, 105,
97, 119, 119, 119, 45, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97,
116, 101, 48, 105, 100, 101, 110, 116, 105, 116, 121, 116, 114, 97, 105,
108, 101, 114, 115, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110,
47, 103, 114, 112, 99, 103, 114, 112, 99, 80, 85, 84, 108, 98, 45,
99, 111, 115, 116, 45, 98, 105, 110, 105, 100, 101, 110, 116, 105, 116,
121, 44, 100, 101, 102, 108, 97, 116, 101, 105, 100, 101, 110, 116, 105,
116, 121, 44, 103, 122, 105, 112, 100, 101, 102, 108, 97, 116, 101, 44,
103, 122, 105, 112, 105, 100, 101, 110, 116, 105, 116, 121, 44, 100, 101,
102, 108, 97, 116, 101, 44, 103, 122, 105, 112};
101, 114, 45, 97, 103, 101, 110, 116, 104, 111, 115, 116, 103, 114, 112,
99, 45, 112, 114, 101, 118, 105, 111, 117, 115, 45, 114, 112, 99, 45,
97, 116, 116, 101, 109, 112, 116, 115, 103, 114, 112, 99, 45, 114, 101,
116, 114, 121, 45, 112, 117, 115, 104, 98, 97, 99, 107, 45, 109, 115,
103, 114, 112, 99, 45, 116, 105, 109, 101, 111, 117, 116, 49, 50, 51,
52, 103, 114, 112, 99, 46, 119, 97, 105, 116, 95, 102, 111, 114, 95,
114, 101, 97, 100, 121, 103, 114, 112, 99, 46, 116, 105, 109, 101, 111,
117, 116, 103, 114, 112, 99, 46, 109, 97, 120, 95, 114, 101, 113, 117,
101, 115, 116, 95, 109, 101, 115, 115, 97, 103, 101, 95, 98, 121, 116,
101, 115, 103, 114, 112, 99, 46, 109, 97, 120, 95, 114, 101, 115, 112,
111, 110, 115, 101, 95, 109, 101, 115, 115, 97, 103, 101, 95, 98, 121,
116, 101, 115, 47, 103, 114, 112, 99, 46, 108, 98, 46, 118, 49, 46,
76, 111, 97, 100, 66, 97, 108, 97, 110, 99, 101, 114, 47, 66, 97,
108, 97, 110, 99, 101, 76, 111, 97, 100, 47, 103, 114, 112, 99, 46,
104, 101, 97, 108, 116, 104, 46, 118, 49, 46, 72, 101, 97, 108, 116,
104, 47, 87, 97, 116, 99, 104, 47, 101, 110, 118, 111, 121, 46, 115,
101, 114, 118, 105, 99, 101, 46, 100, 105, 115, 99, 111, 118, 101, 114,
121, 46, 118, 50, 46, 65, 103, 103, 114, 101, 103, 97, 116, 101, 100,
68, 105, 115, 99, 111, 118, 101, 114, 121, 83, 101, 114, 118, 105, 99,
101, 47, 83, 116, 114, 101, 97, 109, 65, 103, 103, 114, 101, 103, 97,
116, 101, 100, 82, 101, 115, 111, 117, 114, 99, 101, 115, 100, 101, 102,
108, 97, 116, 101, 103, 122, 105, 112, 115, 116, 114, 101, 97, 109, 47,
103, 122, 105, 112, 71, 69, 84, 80, 79, 83, 84, 47, 47, 105, 110,
100, 101, 120, 46, 104, 116, 109, 108, 104, 116, 116, 112, 104, 116, 116,
112, 115, 50, 48, 48, 50, 48, 52, 50, 48, 54, 51, 48, 52, 52,
48, 48, 52, 48, 52, 53, 48, 48, 97, 99, 99, 101, 112, 116, 45,
99, 104, 97, 114, 115, 101, 116, 103, 122, 105, 112, 44, 32, 100, 101,
102, 108, 97, 116, 101, 97, 99, 99, 101, 112, 116, 45, 108, 97, 110,
103, 117, 97, 103, 101, 97, 99, 99, 101, 112, 116, 45, 114, 97, 110,
103, 101, 115, 97, 99, 99, 101, 112, 116, 97, 99, 99, 101, 115, 115,
45, 99, 111, 110, 116, 114, 111, 108, 45, 97, 108, 108, 111, 119, 45,
111, 114, 105, 103, 105, 110, 97, 103, 101, 97, 108, 108, 111, 119, 97,
117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 99, 97, 99,
104, 101, 45, 99, 111, 110, 116, 114, 111, 108, 99, 111, 110, 116, 101,
110, 116, 45, 100, 105, 115, 112, 111, 115, 105, 116, 105, 111, 110, 99,
111, 110, 116, 101, 110, 116, 45, 108, 97, 110, 103, 117, 97, 103, 101,
99, 111, 110, 116, 101, 110, 116, 45, 108, 101, 110, 103, 116, 104, 99,
111, 110, 116, 101, 110, 116, 45, 108, 111, 99, 97, 116, 105, 111, 110,
99, 111, 110, 116, 101, 110, 116, 45, 114, 97, 110, 103, 101, 99, 111,
111, 107, 105, 101, 100, 97, 116, 101, 101, 116, 97, 103, 101, 120, 112,
101, 99, 116, 101, 120, 112, 105, 114, 101, 115, 102, 114, 111, 109, 105,
102, 45, 109, 97, 116, 99, 104, 105, 102, 45, 109, 111, 100, 105, 102,
105, 101, 100, 45, 115, 105, 110, 99, 101, 105, 102, 45, 110, 111, 110,
101, 45, 109, 97, 116, 99, 104, 105, 102, 45, 114, 97, 110, 103, 101,
105, 102, 45, 117, 110, 109, 111, 100, 105, 102, 105, 101, 100, 45, 115,
105, 110, 99, 101, 108, 97, 115, 116, 45, 109, 111, 100, 105, 102, 105,
101, 100, 108, 105, 110, 107, 108, 111, 99, 97, 116, 105, 111, 110, 109,
97, 120, 45, 102, 111, 114, 119, 97, 114, 100, 115, 112, 114, 111, 120,
121, 45, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 101, 112,
114, 111, 120, 121, 45, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116,
105, 111, 110, 114, 97, 110, 103, 101, 114, 101, 102, 101, 114, 101, 114,
114, 101, 102, 114, 101, 115, 104, 114, 101, 116, 114, 121, 45, 97, 102,
116, 101, 114, 115, 101, 114, 118, 101, 114, 115, 101, 116, 45, 99, 111,
111, 107, 105, 101, 115, 116, 114, 105, 99, 116, 45, 116, 114, 97, 110,
115, 112, 111, 114, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 116,
114, 97, 110, 115, 102, 101, 114, 45, 101, 110, 99, 111, 100, 105, 110,
103, 118, 97, 114, 121, 118, 105, 97, 119, 119, 119, 45, 97, 117, 116,
104, 101, 110, 116, 105, 99, 97, 116, 101, 48, 105, 100, 101, 110, 116,
105, 116, 121, 116, 114, 97, 105, 108, 101, 114, 115, 97, 112, 112, 108,
105, 99, 97, 116, 105, 111, 110, 47, 103, 114, 112, 99, 103, 114, 112,
99, 80, 85, 84, 108, 98, 45, 99, 111, 115, 116, 45, 98, 105, 110,
105, 100, 101, 110, 116, 105, 116, 121, 44, 100, 101, 102, 108, 97, 116,
101, 105, 100, 101, 110, 116, 105, 116, 121, 44, 103, 122, 105, 112, 100,
101, 102, 108, 97, 116, 101, 44, 103, 122, 105, 112, 105, 100, 101, 110,
116, 105, 116, 121, 44, 100, 101, 102, 108, 97, 116, 101, 44, 103, 122,
105, 112};
static grpc_slice_refcount static_sub_refcnt;
grpc_slice_refcount grpc_static_metadata_refcounts[GRPC_STATIC_MDSTR_COUNT] = {
@ -224,7 +224,6 @@ grpc_slice_refcount grpc_static_metadata_refcounts[GRPC_STATIC_MDSTR_COUNT] = {
grpc_slice_refcount(&static_sub_refcnt, grpc_slice_refcount::Type::STATIC),
grpc_slice_refcount(&static_sub_refcnt, grpc_slice_refcount::Type::STATIC),
grpc_slice_refcount(&static_sub_refcnt, grpc_slice_refcount::Type::STATIC),
grpc_slice_refcount(&static_sub_refcnt, grpc_slice_refcount::Type::STATIC),
};
const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {
@ -249,92 +248,91 @@ const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {
{&grpc_static_metadata_refcounts[18], {{37, g_bytes + 231}}},
{&grpc_static_metadata_refcounts[19], {{10, g_bytes + 268}}},
{&grpc_static_metadata_refcounts[20], {{4, g_bytes + 278}}},
{&grpc_static_metadata_refcounts[21], {{8, g_bytes + 282}}},
{&grpc_static_metadata_refcounts[22], {{26, g_bytes + 290}}},
{&grpc_static_metadata_refcounts[23], {{22, g_bytes + 316}}},
{&grpc_static_metadata_refcounts[24], {{12, g_bytes + 338}}},
{&grpc_static_metadata_refcounts[25], {{1, g_bytes + 350}}},
{&grpc_static_metadata_refcounts[26], {{1, g_bytes + 351}}},
{&grpc_static_metadata_refcounts[27], {{1, g_bytes + 352}}},
{&grpc_static_metadata_refcounts[28], {{1, g_bytes + 353}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}},
{&grpc_static_metadata_refcounts[30], {{19, g_bytes + 354}}},
{&grpc_static_metadata_refcounts[31], {{12, g_bytes + 373}}},
{&grpc_static_metadata_refcounts[32], {{30, g_bytes + 385}}},
{&grpc_static_metadata_refcounts[33], {{31, g_bytes + 415}}},
{&grpc_static_metadata_refcounts[34], {{36, g_bytes + 446}}},
{&grpc_static_metadata_refcounts[35], {{28, g_bytes + 482}}},
{&grpc_static_metadata_refcounts[36], {{80, g_bytes + 510}}},
{&grpc_static_metadata_refcounts[37], {{7, g_bytes + 590}}},
{&grpc_static_metadata_refcounts[38], {{4, g_bytes + 597}}},
{&grpc_static_metadata_refcounts[39], {{11, g_bytes + 601}}},
{&grpc_static_metadata_refcounts[40], {{3, g_bytes + 612}}},
{&grpc_static_metadata_refcounts[41], {{4, g_bytes + 615}}},
{&grpc_static_metadata_refcounts[42], {{1, g_bytes + 619}}},
{&grpc_static_metadata_refcounts[43], {{11, g_bytes + 620}}},
{&grpc_static_metadata_refcounts[44], {{4, g_bytes + 631}}},
{&grpc_static_metadata_refcounts[45], {{5, g_bytes + 635}}},
{&grpc_static_metadata_refcounts[46], {{3, g_bytes + 640}}},
{&grpc_static_metadata_refcounts[47], {{3, g_bytes + 643}}},
{&grpc_static_metadata_refcounts[48], {{3, g_bytes + 646}}},
{&grpc_static_metadata_refcounts[49], {{3, g_bytes + 649}}},
{&grpc_static_metadata_refcounts[50], {{3, g_bytes + 652}}},
{&grpc_static_metadata_refcounts[51], {{3, g_bytes + 655}}},
{&grpc_static_metadata_refcounts[52], {{3, g_bytes + 658}}},
{&grpc_static_metadata_refcounts[53], {{14, g_bytes + 661}}},
{&grpc_static_metadata_refcounts[54], {{13, g_bytes + 675}}},
{&grpc_static_metadata_refcounts[55], {{15, g_bytes + 688}}},
{&grpc_static_metadata_refcounts[56], {{13, g_bytes + 703}}},
{&grpc_static_metadata_refcounts[57], {{6, g_bytes + 716}}},
{&grpc_static_metadata_refcounts[58], {{27, g_bytes + 722}}},
{&grpc_static_metadata_refcounts[59], {{3, g_bytes + 749}}},
{&grpc_static_metadata_refcounts[60], {{5, g_bytes + 752}}},
{&grpc_static_metadata_refcounts[61], {{13, g_bytes + 757}}},
{&grpc_static_metadata_refcounts[62], {{13, g_bytes + 770}}},
{&grpc_static_metadata_refcounts[63], {{19, g_bytes + 783}}},
{&grpc_static_metadata_refcounts[64], {{16, g_bytes + 802}}},
{&grpc_static_metadata_refcounts[65], {{14, g_bytes + 818}}},
{&grpc_static_metadata_refcounts[66], {{16, g_bytes + 832}}},
{&grpc_static_metadata_refcounts[67], {{13, g_bytes + 848}}},
{&grpc_static_metadata_refcounts[68], {{6, g_bytes + 861}}},
{&grpc_static_metadata_refcounts[69], {{4, g_bytes + 867}}},
{&grpc_static_metadata_refcounts[70], {{4, g_bytes + 871}}},
{&grpc_static_metadata_refcounts[71], {{6, g_bytes + 875}}},
{&grpc_static_metadata_refcounts[72], {{7, g_bytes + 881}}},
{&grpc_static_metadata_refcounts[73], {{4, g_bytes + 888}}},
{&grpc_static_metadata_refcounts[74], {{8, g_bytes + 892}}},
{&grpc_static_metadata_refcounts[75], {{17, g_bytes + 900}}},
{&grpc_static_metadata_refcounts[76], {{13, g_bytes + 917}}},
{&grpc_static_metadata_refcounts[77], {{8, g_bytes + 930}}},
{&grpc_static_metadata_refcounts[78], {{19, g_bytes + 938}}},
{&grpc_static_metadata_refcounts[79], {{13, g_bytes + 957}}},
{&grpc_static_metadata_refcounts[80], {{4, g_bytes + 970}}},
{&grpc_static_metadata_refcounts[81], {{8, g_bytes + 974}}},
{&grpc_static_metadata_refcounts[82], {{12, g_bytes + 982}}},
{&grpc_static_metadata_refcounts[83], {{18, g_bytes + 994}}},
{&grpc_static_metadata_refcounts[84], {{19, g_bytes + 1012}}},
{&grpc_static_metadata_refcounts[85], {{5, g_bytes + 1031}}},
{&grpc_static_metadata_refcounts[86], {{7, g_bytes + 1036}}},
{&grpc_static_metadata_refcounts[87], {{7, g_bytes + 1043}}},
{&grpc_static_metadata_refcounts[88], {{11, g_bytes + 1050}}},
{&grpc_static_metadata_refcounts[89], {{6, g_bytes + 1061}}},
{&grpc_static_metadata_refcounts[90], {{10, g_bytes + 1067}}},
{&grpc_static_metadata_refcounts[91], {{25, g_bytes + 1077}}},
{&grpc_static_metadata_refcounts[92], {{17, g_bytes + 1102}}},
{&grpc_static_metadata_refcounts[93], {{4, g_bytes + 1119}}},
{&grpc_static_metadata_refcounts[94], {{3, g_bytes + 1123}}},
{&grpc_static_metadata_refcounts[95], {{16, g_bytes + 1126}}},
{&grpc_static_metadata_refcounts[96], {{1, g_bytes + 1142}}},
{&grpc_static_metadata_refcounts[21], {{26, g_bytes + 282}}},
{&grpc_static_metadata_refcounts[22], {{22, g_bytes + 308}}},
{&grpc_static_metadata_refcounts[23], {{12, g_bytes + 330}}},
{&grpc_static_metadata_refcounts[24], {{1, g_bytes + 342}}},
{&grpc_static_metadata_refcounts[25], {{1, g_bytes + 343}}},
{&grpc_static_metadata_refcounts[26], {{1, g_bytes + 344}}},
{&grpc_static_metadata_refcounts[27], {{1, g_bytes + 345}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}},
{&grpc_static_metadata_refcounts[29], {{19, g_bytes + 346}}},
{&grpc_static_metadata_refcounts[30], {{12, g_bytes + 365}}},
{&grpc_static_metadata_refcounts[31], {{30, g_bytes + 377}}},
{&grpc_static_metadata_refcounts[32], {{31, g_bytes + 407}}},
{&grpc_static_metadata_refcounts[33], {{36, g_bytes + 438}}},
{&grpc_static_metadata_refcounts[34], {{28, g_bytes + 474}}},
{&grpc_static_metadata_refcounts[35], {{80, g_bytes + 502}}},
{&grpc_static_metadata_refcounts[36], {{7, g_bytes + 582}}},
{&grpc_static_metadata_refcounts[37], {{4, g_bytes + 589}}},
{&grpc_static_metadata_refcounts[38], {{11, g_bytes + 593}}},
{&grpc_static_metadata_refcounts[39], {{3, g_bytes + 604}}},
{&grpc_static_metadata_refcounts[40], {{4, g_bytes + 607}}},
{&grpc_static_metadata_refcounts[41], {{1, g_bytes + 611}}},
{&grpc_static_metadata_refcounts[42], {{11, g_bytes + 612}}},
{&grpc_static_metadata_refcounts[43], {{4, g_bytes + 623}}},
{&grpc_static_metadata_refcounts[44], {{5, g_bytes + 627}}},
{&grpc_static_metadata_refcounts[45], {{3, g_bytes + 632}}},
{&grpc_static_metadata_refcounts[46], {{3, g_bytes + 635}}},
{&grpc_static_metadata_refcounts[47], {{3, g_bytes + 638}}},
{&grpc_static_metadata_refcounts[48], {{3, g_bytes + 641}}},
{&grpc_static_metadata_refcounts[49], {{3, g_bytes + 644}}},
{&grpc_static_metadata_refcounts[50], {{3, g_bytes + 647}}},
{&grpc_static_metadata_refcounts[51], {{3, g_bytes + 650}}},
{&grpc_static_metadata_refcounts[52], {{14, g_bytes + 653}}},
{&grpc_static_metadata_refcounts[53], {{13, g_bytes + 667}}},
{&grpc_static_metadata_refcounts[54], {{15, g_bytes + 680}}},
{&grpc_static_metadata_refcounts[55], {{13, g_bytes + 695}}},
{&grpc_static_metadata_refcounts[56], {{6, g_bytes + 708}}},
{&grpc_static_metadata_refcounts[57], {{27, g_bytes + 714}}},
{&grpc_static_metadata_refcounts[58], {{3, g_bytes + 741}}},
{&grpc_static_metadata_refcounts[59], {{5, g_bytes + 744}}},
{&grpc_static_metadata_refcounts[60], {{13, g_bytes + 749}}},
{&grpc_static_metadata_refcounts[61], {{13, g_bytes + 762}}},
{&grpc_static_metadata_refcounts[62], {{19, g_bytes + 775}}},
{&grpc_static_metadata_refcounts[63], {{16, g_bytes + 794}}},
{&grpc_static_metadata_refcounts[64], {{14, g_bytes + 810}}},
{&grpc_static_metadata_refcounts[65], {{16, g_bytes + 824}}},
{&grpc_static_metadata_refcounts[66], {{13, g_bytes + 840}}},
{&grpc_static_metadata_refcounts[67], {{6, g_bytes + 853}}},
{&grpc_static_metadata_refcounts[68], {{4, g_bytes + 859}}},
{&grpc_static_metadata_refcounts[69], {{4, g_bytes + 863}}},
{&grpc_static_metadata_refcounts[70], {{6, g_bytes + 867}}},
{&grpc_static_metadata_refcounts[71], {{7, g_bytes + 873}}},
{&grpc_static_metadata_refcounts[72], {{4, g_bytes + 880}}},
{&grpc_static_metadata_refcounts[73], {{8, g_bytes + 884}}},
{&grpc_static_metadata_refcounts[74], {{17, g_bytes + 892}}},
{&grpc_static_metadata_refcounts[75], {{13, g_bytes + 909}}},
{&grpc_static_metadata_refcounts[76], {{8, g_bytes + 922}}},
{&grpc_static_metadata_refcounts[77], {{19, g_bytes + 930}}},
{&grpc_static_metadata_refcounts[78], {{13, g_bytes + 949}}},
{&grpc_static_metadata_refcounts[79], {{4, g_bytes + 962}}},
{&grpc_static_metadata_refcounts[80], {{8, g_bytes + 966}}},
{&grpc_static_metadata_refcounts[81], {{12, g_bytes + 974}}},
{&grpc_static_metadata_refcounts[82], {{18, g_bytes + 986}}},
{&grpc_static_metadata_refcounts[83], {{19, g_bytes + 1004}}},
{&grpc_static_metadata_refcounts[84], {{5, g_bytes + 1023}}},
{&grpc_static_metadata_refcounts[85], {{7, g_bytes + 1028}}},
{&grpc_static_metadata_refcounts[86], {{7, g_bytes + 1035}}},
{&grpc_static_metadata_refcounts[87], {{11, g_bytes + 1042}}},
{&grpc_static_metadata_refcounts[88], {{6, g_bytes + 1053}}},
{&grpc_static_metadata_refcounts[89], {{10, g_bytes + 1059}}},
{&grpc_static_metadata_refcounts[90], {{25, g_bytes + 1069}}},
{&grpc_static_metadata_refcounts[91], {{17, g_bytes + 1094}}},
{&grpc_static_metadata_refcounts[92], {{4, g_bytes + 1111}}},
{&grpc_static_metadata_refcounts[93], {{3, g_bytes + 1115}}},
{&grpc_static_metadata_refcounts[94], {{16, g_bytes + 1118}}},
{&grpc_static_metadata_refcounts[95], {{1, g_bytes + 1134}}},
{&grpc_static_metadata_refcounts[96], {{8, g_bytes + 1135}}},
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}},
{&grpc_static_metadata_refcounts[98], {{8, g_bytes + 1151}}},
{&grpc_static_metadata_refcounts[99], {{16, g_bytes + 1159}}},
{&grpc_static_metadata_refcounts[100], {{4, g_bytes + 1175}}},
{&grpc_static_metadata_refcounts[101], {{3, g_bytes + 1179}}},
{&grpc_static_metadata_refcounts[102], {{11, g_bytes + 1182}}},
{&grpc_static_metadata_refcounts[103], {{16, g_bytes + 1193}}},
{&grpc_static_metadata_refcounts[104], {{13, g_bytes + 1209}}},
{&grpc_static_metadata_refcounts[105], {{12, g_bytes + 1222}}},
{&grpc_static_metadata_refcounts[106], {{21, g_bytes + 1234}}},
{&grpc_static_metadata_refcounts[98], {{16, g_bytes + 1151}}},
{&grpc_static_metadata_refcounts[99], {{4, g_bytes + 1167}}},
{&grpc_static_metadata_refcounts[100], {{3, g_bytes + 1171}}},
{&grpc_static_metadata_refcounts[101], {{11, g_bytes + 1174}}},
{&grpc_static_metadata_refcounts[102], {{16, g_bytes + 1185}}},
{&grpc_static_metadata_refcounts[103], {{13, g_bytes + 1201}}},
{&grpc_static_metadata_refcounts[104], {{12, g_bytes + 1214}}},
{&grpc_static_metadata_refcounts[105], {{21, g_bytes + 1226}}},
};
/* Warning: the core static metadata currently operates under the soft
@ -716,65 +714,60 @@ grpc_mdelem grpc_static_mdelem_manifested[GRPC_STATIC_MDELEM_COUNT] = {
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[73].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_LB_TOKEN_EMPTY:
"lb-token": "" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[74].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_LB_COST_BIN_EMPTY:
"lb-cost-bin": "" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[75].data(),
&grpc_static_mdelem_table[74].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY:
"grpc-accept-encoding": "identity" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[76].data(),
&grpc_static_mdelem_table[75].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE:
"grpc-accept-encoding": "deflate" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[77].data(),
&grpc_static_mdelem_table[76].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE:
"grpc-accept-encoding": "identity,deflate" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[78].data(),
&grpc_static_mdelem_table[77].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_GZIP:
"grpc-accept-encoding": "gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[79].data(),
&grpc_static_mdelem_table[78].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP:
"grpc-accept-encoding": "identity,gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[80].data(),
&grpc_static_mdelem_table[79].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE_COMMA_GZIP:
"grpc-accept-encoding": "deflate,gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[81].data(),
&grpc_static_mdelem_table[80].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP:
"grpc-accept-encoding": "identity,deflate,gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[82].data(),
&grpc_static_mdelem_table[81].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY:
"accept-encoding": "identity" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[83].data(),
&grpc_static_mdelem_table[82].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_ACCEPT_ENCODING_GZIP:
"accept-encoding": "gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[84].data(),
&grpc_static_mdelem_table[83].data(),
GRPC_MDELEM_STORAGE_STATIC),
/* GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP:
"accept-encoding": "identity,gzip" */
GRPC_MAKE_MDELEM(
&grpc_static_mdelem_table[85].data(),
&grpc_static_mdelem_table[84].data(),
GRPC_MDELEM_STORAGE_STATIC)
// clang-format on
};
@ -782,20 +775,20 @@ uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 8, 2, 4, 4};
0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 8, 2, 4, 4};
static const int8_t elems_r[] = {
15, 10, -8, 0, 2, -42, -81, -43, 0, 6, -8, 0, 0, 0, 2,
-3, -10, 0, 0, 1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, -64, 0, -67, -68, -69, -70, 0,
35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21,
20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6,
5, 4, 5, 4, 4, 8, 8, 0, 0, 0, 0, 0, 0, -5, 0};
15, 10, -8, 0, 2, -42, -80, -43, 0, 6, -8, 0, 0, 0, 2,
-3, -10, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, -63, 0, -47, -68, -69, -70, -52, 0,
31, 30, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18,
18, 17, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5,
4, 3, 4, 3, 3, 7, 0, 0, 0, 0, 0, 0, -5, 0};
static uint32_t elems_phash(uint32_t i) {
i -= 42;
uint32_t x = i % 105;
uint32_t y = i / 105;
i -= 41;
uint32_t x = i % 104;
uint32_t y = i / 104;
uint32_t h = x;
if (y < GPR_ARRAY_SIZE(elems_r)) {
uint32_t delta = (uint32_t)elems_r[y];
@ -805,29 +798,28 @@ static uint32_t elems_phash(uint32_t i) {
}
static const uint16_t elem_keys[] = {
260, 261, 262, 263, 264, 265, 266, 1107, 1108, 1741, 147, 148,
472, 473, 1634, 42, 43, 1527, 1750, 1000, 1001, 774, 775, 1643,
633, 845, 2062, 2169, 2276, 5700, 5914, 6021, 6128, 6235, 1766, 6342,
6449, 6556, 6663, 6770, 6877, 6984, 7091, 7198, 7305, 7412, 7519, 7626,
7733, 7840, 7947, 8054, 8161, 8268, 8375, 8482, 8589, 8696, 8803, 8910,
9017, 9124, 9231, 9338, 9445, 9552, 9659, 1167, 528, 9766, 9873, 208,
9980, 1173, 1174, 1175, 1176, 1809, 10087, 1060, 10194, 10943, 1702, 0,
1816, 0, 0, 1597, 0, 0, 350, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0};
257, 258, 259, 260, 261, 262, 263, 1096, 1097, 1724, 145, 146,
467, 468, 1618, 41, 42, 1512, 1733, 990, 991, 766, 767, 1627,
627, 837, 2042, 2148, 5540, 5858, 5964, 6070, 6282, 6388, 1749, 6494,
6600, 6706, 6812, 6918, 7024, 7130, 7236, 7342, 7448, 7554, 7660, 7766,
5752, 7872, 7978, 6176, 8084, 8190, 8296, 8402, 8508, 8614, 8720, 8826,
8932, 9038, 9144, 9250, 9356, 9462, 9568, 1156, 523, 9674, 9780, 206,
9886, 1162, 1163, 1164, 1165, 1792, 9992, 1050, 10734, 0, 1686, 0,
1799, 0, 0, 1582, 0, 346, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0};
static const uint8_t elem_idxs[] = {
7, 8, 9, 10, 11, 12, 13, 77, 79, 71, 1, 2, 5, 6, 25, 3,
4, 30, 84, 66, 65, 62, 63, 73, 67, 61, 57, 37, 74, 14, 16, 17,
18, 19, 15, 20, 21, 22, 23, 24, 26, 27, 28, 29, 31, 32, 33, 34,
35, 36, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 76, 69, 55, 56, 70, 58, 78, 80, 81, 82, 83, 59, 64,
60, 75, 72, 255, 85, 255, 255, 68, 255, 255, 0};
7, 8, 9, 10, 11, 12, 13, 76, 78, 71, 1, 2, 5, 6, 25, 3, 4, 30,
83, 66, 65, 62, 63, 73, 67, 61, 57, 37, 14, 17, 18, 19, 21, 22, 15, 23,
24, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 38, 16, 39, 40, 20, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 75, 69, 56, 58, 70,
59, 77, 79, 80, 81, 82, 60, 64, 74, 255, 72, 255, 84, 255, 255, 68, 255, 0};
grpc_mdelem grpc_static_mdelem_for_static_strings(intptr_t a, intptr_t b) {
if (a == -1 || b == -1) return GRPC_MDNULL;
uint32_t k = static_cast<uint32_t>(a * 107 + b);
uint32_t k = static_cast<uint32_t>(a * 106 + b);
uint32_t h = elems_phash(k);
return h < GPR_ARRAY_SIZE(elem_keys) && elem_keys[h] == k &&
elem_idxs[h] != 255
@ -839,264 +831,261 @@ grpc_mdelem grpc_static_mdelem_for_static_strings(intptr_t a, intptr_t b) {
grpc_core::StaticMetadata grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT] = {
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[3], {{10, g_bytes + 19}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 0),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 0),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[1], {{7, g_bytes + 5}}},
{&grpc_static_metadata_refcounts[40], {{3, g_bytes + 612}}}, 1),
{&grpc_static_metadata_refcounts[39], {{3, g_bytes + 604}}}, 1),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[1], {{7, g_bytes + 5}}},
{&grpc_static_metadata_refcounts[41], {{4, g_bytes + 615}}}, 2),
{&grpc_static_metadata_refcounts[40], {{4, g_bytes + 607}}}, 2),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[0], {{5, g_bytes + 0}}},
{&grpc_static_metadata_refcounts[42], {{1, g_bytes + 619}}}, 3),
{&grpc_static_metadata_refcounts[41], {{1, g_bytes + 611}}}, 3),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[0], {{5, g_bytes + 0}}},
{&grpc_static_metadata_refcounts[43], {{11, g_bytes + 620}}}, 4),
{&grpc_static_metadata_refcounts[42], {{11, g_bytes + 612}}}, 4),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[4], {{7, g_bytes + 29}}},
{&grpc_static_metadata_refcounts[44], {{4, g_bytes + 631}}}, 5),
{&grpc_static_metadata_refcounts[43], {{4, g_bytes + 623}}}, 5),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[4], {{7, g_bytes + 29}}},
{&grpc_static_metadata_refcounts[45], {{5, g_bytes + 635}}}, 6),
{&grpc_static_metadata_refcounts[44], {{5, g_bytes + 627}}}, 6),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[46], {{3, g_bytes + 640}}}, 7),
{&grpc_static_metadata_refcounts[45], {{3, g_bytes + 632}}}, 7),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[47], {{3, g_bytes + 643}}}, 8),
{&grpc_static_metadata_refcounts[46], {{3, g_bytes + 635}}}, 8),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[48], {{3, g_bytes + 646}}}, 9),
{&grpc_static_metadata_refcounts[47], {{3, g_bytes + 638}}}, 9),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[49], {{3, g_bytes + 649}}}, 10),
{&grpc_static_metadata_refcounts[48], {{3, g_bytes + 641}}}, 10),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[50], {{3, g_bytes + 652}}}, 11),
{&grpc_static_metadata_refcounts[49], {{3, g_bytes + 644}}}, 11),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[51], {{3, g_bytes + 655}}}, 12),
{&grpc_static_metadata_refcounts[50], {{3, g_bytes + 647}}}, 12),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[2], {{7, g_bytes + 12}}},
{&grpc_static_metadata_refcounts[52], {{3, g_bytes + 658}}}, 13),
{&grpc_static_metadata_refcounts[51], {{3, g_bytes + 650}}}, 13),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[53], {{14, g_bytes + 661}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 14),
{&grpc_static_metadata_refcounts[52], {{14, g_bytes + 653}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 14),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[16], {{15, g_bytes + 186}}},
{&grpc_static_metadata_refcounts[54], {{13, g_bytes + 675}}}, 15),
{&grpc_static_metadata_refcounts[53], {{13, g_bytes + 667}}}, 15),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[55], {{15, g_bytes + 688}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 16),
{&grpc_static_metadata_refcounts[54], {{15, g_bytes + 680}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 16),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[56], {{13, g_bytes + 703}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 17),
{&grpc_static_metadata_refcounts[55], {{13, g_bytes + 695}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 17),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[57], {{6, g_bytes + 716}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 18),
{&grpc_static_metadata_refcounts[56], {{6, g_bytes + 708}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 18),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[58], {{27, g_bytes + 722}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 19),
{&grpc_static_metadata_refcounts[57], {{27, g_bytes + 714}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 19),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[59], {{3, g_bytes + 749}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 20),
{&grpc_static_metadata_refcounts[58], {{3, g_bytes + 741}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 20),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[60], {{5, g_bytes + 752}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 21),
{&grpc_static_metadata_refcounts[59], {{5, g_bytes + 744}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 21),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[61], {{13, g_bytes + 757}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 22),
{&grpc_static_metadata_refcounts[60], {{13, g_bytes + 749}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 22),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[62], {{13, g_bytes + 770}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 23),
{&grpc_static_metadata_refcounts[61], {{13, g_bytes + 762}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 23),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[63], {{19, g_bytes + 783}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 24),
{&grpc_static_metadata_refcounts[62], {{19, g_bytes + 775}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 24),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[15], {{16, g_bytes + 170}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 25),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 25),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[64], {{16, g_bytes + 802}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 26),
{&grpc_static_metadata_refcounts[63], {{16, g_bytes + 794}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 26),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[65], {{14, g_bytes + 818}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 27),
{&grpc_static_metadata_refcounts[64], {{14, g_bytes + 810}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 27),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[66], {{16, g_bytes + 832}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 28),
{&grpc_static_metadata_refcounts[65], {{16, g_bytes + 824}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 28),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[67], {{13, g_bytes + 848}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 29),
{&grpc_static_metadata_refcounts[66], {{13, g_bytes + 840}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 29),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[14], {{12, g_bytes + 158}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 30),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 30),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[68], {{6, g_bytes + 861}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 31),
{&grpc_static_metadata_refcounts[67], {{6, g_bytes + 853}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 31),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[69], {{4, g_bytes + 867}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 32),
{&grpc_static_metadata_refcounts[68], {{4, g_bytes + 859}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 32),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[70], {{4, g_bytes + 871}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 33),
{&grpc_static_metadata_refcounts[69], {{4, g_bytes + 863}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 33),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[71], {{6, g_bytes + 875}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 34),
{&grpc_static_metadata_refcounts[70], {{6, g_bytes + 867}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 34),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[72], {{7, g_bytes + 881}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 35),
{&grpc_static_metadata_refcounts[71], {{7, g_bytes + 873}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 35),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[73], {{4, g_bytes + 888}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 36),
{&grpc_static_metadata_refcounts[72], {{4, g_bytes + 880}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 36),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[20], {{4, g_bytes + 278}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 37),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 37),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[74], {{8, g_bytes + 892}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 38),
{&grpc_static_metadata_refcounts[73], {{8, g_bytes + 884}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 38),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[75], {{17, g_bytes + 900}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 39),
{&grpc_static_metadata_refcounts[74], {{17, g_bytes + 892}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 39),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[76], {{13, g_bytes + 917}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 40),
{&grpc_static_metadata_refcounts[75], {{13, g_bytes + 909}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 40),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[77], {{8, g_bytes + 930}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 41),
{&grpc_static_metadata_refcounts[76], {{8, g_bytes + 922}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 41),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[78], {{19, g_bytes + 938}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 42),
{&grpc_static_metadata_refcounts[77], {{19, g_bytes + 930}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 42),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[79], {{13, g_bytes + 957}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 43),
{&grpc_static_metadata_refcounts[78], {{13, g_bytes + 949}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 43),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[80], {{4, g_bytes + 970}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 44),
{&grpc_static_metadata_refcounts[79], {{4, g_bytes + 962}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 44),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[81], {{8, g_bytes + 974}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 45),
{&grpc_static_metadata_refcounts[80], {{8, g_bytes + 966}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 45),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[82], {{12, g_bytes + 982}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 46),
{&grpc_static_metadata_refcounts[81], {{12, g_bytes + 974}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 46),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[83], {{18, g_bytes + 994}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 47),
{&grpc_static_metadata_refcounts[82], {{18, g_bytes + 986}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 47),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[84], {{19, g_bytes + 1012}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 48),
{&grpc_static_metadata_refcounts[83], {{19, g_bytes + 1004}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 48),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[85], {{5, g_bytes + 1031}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 49),
{&grpc_static_metadata_refcounts[84], {{5, g_bytes + 1023}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 49),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[86], {{7, g_bytes + 1036}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 50),
{&grpc_static_metadata_refcounts[85], {{7, g_bytes + 1028}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 50),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[87], {{7, g_bytes + 1043}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 51),
{&grpc_static_metadata_refcounts[86], {{7, g_bytes + 1035}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 51),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[88], {{11, g_bytes + 1050}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 52),
{&grpc_static_metadata_refcounts[87], {{11, g_bytes + 1042}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 52),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[89], {{6, g_bytes + 1061}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 53),
{&grpc_static_metadata_refcounts[88], {{6, g_bytes + 1053}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 53),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[90], {{10, g_bytes + 1067}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 54),
{&grpc_static_metadata_refcounts[89], {{10, g_bytes + 1059}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 54),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[91], {{25, g_bytes + 1077}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 55),
{&grpc_static_metadata_refcounts[90], {{25, g_bytes + 1069}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 55),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[92], {{17, g_bytes + 1102}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 56),
{&grpc_static_metadata_refcounts[91], {{17, g_bytes + 1094}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 56),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[19], {{10, g_bytes + 268}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 57),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 57),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[93], {{4, g_bytes + 1119}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 58),
{&grpc_static_metadata_refcounts[92], {{4, g_bytes + 1111}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 58),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[94], {{3, g_bytes + 1123}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 59),
{&grpc_static_metadata_refcounts[93], {{3, g_bytes + 1115}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 59),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[95], {{16, g_bytes + 1126}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 60),
{&grpc_static_metadata_refcounts[94], {{16, g_bytes + 1118}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 60),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[7], {{11, g_bytes + 50}}},
{&grpc_static_metadata_refcounts[96], {{1, g_bytes + 1142}}}, 61),
{&grpc_static_metadata_refcounts[95], {{1, g_bytes + 1134}}}, 61),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[7], {{11, g_bytes + 50}}},
{&grpc_static_metadata_refcounts[25], {{1, g_bytes + 350}}}, 62),
{&grpc_static_metadata_refcounts[24], {{1, g_bytes + 342}}}, 62),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[7], {{11, g_bytes + 50}}},
{&grpc_static_metadata_refcounts[26], {{1, g_bytes + 351}}}, 63),
{&grpc_static_metadata_refcounts[25], {{1, g_bytes + 343}}}, 63),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[9], {{13, g_bytes + 77}}},
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}}, 64),
{&grpc_static_metadata_refcounts[96], {{8, g_bytes + 1135}}}, 64),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[9], {{13, g_bytes + 77}}},
{&grpc_static_metadata_refcounts[38], {{4, g_bytes + 597}}}, 65),
{&grpc_static_metadata_refcounts[37], {{4, g_bytes + 589}}}, 65),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[9], {{13, g_bytes + 77}}},
{&grpc_static_metadata_refcounts[37], {{7, g_bytes + 590}}}, 66),
{&grpc_static_metadata_refcounts[36], {{7, g_bytes + 582}}}, 66),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[5], {{2, g_bytes + 36}}},
{&grpc_static_metadata_refcounts[98], {{8, g_bytes + 1151}}}, 67),
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}}, 67),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[14], {{12, g_bytes + 158}}},
{&grpc_static_metadata_refcounts[99], {{16, g_bytes + 1159}}}, 68),
{&grpc_static_metadata_refcounts[98], {{16, g_bytes + 1151}}}, 68),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[4], {{7, g_bytes + 29}}},
{&grpc_static_metadata_refcounts[100], {{4, g_bytes + 1175}}}, 69),
{&grpc_static_metadata_refcounts[99], {{4, g_bytes + 1167}}}, 69),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[1], {{7, g_bytes + 5}}},
{&grpc_static_metadata_refcounts[101], {{3, g_bytes + 1179}}}, 70),
{&grpc_static_metadata_refcounts[100], {{3, g_bytes + 1171}}}, 70),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[16], {{15, g_bytes + 186}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 71),
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 71),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[15], {{16, g_bytes + 170}}},
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}}, 72),
{&grpc_static_metadata_refcounts[96], {{8, g_bytes + 1135}}}, 72),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[15], {{16, g_bytes + 170}}},
{&grpc_static_metadata_refcounts[38], {{4, g_bytes + 597}}}, 73),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[21], {{8, g_bytes + 282}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 74),
{&grpc_static_metadata_refcounts[37], {{4, g_bytes + 589}}}, 73),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[102], {{11, g_bytes + 1182}}},
{&grpc_static_metadata_refcounts[29], {{0, g_bytes + 354}}}, 75),
{&grpc_static_metadata_refcounts[101], {{11, g_bytes + 1174}}},
{&grpc_static_metadata_refcounts[28], {{0, g_bytes + 346}}}, 74),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}}, 76),
{&grpc_static_metadata_refcounts[96], {{8, g_bytes + 1135}}}, 75),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[37], {{7, g_bytes + 590}}}, 77),
{&grpc_static_metadata_refcounts[36], {{7, g_bytes + 582}}}, 76),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[103], {{16, g_bytes + 1193}}}, 78),
{&grpc_static_metadata_refcounts[102], {{16, g_bytes + 1185}}}, 77),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[38], {{4, g_bytes + 597}}}, 79),
{&grpc_static_metadata_refcounts[37], {{4, g_bytes + 589}}}, 78),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[104], {{13, g_bytes + 1209}}}, 80),
{&grpc_static_metadata_refcounts[103], {{13, g_bytes + 1201}}}, 79),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[105], {{12, g_bytes + 1222}}}, 81),
{&grpc_static_metadata_refcounts[104], {{12, g_bytes + 1214}}}, 80),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[10], {{20, g_bytes + 90}}},
{&grpc_static_metadata_refcounts[106], {{21, g_bytes + 1234}}}, 82),
{&grpc_static_metadata_refcounts[105], {{21, g_bytes + 1226}}}, 81),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[16], {{15, g_bytes + 186}}},
{&grpc_static_metadata_refcounts[97], {{8, g_bytes + 1143}}}, 83),
{&grpc_static_metadata_refcounts[96], {{8, g_bytes + 1135}}}, 82),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[16], {{15, g_bytes + 186}}},
{&grpc_static_metadata_refcounts[38], {{4, g_bytes + 597}}}, 84),
{&grpc_static_metadata_refcounts[37], {{4, g_bytes + 589}}}, 83),
grpc_core::StaticMetadata(
{&grpc_static_metadata_refcounts[16], {{15, g_bytes + 186}}},
{&grpc_static_metadata_refcounts[104], {{13, g_bytes + 1209}}}, 85),
{&grpc_static_metadata_refcounts[103], {{13, g_bytes + 1201}}}, 84),
};
const uint8_t grpc_static_accept_encoding_metadata[8] = {0, 76, 77, 78,
79, 80, 81, 82};
const uint8_t grpc_static_accept_encoding_metadata[8] = {0, 75, 76, 77,
78, 79, 80, 81};
const uint8_t grpc_static_accept_stream_encoding_metadata[4] = {0, 83, 84, 85};
const uint8_t grpc_static_accept_stream_encoding_metadata[4] = {0, 82, 83, 84};

@ -33,7 +33,7 @@
#include "src/core/lib/transport/metadata.h"
#define GRPC_STATIC_MDSTR_COUNT 107
#define GRPC_STATIC_MDSTR_COUNT 106
extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT];
/* ":path" */
#define GRPC_MDSTR_PATH (grpc_static_slice_table[0])
@ -78,185 +78,183 @@ extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT];
#define GRPC_MDSTR_USER_AGENT (grpc_static_slice_table[19])
/* "host" */
#define GRPC_MDSTR_HOST (grpc_static_slice_table[20])
/* "lb-token" */
#define GRPC_MDSTR_LB_TOKEN (grpc_static_slice_table[21])
/* "grpc-previous-rpc-attempts" */
#define GRPC_MDSTR_GRPC_PREVIOUS_RPC_ATTEMPTS (grpc_static_slice_table[22])
#define GRPC_MDSTR_GRPC_PREVIOUS_RPC_ATTEMPTS (grpc_static_slice_table[21])
/* "grpc-retry-pushback-ms" */
#define GRPC_MDSTR_GRPC_RETRY_PUSHBACK_MS (grpc_static_slice_table[23])
#define GRPC_MDSTR_GRPC_RETRY_PUSHBACK_MS (grpc_static_slice_table[22])
/* "grpc-timeout" */
#define GRPC_MDSTR_GRPC_TIMEOUT (grpc_static_slice_table[24])
#define GRPC_MDSTR_GRPC_TIMEOUT (grpc_static_slice_table[23])
/* "1" */
#define GRPC_MDSTR_1 (grpc_static_slice_table[25])
#define GRPC_MDSTR_1 (grpc_static_slice_table[24])
/* "2" */
#define GRPC_MDSTR_2 (grpc_static_slice_table[26])
#define GRPC_MDSTR_2 (grpc_static_slice_table[25])
/* "3" */
#define GRPC_MDSTR_3 (grpc_static_slice_table[27])
#define GRPC_MDSTR_3 (grpc_static_slice_table[26])
/* "4" */
#define GRPC_MDSTR_4 (grpc_static_slice_table[28])
#define GRPC_MDSTR_4 (grpc_static_slice_table[27])
/* "" */
#define GRPC_MDSTR_EMPTY (grpc_static_slice_table[29])
#define GRPC_MDSTR_EMPTY (grpc_static_slice_table[28])
/* "grpc.wait_for_ready" */
#define GRPC_MDSTR_GRPC_DOT_WAIT_FOR_READY (grpc_static_slice_table[30])
#define GRPC_MDSTR_GRPC_DOT_WAIT_FOR_READY (grpc_static_slice_table[29])
/* "grpc.timeout" */
#define GRPC_MDSTR_GRPC_DOT_TIMEOUT (grpc_static_slice_table[31])
#define GRPC_MDSTR_GRPC_DOT_TIMEOUT (grpc_static_slice_table[30])
/* "grpc.max_request_message_bytes" */
#define GRPC_MDSTR_GRPC_DOT_MAX_REQUEST_MESSAGE_BYTES \
(grpc_static_slice_table[32])
(grpc_static_slice_table[31])
/* "grpc.max_response_message_bytes" */
#define GRPC_MDSTR_GRPC_DOT_MAX_RESPONSE_MESSAGE_BYTES \
(grpc_static_slice_table[33])
(grpc_static_slice_table[32])
/* "/grpc.lb.v1.LoadBalancer/BalanceLoad" */
#define GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD \
(grpc_static_slice_table[34])
(grpc_static_slice_table[33])
/* "/grpc.health.v1.Health/Watch" */
#define GRPC_MDSTR_SLASH_GRPC_DOT_HEALTH_DOT_V1_DOT_HEALTH_SLASH_WATCH \
(grpc_static_slice_table[35])
(grpc_static_slice_table[34])
/* "/envoy.service.discovery.v2.AggregatedDiscoveryService/StreamAggregatedResources"
*/
#define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V2_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES \
(grpc_static_slice_table[36])
(grpc_static_slice_table[35])
/* "deflate" */
#define GRPC_MDSTR_DEFLATE (grpc_static_slice_table[37])
#define GRPC_MDSTR_DEFLATE (grpc_static_slice_table[36])
/* "gzip" */
#define GRPC_MDSTR_GZIP (grpc_static_slice_table[38])
#define GRPC_MDSTR_GZIP (grpc_static_slice_table[37])
/* "stream/gzip" */
#define GRPC_MDSTR_STREAM_SLASH_GZIP (grpc_static_slice_table[39])
#define GRPC_MDSTR_STREAM_SLASH_GZIP (grpc_static_slice_table[38])
/* "GET" */
#define GRPC_MDSTR_GET (grpc_static_slice_table[40])
#define GRPC_MDSTR_GET (grpc_static_slice_table[39])
/* "POST" */
#define GRPC_MDSTR_POST (grpc_static_slice_table[41])
#define GRPC_MDSTR_POST (grpc_static_slice_table[40])
/* "/" */
#define GRPC_MDSTR_SLASH (grpc_static_slice_table[42])
#define GRPC_MDSTR_SLASH (grpc_static_slice_table[41])
/* "/index.html" */
#define GRPC_MDSTR_SLASH_INDEX_DOT_HTML (grpc_static_slice_table[43])
#define GRPC_MDSTR_SLASH_INDEX_DOT_HTML (grpc_static_slice_table[42])
/* "http" */
#define GRPC_MDSTR_HTTP (grpc_static_slice_table[44])
#define GRPC_MDSTR_HTTP (grpc_static_slice_table[43])
/* "https" */
#define GRPC_MDSTR_HTTPS (grpc_static_slice_table[45])
#define GRPC_MDSTR_HTTPS (grpc_static_slice_table[44])
/* "200" */
#define GRPC_MDSTR_200 (grpc_static_slice_table[46])
#define GRPC_MDSTR_200 (grpc_static_slice_table[45])
/* "204" */
#define GRPC_MDSTR_204 (grpc_static_slice_table[47])
#define GRPC_MDSTR_204 (grpc_static_slice_table[46])
/* "206" */
#define GRPC_MDSTR_206 (grpc_static_slice_table[48])
#define GRPC_MDSTR_206 (grpc_static_slice_table[47])
/* "304" */
#define GRPC_MDSTR_304 (grpc_static_slice_table[49])
#define GRPC_MDSTR_304 (grpc_static_slice_table[48])
/* "400" */
#define GRPC_MDSTR_400 (grpc_static_slice_table[50])
#define GRPC_MDSTR_400 (grpc_static_slice_table[49])
/* "404" */
#define GRPC_MDSTR_404 (grpc_static_slice_table[51])
#define GRPC_MDSTR_404 (grpc_static_slice_table[50])
/* "500" */
#define GRPC_MDSTR_500 (grpc_static_slice_table[52])
#define GRPC_MDSTR_500 (grpc_static_slice_table[51])
/* "accept-charset" */
#define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table[53])
#define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table[52])
/* "gzip, deflate" */
#define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table[54])
#define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table[53])
/* "accept-language" */
#define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table[55])
#define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table[54])
/* "accept-ranges" */
#define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table[56])
#define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table[55])
/* "accept" */
#define GRPC_MDSTR_ACCEPT (grpc_static_slice_table[57])
#define GRPC_MDSTR_ACCEPT (grpc_static_slice_table[56])
/* "access-control-allow-origin" */
#define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table[58])
#define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table[57])
/* "age" */
#define GRPC_MDSTR_AGE (grpc_static_slice_table[59])
#define GRPC_MDSTR_AGE (grpc_static_slice_table[58])
/* "allow" */
#define GRPC_MDSTR_ALLOW (grpc_static_slice_table[60])
#define GRPC_MDSTR_ALLOW (grpc_static_slice_table[59])
/* "authorization" */
#define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table[61])
#define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table[60])
/* "cache-control" */
#define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table[62])
#define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table[61])
/* "content-disposition" */
#define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table[63])
#define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table[62])
/* "content-language" */
#define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table[64])
#define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table[63])
/* "content-length" */
#define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table[65])
#define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table[64])
/* "content-location" */
#define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table[66])
#define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table[65])
/* "content-range" */
#define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table[67])
#define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table[66])
/* "cookie" */
#define GRPC_MDSTR_COOKIE (grpc_static_slice_table[68])
#define GRPC_MDSTR_COOKIE (grpc_static_slice_table[67])
/* "date" */
#define GRPC_MDSTR_DATE (grpc_static_slice_table[69])
#define GRPC_MDSTR_DATE (grpc_static_slice_table[68])
/* "etag" */
#define GRPC_MDSTR_ETAG (grpc_static_slice_table[70])
#define GRPC_MDSTR_ETAG (grpc_static_slice_table[69])
/* "expect" */
#define GRPC_MDSTR_EXPECT (grpc_static_slice_table[71])
#define GRPC_MDSTR_EXPECT (grpc_static_slice_table[70])
/* "expires" */
#define GRPC_MDSTR_EXPIRES (grpc_static_slice_table[72])
#define GRPC_MDSTR_EXPIRES (grpc_static_slice_table[71])
/* "from" */
#define GRPC_MDSTR_FROM (grpc_static_slice_table[73])
#define GRPC_MDSTR_FROM (grpc_static_slice_table[72])
/* "if-match" */
#define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table[74])
#define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table[73])
/* "if-modified-since" */
#define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table[75])
#define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table[74])
/* "if-none-match" */
#define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table[76])
#define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table[75])
/* "if-range" */
#define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table[77])
#define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table[76])
/* "if-unmodified-since" */
#define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table[78])
#define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table[77])
/* "last-modified" */
#define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table[79])
#define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table[78])
/* "link" */
#define GRPC_MDSTR_LINK (grpc_static_slice_table[80])
#define GRPC_MDSTR_LINK (grpc_static_slice_table[79])
/* "location" */
#define GRPC_MDSTR_LOCATION (grpc_static_slice_table[81])
#define GRPC_MDSTR_LOCATION (grpc_static_slice_table[80])
/* "max-forwards" */
#define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table[82])
#define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table[81])
/* "proxy-authenticate" */
#define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table[83])
#define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table[82])
/* "proxy-authorization" */
#define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table[84])
#define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table[83])
/* "range" */
#define GRPC_MDSTR_RANGE (grpc_static_slice_table[85])
#define GRPC_MDSTR_RANGE (grpc_static_slice_table[84])
/* "referer" */
#define GRPC_MDSTR_REFERER (grpc_static_slice_table[86])
#define GRPC_MDSTR_REFERER (grpc_static_slice_table[85])
/* "refresh" */
#define GRPC_MDSTR_REFRESH (grpc_static_slice_table[87])
#define GRPC_MDSTR_REFRESH (grpc_static_slice_table[86])
/* "retry-after" */
#define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table[88])
#define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table[87])
/* "server" */
#define GRPC_MDSTR_SERVER (grpc_static_slice_table[89])
#define GRPC_MDSTR_SERVER (grpc_static_slice_table[88])
/* "set-cookie" */
#define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table[90])
#define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table[89])
/* "strict-transport-security" */
#define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table[91])
#define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table[90])
/* "transfer-encoding" */
#define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table[92])
#define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table[91])
/* "vary" */
#define GRPC_MDSTR_VARY (grpc_static_slice_table[93])
#define GRPC_MDSTR_VARY (grpc_static_slice_table[92])
/* "via" */
#define GRPC_MDSTR_VIA (grpc_static_slice_table[94])
#define GRPC_MDSTR_VIA (grpc_static_slice_table[93])
/* "www-authenticate" */
#define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table[95])
#define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table[94])
/* "0" */
#define GRPC_MDSTR_0 (grpc_static_slice_table[96])
#define GRPC_MDSTR_0 (grpc_static_slice_table[95])
/* "identity" */
#define GRPC_MDSTR_IDENTITY (grpc_static_slice_table[97])
#define GRPC_MDSTR_IDENTITY (grpc_static_slice_table[96])
/* "trailers" */
#define GRPC_MDSTR_TRAILERS (grpc_static_slice_table[98])
#define GRPC_MDSTR_TRAILERS (grpc_static_slice_table[97])
/* "application/grpc" */
#define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table[99])
#define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table[98])
/* "grpc" */
#define GRPC_MDSTR_GRPC (grpc_static_slice_table[100])
#define GRPC_MDSTR_GRPC (grpc_static_slice_table[99])
/* "PUT" */
#define GRPC_MDSTR_PUT (grpc_static_slice_table[101])
#define GRPC_MDSTR_PUT (grpc_static_slice_table[100])
/* "lb-cost-bin" */
#define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table[102])
#define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table[101])
/* "identity,deflate" */
#define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table[103])
#define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table[102])
/* "identity,gzip" */
#define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table[104])
#define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table[103])
/* "deflate,gzip" */
#define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table[105])
#define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table[104])
/* "identity,deflate,gzip" */
#define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
(grpc_static_slice_table[106])
(grpc_static_slice_table[105])
extern grpc_slice_refcount
grpc_static_metadata_refcounts[GRPC_STATIC_MDSTR_COUNT];
@ -268,7 +266,7 @@ extern grpc_slice_refcount
(static_cast<intptr_t>( \
((static_slice).refcount - grpc_static_metadata_refcounts)))
#define GRPC_STATIC_MDELEM_COUNT 86
#define GRPC_STATIC_MDELEM_COUNT 85
extern grpc_core::StaticMetadata
grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT];
extern uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT];
@ -429,38 +427,36 @@ extern grpc_mdelem grpc_static_mdelem_manifested[GRPC_STATIC_MDELEM_COUNT];
(grpc_static_mdelem_manifested[72])
/* "content-encoding": "gzip" */
#define GRPC_MDELEM_CONTENT_ENCODING_GZIP (grpc_static_mdelem_manifested[73])
/* "lb-token": "" */
#define GRPC_MDELEM_LB_TOKEN_EMPTY (grpc_static_mdelem_manifested[74])
/* "lb-cost-bin": "" */
#define GRPC_MDELEM_LB_COST_BIN_EMPTY (grpc_static_mdelem_manifested[75])
#define GRPC_MDELEM_LB_COST_BIN_EMPTY (grpc_static_mdelem_manifested[74])
/* "grpc-accept-encoding": "identity" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY \
(grpc_static_mdelem_manifested[76])
(grpc_static_mdelem_manifested[75])
/* "grpc-accept-encoding": "deflate" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE \
(grpc_static_mdelem_manifested[77])
(grpc_static_mdelem_manifested[76])
/* "grpc-accept-encoding": "identity,deflate" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE \
(grpc_static_mdelem_manifested[78])
(grpc_static_mdelem_manifested[77])
/* "grpc-accept-encoding": "gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_GZIP \
(grpc_static_mdelem_manifested[79])
(grpc_static_mdelem_manifested[78])
/* "grpc-accept-encoding": "identity,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \
(grpc_static_mdelem_manifested[80])
(grpc_static_mdelem_manifested[79])
/* "grpc-accept-encoding": "deflate,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE_COMMA_GZIP \
(grpc_static_mdelem_manifested[81])
(grpc_static_mdelem_manifested[80])
/* "grpc-accept-encoding": "identity,deflate,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
(grpc_static_mdelem_manifested[82])
(grpc_static_mdelem_manifested[81])
/* "accept-encoding": "identity" */
#define GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY (grpc_static_mdelem_manifested[83])
#define GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY (grpc_static_mdelem_manifested[82])
/* "accept-encoding": "gzip" */
#define GRPC_MDELEM_ACCEPT_ENCODING_GZIP (grpc_static_mdelem_manifested[84])
#define GRPC_MDELEM_ACCEPT_ENCODING_GZIP (grpc_static_mdelem_manifested[83])
/* "accept-encoding": "identity,gzip" */
#define GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \
(grpc_static_mdelem_manifested[85])
(grpc_static_mdelem_manifested[84])
grpc_mdelem grpc_static_mdelem_for_static_strings(intptr_t a, intptr_t b);
typedef enum {
@ -485,7 +481,6 @@ typedef enum {
GRPC_BATCH_GRPC_INTERNAL_STREAM_ENCODING_REQUEST,
GRPC_BATCH_USER_AGENT,
GRPC_BATCH_HOST,
GRPC_BATCH_LB_TOKEN,
GRPC_BATCH_GRPC_PREVIOUS_RPC_ATTEMPTS,
GRPC_BATCH_GRPC_RETRY_PUSHBACK_MS,
GRPC_BATCH_CALLOUTS_COUNT
@ -515,7 +510,6 @@ typedef union {
struct grpc_linked_mdelem* grpc_internal_stream_encoding_request;
struct grpc_linked_mdelem* user_agent;
struct grpc_linked_mdelem* host;
struct grpc_linked_mdelem* lb_token;
struct grpc_linked_mdelem* grpc_previous_rpc_attempts;
struct grpc_linked_mdelem* grpc_retry_pushback_ms;
} named;

@ -20,7 +20,6 @@
"%grpc-internal-stream-encoding-request"
"\x0Auser-agent"
"\x04host"
"\x08lb-token"
"\x1Agrpc-previous-rpc-attempts"
"\x16grpc-retry-pushback-ms"
"\x0Cgrpc-timeout"
@ -180,7 +179,6 @@
"\x00\x0Faccept-encoding\x00"
"\x00\x10content-encoding\x08identity"
"\x00\x10content-encoding\x04gzip"
"\x00\x08lb-token\x00"
"\x00\x0Blb-cost-bin\x00"
"\x00\x14grpc-accept-encoding\x08identity"
"\x00\x14grpc-accept-encoding\x07deflate"

@ -20,6 +20,8 @@
#include <string>
#include <grpc/support/log.h>
#include "src/core/ext/filters/client_channel/lb_policy.h"
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
#include "src/core/lib/channel/channel_args.h"
@ -115,7 +117,13 @@ class InterceptRecvTrailingMetadataLoadBalancingPolicy
user_data_(user_data) {}
PickResult Pick(PickArgs args) override {
// Check that we can read initial metadata.
gpr_log(GPR_INFO, "initial metadata:");
InterceptRecvTrailingMetadataLoadBalancingPolicy::LogMetadata(
args.initial_metadata);
// Do pick.
PickResult result = delegate_picker_->Pick(args);
// Intercept trailing metadata.
if (result.type == PickResult::PICK_COMPLETE &&
result.subchannel != nullptr) {
new (args.call_state->Alloc(sizeof(TrailingMetadataHandler)))
@ -180,11 +188,14 @@ class InterceptRecvTrailingMetadataLoadBalancingPolicy
private:
static void RecordRecvTrailingMetadata(
void* arg, grpc_metadata_batch* recv_trailing_metadata,
void* arg, MetadataInterface* recv_trailing_metadata,
CallState* call_state) {
TrailingMetadataHandler* self =
static_cast<TrailingMetadataHandler*>(arg);
GPR_ASSERT(recv_trailing_metadata != nullptr);
gpr_log(GPR_INFO, "trailing metadata:");
InterceptRecvTrailingMetadataLoadBalancingPolicy::LogMetadata(
recv_trailing_metadata);
self->cb_(self->user_data_);
self->~TrailingMetadataHandler();
}
@ -192,6 +203,17 @@ class InterceptRecvTrailingMetadataLoadBalancingPolicy
InterceptRecvTrailingMetadataCallback cb_;
void* user_data_;
};
static void LogMetadata(MetadataInterface* metadata) {
for (MetadataInterface::Iterator it = metadata->Begin();
!metadata->IsEnd(it); metadata->Next(&it)) {
gpr_log(GPR_INFO, " \"%.*s\"=>\"%.*s\"",
static_cast<int>(metadata->Key(it).size()),
metadata->Key(it).data(),
static_cast<int>(metadata->Value(it).size()),
metadata->Value(it).data());
}
}
};
class InterceptTrailingFactory : public LoadBalancingPolicyFactory {

@ -146,38 +146,35 @@ CONFIG = [
('accept-encoding', ''),
('content-encoding', 'identity'),
('content-encoding', 'gzip'),
('lb-token', ''),
('lb-cost-bin', ''),
]
# All entries here are ignored when counting non-default initial metadata that
# prevents the chttp2 server from sending a Trailers-Only response.
METADATA_BATCH_CALLOUTS = [
# (name)
(':path'),
(':method'),
(':status'),
(':authority'),
(':scheme'),
('te'),
('grpc-message'),
('grpc-status'),
('grpc-payload-bin'),
('grpc-encoding'),
('grpc-accept-encoding'),
('grpc-server-stats-bin'),
('grpc-tags-bin'),
('grpc-trace-bin'),
('content-type'),
('content-encoding'),
('accept-encoding'),
('grpc-internal-encoding-request'),
('grpc-internal-stream-encoding-request'),
('user-agent'),
('host'),
('lb-token'),
('grpc-previous-rpc-attempts'),
('grpc-retry-pushback-ms'),
':path',
':method',
':status',
':authority',
':scheme',
'te',
'grpc-message',
'grpc-status',
'grpc-payload-bin',
'grpc-encoding',
'grpc-accept-encoding',
'grpc-server-stats-bin',
'grpc-tags-bin',
'grpc-trace-bin',
'content-type',
'content-encoding',
'accept-encoding',
'grpc-internal-encoding-request',
'grpc-internal-stream-encoding-request',
'user-agent',
'host',
'grpc-previous-rpc-attempts',
'grpc-retry-pushback-ms',
]
COMPRESSION_ALGORITHMS = [

Loading…
Cancel
Save