Use call context to propagare LR costs

pull/9648/head
David Garcia Quintas 8 years ago
parent 55246161cd
commit f31f096274
  1. 46
      CMakeLists.txt
  2. 65
      Makefile
  3. 19
      build.yaml
  4. 1
      gRPC-Core.podspec
  5. 1
      grpc.def
  6. 1
      grpc.gemspec
  7. 9
      include/grpc++/impl/codegen/server_context.h
  8. 14
      include/grpc++/test/server_context_test_spouse.h
  9. 10
      include/grpc/grpc.h
  10. 44
      include/grpc/load_reporting.h
  11. 1
      package.xml
  12. 20
      src/core/ext/load_reporting/load_reporting.c
  13. 17
      src/core/ext/load_reporting/load_reporting.h
  14. 18
      src/core/ext/load_reporting/load_reporting_filter.c
  15. 3
      src/core/lib/channel/context.h
  16. 763
      src/core/lib/transport/static_metadata.c
  17. 221
      src/core/lib/transport/static_metadata.h
  18. 16
      src/cpp/server/server_context.cc
  19. 2
      src/ruby/ext/grpc/rb_grpc_imports.generated.c
  20. 3
      src/ruby/ext/grpc/rb_grpc_imports.generated.h
  21. 2
      test/core/end2end/fuzzers/hpack.dictionary
  22. 29
      test/core/end2end/tests/load_reporting_hook.c
  23. 1
      test/core/surface/public_headers_must_be_c89.c
  24. 2
      tools/codegen/core/gen_static_metadata.py
  25. 1
      tools/doxygen/Doxyfile.core
  26. 1
      tools/doxygen/Doxyfile.core.internal
  27. 35
      tools/run_tests/generated/sources_and_headers.json
  28. 170
      vsprojects/vcxproj/grpc++_test/grpc++_test.vcxproj
  29. 35
      vsprojects/vcxproj/grpc++_test/grpc++_test.vcxproj.filters
  30. 1
      vsprojects/vcxproj/grpc/grpc.vcxproj
  31. 3
      vsprojects/vcxproj/grpc/grpc.vcxproj.filters
  32. 1
      vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj
  33. 3
      vsprojects/vcxproj/grpc_test_util/grpc_test_util.vcxproj.filters
  34. 1
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj
  35. 3
      vsprojects/vcxproj/grpc_unsecure/grpc_unsecure.vcxproj.filters
  36. 3
      vsprojects/vcxproj/test/server_context_test_spouse_test/server_context_test_spouse_test.vcxproj

@ -1086,6 +1086,7 @@ foreach(_hdr
include/grpc/grpc.h include/grpc/grpc.h
include/grpc/grpc_posix.h include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h include/grpc/grpc_security_constants.h
include/grpc/load_reporting.h
include/grpc/slice.h include/grpc/slice.h
include/grpc/slice_buffer.h include/grpc/slice_buffer.h
include/grpc/status.h include/grpc/status.h
@ -1363,6 +1364,7 @@ foreach(_hdr
include/grpc/grpc.h include/grpc/grpc.h
include/grpc/grpc_posix.h include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h include/grpc/grpc_security_constants.h
include/grpc/load_reporting.h
include/grpc/slice.h include/grpc/slice.h
include/grpc/slice_buffer.h include/grpc/slice_buffer.h
include/grpc/status.h include/grpc/status.h
@ -1585,6 +1587,7 @@ foreach(_hdr
include/grpc/grpc.h include/grpc/grpc.h
include/grpc/grpc_posix.h include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h include/grpc/grpc_security_constants.h
include/grpc/load_reporting.h
include/grpc/slice.h include/grpc/slice.h
include/grpc/slice_buffer.h include/grpc/slice_buffer.h
include/grpc/status.h include/grpc/status.h
@ -1906,6 +1909,7 @@ foreach(_hdr
include/grpc/grpc.h include/grpc/grpc.h
include/grpc/grpc_posix.h include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h include/grpc/grpc_security_constants.h
include/grpc/load_reporting.h
include/grpc/slice.h include/grpc/slice.h
include/grpc/slice_buffer.h include/grpc/slice_buffer.h
include/grpc/status.h include/grpc/status.h
@ -2558,6 +2562,7 @@ foreach(_hdr
include/grpc/grpc.h include/grpc/grpc.h
include/grpc/grpc_posix.h include/grpc/grpc_posix.h
include/grpc/grpc_security_constants.h include/grpc/grpc_security_constants.h
include/grpc/load_reporting.h
include/grpc/slice.h include/grpc/slice.h
include/grpc/slice_buffer.h include/grpc/slice_buffer.h
include/grpc/status.h include/grpc/status.h
@ -2699,46 +2704,6 @@ endif()
if (gRPC_BUILD_TESTS) if (gRPC_BUILD_TESTS)
add_library(grpc++_test
src/cpp/test/server_context_test_spouse.cc
)
if(WIN32 AND MSVC)
set_target_properties(grpc++_test PROPERTIES COMPILE_PDB_NAME "grpc++_test"
COMPILE_PDB_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}"
)
if (gRPC_INSTALL)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/grpc++_test.pdb
DESTINATION ${CMAKE_INSTALL_LIBDIR} OPTIONAL
)
endif()
endif()
target_include_directories(grpc++_test
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
PRIVATE ${BORINGSSL_ROOT_DIR}/include
PRIVATE ${PROTOBUF_ROOT_DIR}/src
PRIVATE ${ZLIB_INCLUDE_DIR}
PRIVATE ${BENCHMARK}/include
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/zlib
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/third_party/gflags/include
PRIVATE third_party/googletest/include
PRIVATE third_party/googletest
PRIVATE ${_gRPC_PROTO_GENS_DIR}
)
target_link_libraries(grpc++_test
${_gRPC_PROTOBUF_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES}
grpc++
)
endif (gRPC_BUILD_TESTS)
if (gRPC_BUILD_TESTS)
add_library(grpc++_test_config add_library(grpc++_test_config
test/cpp/util/test_config_cc.cc test/cpp/util/test_config_cc.cc
) )
@ -9330,7 +9295,6 @@ target_link_libraries(server_context_test_spouse_test
${_gRPC_PROTOBUF_LIBRARIES} ${_gRPC_PROTOBUF_LIBRARIES}
${_gRPC_ALLTARGETS_LIBRARIES} ${_gRPC_ALLTARGETS_LIBRARIES}
grpc_test_util grpc_test_util
grpc++_test
grpc++ grpc++
grpc grpc
gpr_test_util gpr_test_util

@ -1257,9 +1257,9 @@ pc_cxx: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++.pc
pc_cxx_unsecure: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc pc_cxx_unsecure: $(LIBDIR)/$(CONFIG)/pkgconfig/grpc++_unsecure.pc
ifeq ($(EMBED_OPENSSL),true) ifeq ($(EMBED_OPENSSL),true)
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a $(LIBDIR)/$(CONFIG)/libbenchmark.a privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libboringssl_test_util.a $(LIBDIR)/$(CONFIG)/libboringssl_aes_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_asn1_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_base64_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bio_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bn_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_bytestring_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_chacha_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_aead_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cipher_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_cmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ed25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_spake25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x25519_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_dh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_digest_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ec_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdh_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_sign_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ecdsa_verify_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_err_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_extra_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_evp_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pbkdf_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_hmac_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_gcm_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_statistical_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_newhope_vectors_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_obj_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs12_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_pkcs8_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_poly1305_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_rsa_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_x509_test_lib.a $(LIBDIR)/$(CONFIG)/libboringssl_ssl_test_lib.a $(LIBDIR)/$(CONFIG)/libbenchmark.a
else else
privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libbenchmark.a privatelibs_cxx: $(LIBDIR)/$(CONFIG)/libgrpc++_proto_reflection_desc_db.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_config.a $(LIBDIR)/$(CONFIG)/libgrpc++_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc_cli_libs.a $(LIBDIR)/$(CONFIG)/libhttp2_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_client_helper.a $(LIBDIR)/$(CONFIG)/libinterop_client_main.a $(LIBDIR)/$(CONFIG)/libinterop_server_helper.a $(LIBDIR)/$(CONFIG)/libinterop_server_lib.a $(LIBDIR)/$(CONFIG)/libinterop_server_main.a $(LIBDIR)/$(CONFIG)/libqps.a $(LIBDIR)/$(CONFIG)/libbenchmark.a
endif endif
@ -2882,6 +2882,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \ include/grpc/grpc.h \
include/grpc/grpc_posix.h \ include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \ include/grpc/grpc_security_constants.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \
@ -3163,6 +3164,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \ include/grpc/grpc.h \
include/grpc/grpc_posix.h \ include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \ include/grpc/grpc_security_constants.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \
@ -3388,6 +3390,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \ include/grpc/grpc.h \
include/grpc/grpc_posix.h \ include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \ include/grpc/grpc_security_constants.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \
@ -3690,6 +3693,7 @@ PUBLIC_HEADERS_C += \
include/grpc/grpc.h \ include/grpc/grpc.h \
include/grpc/grpc_posix.h \ include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \ include/grpc/grpc_security_constants.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \
@ -4340,6 +4344,7 @@ PUBLIC_HEADERS_CXX += \
include/grpc/grpc.h \ include/grpc/grpc.h \
include/grpc/grpc_posix.h \ include/grpc/grpc_posix.h \
include/grpc/grpc_security_constants.h \ include/grpc/grpc_security_constants.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \
@ -4533,55 +4538,6 @@ $(OBJDIR)/$(CONFIG)/src/cpp/ext/proto_server_reflection.o: $(GENDIR)/src/proto/g
$(OBJDIR)/$(CONFIG)/src/cpp/ext/proto_server_reflection_plugin.o: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc $(OBJDIR)/$(CONFIG)/src/cpp/ext/proto_server_reflection_plugin.o: $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.pb.cc $(GENDIR)/src/proto/grpc/reflection/v1alpha/reflection.grpc.pb.cc
LIBGRPC++_TEST_SRC = \
src/cpp/test/server_context_test_spouse.cc \
PUBLIC_HEADERS_CXX += \
LIBGRPC++_TEST_OBJS = $(addprefix $(OBJDIR)/$(CONFIG)/, $(addsuffix .o, $(basename $(LIBGRPC++_TEST_SRC))))
ifeq ($(NO_SECURE),true)
# You can't build secure libraries if you don't have OpenSSL.
$(LIBDIR)/$(CONFIG)/libgrpc++_test.a: openssl_dep_error
else
ifeq ($(NO_PROTOBUF),true)
# You can't build a C++ library if you don't have protobuf - a bit overreached, but still okay.
$(LIBDIR)/$(CONFIG)/libgrpc++_test.a: protobuf_dep_error
else
$(LIBDIR)/$(CONFIG)/libgrpc++_test.a: $(ZLIB_DEP) $(OPENSSL_DEP) $(PROTOBUF_DEP) $(LIBGRPC++_TEST_OBJS)
$(E) "[AR] Creating $@"
$(Q) mkdir -p `dirname $@`
$(Q) rm -f $(LIBDIR)/$(CONFIG)/libgrpc++_test.a
$(Q) $(AR) $(AROPTS) $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBGRPC++_TEST_OBJS)
ifeq ($(SYSTEM),Darwin)
$(Q) ranlib -no_warning_for_no_symbols $(LIBDIR)/$(CONFIG)/libgrpc++_test.a
endif
endif
endif
ifneq ($(NO_SECURE),true)
ifneq ($(NO_DEPS),true)
-include $(LIBGRPC++_TEST_OBJS:.o=.dep)
endif
endif
LIBGRPC++_TEST_CONFIG_SRC = \ LIBGRPC++_TEST_CONFIG_SRC = \
test/cpp/util/test_config_cc.cc \ test/cpp/util/test_config_cc.cc \
@ -14476,16 +14432,16 @@ $(BINDIR)/$(CONFIG)/server_context_test_spouse_test: protobuf_dep_error
else else
$(BINDIR)/$(CONFIG)/server_context_test_spouse_test: $(PROTOBUF_DEP) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(BINDIR)/$(CONFIG)/server_context_test_spouse_test: $(PROTOBUF_DEP) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
$(E) "[LD] Linking $@" $(E) "[LD] Linking $@"
$(Q) mkdir -p `dirname $@` $(Q) mkdir -p `dirname $@`
$(Q) $(LDXX) $(LDFLAGS) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/server_context_test_spouse_test $(Q) $(LDXX) $(LDFLAGS) $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS) $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(LDLIBSXX) $(LDLIBS_PROTOBUF) $(LDLIBS) $(LDLIBS_SECURE) $(GTEST_LIB) -o $(BINDIR)/$(CONFIG)/server_context_test_spouse_test
endif endif
endif endif
$(OBJDIR)/$(CONFIG)/test/cpp/test/server_context_test_spouse_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++_test.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a $(OBJDIR)/$(CONFIG)/test/cpp/test/server_context_test_spouse_test.o: $(LIBDIR)/$(CONFIG)/libgrpc_test_util.a $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc.a $(LIBDIR)/$(CONFIG)/libgpr_test_util.a $(LIBDIR)/$(CONFIG)/libgpr.a
deps_server_context_test_spouse_test: $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS:.o=.dep) deps_server_context_test_spouse_test: $(SERVER_CONTEXT_TEST_SPOUSE_TEST_OBJS:.o=.dep)
@ -17798,7 +17754,6 @@ src/cpp/common/secure_create_auth_context.cc: $(OPENSSL_DEP)
src/cpp/ext/proto_server_reflection.cc: $(OPENSSL_DEP) src/cpp/ext/proto_server_reflection.cc: $(OPENSSL_DEP)
src/cpp/ext/proto_server_reflection_plugin.cc: $(OPENSSL_DEP) src/cpp/ext/proto_server_reflection_plugin.cc: $(OPENSSL_DEP)
src/cpp/server/secure_server_credentials.cc: $(OPENSSL_DEP) src/cpp/server/secure_server_credentials.cc: $(OPENSSL_DEP)
src/cpp/test/server_context_test_spouse.cc: $(OPENSSL_DEP)
src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP) src/csharp/ext/grpc_csharp_ext.c: $(OPENSSL_DEP)
test/core/bad_client/bad_client.c: $(OPENSSL_DEP) test/core/bad_client/bad_client.c: $(OPENSSL_DEP)
test/core/bad_ssl/server_common.c: $(OPENSSL_DEP) test/core/bad_ssl/server_common.c: $(OPENSSL_DEP)

@ -165,6 +165,7 @@ filegroups:
- include/grpc/grpc.h - include/grpc/grpc.h
- include/grpc/grpc_posix.h - include/grpc/grpc_posix.h
- include/grpc/grpc_security_constants.h - include/grpc/grpc_security_constants.h
- include/grpc/load_reporting.h
- include/grpc/slice.h - include/grpc/slice.h
- include/grpc/slice_buffer.h - include/grpc/slice_buffer.h
- include/grpc/status.h - include/grpc/status.h
@ -894,6 +895,12 @@ filegroups:
language: c++ language: c++
src: src:
- src/proto/grpc/reflection/v1alpha/reflection.proto - src/proto/grpc/reflection/v1alpha/reflection.proto
- name: grpc++_test
language: c++
public_headers:
- include/grpc++/test/server_context_test_spouse.h
deps:
- grpc++
- name: thrift_util - name: thrift_util
language: c++ language: c++
public_headers: public_headers:
@ -1140,15 +1147,6 @@ libs:
- grpc++ - grpc++
filegroups: filegroups:
- grpc++_reflection_proto - grpc++_reflection_proto
- name: grpc++_test
build: private
language: c++
headers:
- include/grpc++/test/server_context_test_spouse.h
src:
- src/cpp/test/server_context_test_spouse.cc
deps:
- grpc++
- name: grpc++_test_config - name: grpc++_test_config
build: private build: private
language: c++ language: c++
@ -3663,11 +3661,12 @@ targets:
- test/cpp/test/server_context_test_spouse_test.cc - test/cpp/test/server_context_test_spouse_test.cc
deps: deps:
- grpc_test_util - grpc_test_util
- grpc++_test
- grpc++ - grpc++
- grpc - grpc
- gpr_test_util - gpr_test_util
- gpr - gpr
uses:
- grpc++_test
- name: server_crash_test - name: server_crash_test
gtest: true gtest: true
cpu_cost: 0.1 cpu_cost: 0.1

@ -162,6 +162,7 @@ Pod::Spec.new do |s|
'include/grpc/grpc.h', 'include/grpc/grpc.h',
'include/grpc/grpc_posix.h', 'include/grpc/grpc_posix.h',
'include/grpc/grpc_security_constants.h', 'include/grpc/grpc_security_constants.h',
'include/grpc/load_reporting.h',
'include/grpc/slice.h', 'include/grpc/slice.h',
'include/grpc/slice_buffer.h', 'include/grpc/slice_buffer.h',
'include/grpc/status.h', 'include/grpc/status.h',

@ -69,6 +69,7 @@ EXPORTS
grpc_channel_create_registered_call grpc_channel_create_registered_call
grpc_call_start_batch grpc_call_start_batch
grpc_call_get_peer grpc_call_get_peer
grpc_call_set_load_reporting_cost_context
grpc_census_call_set_context grpc_census_call_set_context
grpc_census_call_get_context grpc_census_call_get_context
grpc_channel_get_target grpc_channel_get_target

@ -143,6 +143,7 @@ Gem::Specification.new do |s|
s.files += %w( include/grpc/grpc.h ) s.files += %w( include/grpc/grpc.h )
s.files += %w( include/grpc/grpc_posix.h ) s.files += %w( include/grpc/grpc_posix.h )
s.files += %w( include/grpc/grpc_security_constants.h ) s.files += %w( include/grpc/grpc_security_constants.h )
s.files += %w( include/grpc/load_reporting.h )
s.files += %w( include/grpc/slice.h ) s.files += %w( include/grpc/slice.h )
s.files += %w( include/grpc/slice_buffer.h ) s.files += %w( include/grpc/slice_buffer.h )
s.files += %w( include/grpc/status.h ) s.files += %w( include/grpc/status.h )

@ -36,6 +36,10 @@
#include <map> #include <map>
#include <memory> #include <memory>
#include <vector>
#include <grpc/impl/codegen/compression_types.h>
#include <grpc/load_reporting.h>
#include <grpc++/impl/codegen/config.h> #include <grpc++/impl/codegen/config.h>
#include <grpc++/impl/codegen/create_auth_context.h> #include <grpc++/impl/codegen/create_auth_context.h>
@ -43,14 +47,12 @@
#include <grpc++/impl/codegen/security/auth_context.h> #include <grpc++/impl/codegen/security/auth_context.h>
#include <grpc++/impl/codegen/string_ref.h> #include <grpc++/impl/codegen/string_ref.h>
#include <grpc++/impl/codegen/time.h> #include <grpc++/impl/codegen/time.h>
#include <grpc/impl/codegen/compression_types.h>
struct grpc_metadata; struct grpc_metadata;
struct grpc_call; struct grpc_call;
struct census_context; struct census_context;
namespace grpc { namespace grpc {
class ClientContext; class ClientContext;
template <class W, class R> template <class W, class R>
class ServerAsyncReader; class ServerAsyncReader;
@ -143,6 +145,9 @@ class ServerContext {
} }
void set_compression_algorithm(grpc_compression_algorithm algorithm); void set_compression_algorithm(grpc_compression_algorithm algorithm);
// Set the load reporting costs in \a cost_data for the call.
void SetLoadReportingCosts(const std::vector<grpc::string>& cost_data);
std::shared_ptr<const AuthContext> auth_context() const { std::shared_ptr<const AuthContext> auth_context() const {
if (auth_context_.get() == nullptr) { if (auth_context_.get() == nullptr) {
auth_context_ = CreateAuthContext(call_); auth_context_ = CreateAuthContext(call_);

@ -48,10 +48,22 @@ class ServerContextTestSpouse {
// Inject client metadata to the ServerContext for the test. The test spouse // Inject client metadata to the ServerContext for the test. The test spouse
// must be alive when ServerContext::client_metadata is called. // must be alive when ServerContext::client_metadata is called.
void AddClientMetadata(const grpc::string& key, const grpc::string& value); void AddClientMetadata(const grpc::string& key, const grpc::string& value) {
client_metadata_storage_.insert(
std::pair<grpc::string, grpc::string>(key, value));
ctx_->client_metadata_.map()->clear();
for (auto iter = client_metadata_storage_.begin();
iter != client_metadata_storage_.end(); ++iter) {
ctx_->client_metadata_.map()->insert(
std::pair<grpc::string_ref, grpc::string_ref>(iter->first.c_str(),
iter->second.c_str()));
}
}
std::multimap<grpc::string, grpc::string> GetInitialMetadata() const { std::multimap<grpc::string, grpc::string> GetInitialMetadata() const {
return ctx_->initial_metadata_; return ctx_->initial_metadata_;
} }
std::multimap<grpc::string, grpc::string> GetTrailingMetadata() const { std::multimap<grpc::string, grpc::string> GetTrailingMetadata() const {
return ctx_->trailing_metadata_; return ctx_->trailing_metadata_;
} }

@ -229,14 +229,20 @@ GRPCAPI grpc_call_error grpc_call_start_batch(grpc_call *call,
functionality. Instead, use grpc_auth_context. */ functionality. Instead, use grpc_auth_context. */
GRPCAPI char *grpc_call_get_peer(grpc_call *call); GRPCAPI char *grpc_call_get_peer(grpc_call *call);
struct grpc_load_reporting_cost_context;
/* Associate costs contained in \a cost_context to \a call. */
GRPCAPI void grpc_call_set_load_reporting_cost_context(
grpc_call *call, struct grpc_load_reporting_cost_context *context);
struct census_context; struct census_context;
/* Set census context for a call; Must be called before first call to /** Set census context for a call; Must be called before first call to
grpc_call_start_batch(). */ grpc_call_start_batch(). */
GRPCAPI void grpc_census_call_set_context(grpc_call *call, GRPCAPI void grpc_census_call_set_context(grpc_call *call,
struct census_context *context); struct census_context *context);
/* Retrieve the calls current census context. */ /** Retrieve the calls current census context. */
GRPCAPI struct census_context *grpc_census_call_get_context(grpc_call *call); GRPCAPI struct census_context *grpc_census_call_get_context(grpc_call *call);
/** Return a newly allocated string representing the target a channel was /** Return a newly allocated string representing the target a channel was

@ -1,6 +1,6 @@
/* /*
* *
* Copyright 2016, Google Inc. * Copyright 2017, Google Inc.
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -31,23 +31,33 @@
* *
*/ */
#include <grpc++/test/server_context_test_spouse.h> #ifndef GRPC_LOAD_REPORTING_H
#define GRPC_LOAD_REPORTING_H
namespace grpc { #include <grpc/impl/codegen/port_platform.h>
namespace testing { #include <grpc/slice.h>
void ServerContextTestSpouse::AddClientMetadata(const grpc::string& key, #ifdef __cplusplus
const grpc::string& value) { extern "C" {
client_metadata_storage_.insert( #endif
std::pair<grpc::string, grpc::string>(key, value));
ctx_->client_metadata_.map()->clear(); /** Metadata key for the gRPC LB load balancer token.
for (auto iter = client_metadata_storage_.begin(); *
iter != client_metadata_storage_.end(); ++iter) { * The value corresponding to this key is an opaque token that is given to the
ctx_->client_metadata_.map()->insert( * frontend as part of each pick; the frontend sends this token to the backend
std::pair<grpc::string_ref, grpc::string_ref>(iter->first.c_str(), * in each request it sends when using that pick. The token is used by the
iter->second.c_str())); * backend to verify the request and to allow the backend to report load to the
} * gRPC LB system. */
#define GRPC_LB_TOKEN_MD_KEY "lb-token"
/** A sequence of values for load reporting purposes */
typedef struct grpc_load_reporting_cost_context {
grpc_slice *values;
size_t values_count;
} grpc_load_reporting_cost_context;
#ifdef __cplusplus
} }
#endif
} // namespace testing #endif /* GRPC_LOAD_REPORTING_H */
} // namespace grpc

@ -152,6 +152,7 @@
<file baseinstalldir="/" name="include/grpc/grpc.h" role="src" /> <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
<file baseinstalldir="/" name="include/grpc/grpc_posix.h" role="src" /> <file baseinstalldir="/" name="include/grpc/grpc_posix.h" role="src" />
<file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" /> <file baseinstalldir="/" name="include/grpc/grpc_security_constants.h" role="src" />
<file baseinstalldir="/" name="include/grpc/load_reporting.h" role="src" />
<file baseinstalldir="/" name="include/grpc/slice.h" role="src" /> <file baseinstalldir="/" name="include/grpc/slice.h" role="src" />
<file baseinstalldir="/" name="include/grpc/slice_buffer.h" role="src" /> <file baseinstalldir="/" name="include/grpc/slice_buffer.h" role="src" />
<file baseinstalldir="/" name="include/grpc/status.h" role="src" /> <file baseinstalldir="/" name="include/grpc/status.h" role="src" />

@ -34,14 +34,34 @@
#include <limits.h> #include <limits.h>
#include <string.h> #include <string.h>
#include <grpc/load_reporting.h>
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
#include <grpc/support/sync.h> #include <grpc/support/sync.h>
#include "src/core/ext/load_reporting/load_reporting.h" #include "src/core/ext/load_reporting/load_reporting.h"
#include "src/core/ext/load_reporting/load_reporting_filter.h" #include "src/core/ext/load_reporting/load_reporting_filter.h"
#include "src/core/lib/channel/channel_stack_builder.h" #include "src/core/lib/channel/channel_stack_builder.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel_init.h" #include "src/core/lib/surface/channel_init.h"
static void destroy_lr_cost_context(void *c) {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
grpc_load_reporting_cost_context *cost_ctx = c;
for (size_t i = 0; i < cost_ctx->values_count; ++i) {
grpc_slice_unref_internal(&exec_ctx, cost_ctx->values[i]);
}
grpc_exec_ctx_finish(&exec_ctx);
gpr_free(cost_ctx->values);
gpr_free(cost_ctx);
}
void grpc_call_set_load_reporting_cost_context(
grpc_call *call, grpc_load_reporting_cost_context *ctx) {
grpc_call_context_set(call, GRPC_CONTEXT_LR_COST, ctx,
destroy_lr_cost_context);
}
static bool is_load_reporting_enabled(const grpc_channel_args *a) { static bool is_load_reporting_enabled(const grpc_channel_args *a) {
if (a == NULL) return false; if (a == NULL) return false;
for (size_t i = 0; i < a->num_args; i++) { for (size_t i = 0; i < a->num_args; i++) {

@ -35,23 +35,8 @@
#define GRPC_CORE_EXT_LOAD_REPORTING_LOAD_REPORTING_H #define GRPC_CORE_EXT_LOAD_REPORTING_LOAD_REPORTING_H
#include <grpc/impl/codegen/grpc_types.h> #include <grpc/impl/codegen/grpc_types.h>
#include "src/core/lib/channel/channel_stack.h"
/** Metadata key for the gRPC LB load balancer token.
*
* The value corresponding to this key is an opaque token that is given to the
* frontend as part of each pick; the frontend sends this token to the backend
* in each request it sends when using that pick. The token is used by the
* backend to verify the request and to allow the backend to report load to the
* gRPC LB system. */
#define GRPC_LB_TOKEN_MD_KEY "lb-token"
/** Metadata key for gRPC LB cost reporting. #include "src/core/lib/channel/channel_stack.h"
*
* The value corresponding to this key is an opaque binary blob reported by the
* backend as part of its trailing metadata containing cost information for the
* call. */
#define GRPC_LB_COST_MD_KEY "lb-cost-bin"
/** Identifiers for the invocation point of the users LR callback */ /** Identifiers for the invocation point of the users LR callback */
typedef enum grpc_load_reporting_source { typedef enum grpc_load_reporting_source {

@ -31,11 +31,13 @@
* *
*/ */
#include <string.h>
#include <grpc/load_reporting.h>
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/string_util.h> #include <grpc/support/string_util.h>
#include <grpc/support/sync.h> #include <grpc/support/sync.h>
#include <string.h>
#include "src/core/ext/load_reporting/load_reporting.h" #include "src/core/ext/load_reporting/load_reporting.h"
#include "src/core/ext/load_reporting/load_reporting_filter.h" #include "src/core/ext/load_reporting/load_reporting_filter.h"
@ -46,8 +48,6 @@
typedef struct call_data { typedef struct call_data {
intptr_t id; /**< an id unique to the call */ intptr_t id; /**< an id unique to the call */
bool have_trailing_md_string;
grpc_slice trailing_md_string;
bool have_initial_md_string; bool have_initial_md_string;
grpc_slice initial_md_string; grpc_slice initial_md_string;
bool have_service_method; bool have_service_method;
@ -142,9 +142,6 @@ static void destroy_call_elem(grpc_exec_ctx *exec_ctx, grpc_call_element *elem,
if (calld->have_initial_md_string) { if (calld->have_initial_md_string) {
grpc_slice_unref_internal(exec_ctx, calld->initial_md_string); grpc_slice_unref_internal(exec_ctx, calld->initial_md_string);
} }
if (calld->have_trailing_md_string) {
grpc_slice_unref_internal(exec_ctx, calld->trailing_md_string);
}
if (calld->have_service_method) { if (calld->have_service_method) {
grpc_slice_unref_internal(exec_ctx, calld->service_method); grpc_slice_unref_internal(exec_ctx, calld->service_method);
} }
@ -201,15 +198,6 @@ static void lr_start_transport_stream_op(grpc_exec_ctx *exec_ctx,
/* substitute our callback for the higher callback */ /* substitute our callback for the higher callback */
calld->ops_recv_initial_metadata_ready = op->recv_initial_metadata_ready; calld->ops_recv_initial_metadata_ready = op->recv_initial_metadata_ready;
op->recv_initial_metadata_ready = &calld->on_initial_md_ready; op->recv_initial_metadata_ready = &calld->on_initial_md_ready;
} else if (op->send_trailing_metadata) {
if (op->send_trailing_metadata->idx.named.lb_cost_bin != NULL) {
calld->trailing_md_string = grpc_slice_ref_internal(
GRPC_MDVALUE(op->send_trailing_metadata->idx.named.lb_cost_bin->md));
calld->have_trailing_md_string = true;
grpc_metadata_batch_remove(
exec_ctx, op->send_trailing_metadata,
op->send_trailing_metadata->idx.named.lb_cost_bin);
}
} }
grpc_call_next_op(exec_ctx, elem, op); grpc_call_next_op(exec_ctx, elem, op);

@ -50,6 +50,9 @@ typedef enum {
/// Reserved for traffic_class_context. /// Reserved for traffic_class_context.
GRPC_CONTEXT_TRAFFIC, GRPC_CONTEXT_TRAFFIC,
/// Costs for Load Reporting.
GRPC_CONTEXT_LR_COST,
GRPC_CONTEXT_COUNT GRPC_CONTEXT_COUNT
} grpc_context_index; } grpc_context_index;

@ -55,64 +55,63 @@ static uint8_t g_bytes[] = {
112, 101, 103, 114, 112, 99, 45, 105, 110, 116, 101, 114, 110, 97, 108, 112, 101, 103, 114, 112, 99, 45, 105, 110, 116, 101, 114, 110, 97, 108,
45, 101, 110, 99, 111, 100, 105, 110, 103, 45, 114, 101, 113, 117, 101, 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, 115, 116, 117, 115, 101, 114, 45, 97, 103, 101, 110, 116, 104, 111, 115,
116, 108, 98, 45, 116, 111, 107, 101, 110, 108, 98, 45, 99, 111, 115, 116, 108, 98, 45, 116, 111, 107, 101, 110, 103, 114, 112, 99, 45, 116,
116, 45, 98, 105, 110, 103, 114, 112, 99, 45, 116, 105, 109, 101, 111, 105, 109, 101, 111, 117, 116, 103, 114, 112, 99, 45, 116, 114, 97, 99,
117, 116, 103, 114, 112, 99, 45, 116, 114, 97, 99, 105, 110, 103, 45, 105, 110, 103, 45, 98, 105, 110, 103, 114, 112, 99, 45, 115, 116, 97,
98, 105, 110, 103, 114, 112, 99, 45, 115, 116, 97, 116, 115, 45, 98, 116, 115, 45, 98, 105, 110, 103, 114, 112, 99, 46, 119, 97, 105, 116,
105, 110, 103, 114, 112, 99, 46, 119, 97, 105, 116, 95, 102, 111, 114, 95, 102, 111, 114, 95, 114, 101, 97, 100, 121, 103, 114, 112, 99, 46,
95, 114, 101, 97, 100, 121, 103, 114, 112, 99, 46, 116, 105, 109, 101, 116, 105, 109, 101, 111, 117, 116, 103, 114, 112, 99, 46, 109, 97, 120,
111, 117, 116, 103, 114, 112, 99, 46, 109, 97, 120, 95, 114, 101, 113, 95, 114, 101, 113, 117, 101, 115, 116, 95, 109, 101, 115, 115, 97, 103,
117, 101, 115, 116, 95, 109, 101, 115, 115, 97, 103, 101, 95, 98, 121, 101, 95, 98, 121, 116, 101, 115, 103, 114, 112, 99, 46, 109, 97, 120,
116, 101, 115, 103, 114, 112, 99, 46, 109, 97, 120, 95, 114, 101, 115, 95, 114, 101, 115, 112, 111, 110, 115, 101, 95, 109, 101, 115, 115, 97,
112, 111, 110, 115, 101, 95, 109, 101, 115, 115, 97, 103, 101, 95, 98, 103, 101, 95, 98, 121, 116, 101, 115, 47, 103, 114, 112, 99, 46, 108,
121, 116, 101, 115, 47, 103, 114, 112, 99, 46, 108, 98, 46, 118, 49, 98, 46, 118, 49, 46, 76, 111, 97, 100, 66, 97, 108, 97, 110, 99,
46, 76, 111, 97, 100, 66, 97, 108, 97, 110, 99, 101, 114, 47, 66, 101, 114, 47, 66, 97, 108, 97, 110, 99, 101, 76, 111, 97, 100, 48,
97, 108, 97, 110, 99, 101, 76, 111, 97, 100, 48, 49, 50, 105, 100, 49, 50, 105, 100, 101, 110, 116, 105, 116, 121, 103, 122, 105, 112, 100,
101, 110, 116, 105, 116, 121, 103, 122, 105, 112, 100, 101, 102, 108, 97, 101, 102, 108, 97, 116, 101, 116, 114, 97, 105, 108, 101, 114, 115, 97,
116, 101, 116, 114, 97, 105, 108, 101, 114, 115, 97, 112, 112, 108, 105, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 103, 114, 112, 99,
99, 97, 116, 105, 111, 110, 47, 103, 114, 112, 99, 80, 79, 83, 84, 80, 79, 83, 84, 50, 48, 48, 52, 48, 52, 104, 116, 116, 112, 104,
50, 48, 48, 52, 48, 52, 104, 116, 116, 112, 104, 116, 116, 112, 115, 116, 116, 112, 115, 103, 114, 112, 99, 71, 69, 84, 80, 85, 84, 47,
103, 114, 112, 99, 71, 69, 84, 80, 85, 84, 47, 47, 105, 110, 100, 47, 105, 110, 100, 101, 120, 46, 104, 116, 109, 108, 50, 48, 52, 50,
101, 120, 46, 104, 116, 109, 108, 50, 48, 52, 50, 48, 54, 51, 48, 48, 54, 51, 48, 52, 52, 48, 48, 53, 48, 48, 97, 99, 99, 101,
52, 52, 48, 48, 53, 48, 48, 97, 99, 99, 101, 112, 116, 45, 99, 112, 116, 45, 99, 104, 97, 114, 115, 101, 116, 97, 99, 99, 101, 112,
104, 97, 114, 115, 101, 116, 97, 99, 99, 101, 112, 116, 45, 101, 110, 116, 45, 101, 110, 99, 111, 100, 105, 110, 103, 103, 122, 105, 112, 44,
99, 111, 100, 105, 110, 103, 103, 122, 105, 112, 44, 32, 100, 101, 102, 32, 100, 101, 102, 108, 97, 116, 101, 97, 99, 99, 101, 112, 116, 45,
108, 97, 116, 101, 97, 99, 99, 101, 112, 116, 45, 108, 97, 110, 103, 108, 97, 110, 103, 117, 97, 103, 101, 97, 99, 99, 101, 112, 116, 45,
117, 97, 103, 101, 97, 99, 99, 101, 112, 116, 45, 114, 97, 110, 103, 114, 97, 110, 103, 101, 115, 97, 99, 99, 101, 112, 116, 97, 99, 99,
101, 115, 97, 99, 99, 101, 112, 116, 97, 99, 99, 101, 115, 115, 45, 101, 115, 115, 45, 99, 111, 110, 116, 114, 111, 108, 45, 97, 108, 108,
99, 111, 110, 116, 114, 111, 108, 45, 97, 108, 108, 111, 119, 45, 111, 111, 119, 45, 111, 114, 105, 103, 105, 110, 97, 103, 101, 97, 108, 108,
114, 105, 103, 105, 110, 97, 103, 101, 97, 108, 108, 111, 119, 97, 117, 111, 119, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110,
116, 104, 111, 114, 105, 122, 97, 116, 105, 111, 110, 99, 97, 99, 104, 99, 97, 99, 104, 101, 45, 99, 111, 110, 116, 114, 111, 108, 99, 111,
101, 45, 99, 111, 110, 116, 114, 111, 108, 99, 111, 110, 116, 101, 110, 110, 116, 101, 110, 116, 45, 100, 105, 115, 112, 111, 115, 105, 116, 105,
116, 45, 100, 105, 115, 112, 111, 115, 105, 116, 105, 111, 110, 99, 111, 111, 110, 99, 111, 110, 116, 101, 110, 116, 45, 101, 110, 99, 111, 100,
110, 116, 101, 110, 116, 45, 101, 110, 99, 111, 100, 105, 110, 103, 99, 105, 110, 103, 99, 111, 110, 116, 101, 110, 116, 45, 108, 97, 110, 103,
111, 110, 116, 101, 110, 116, 45, 108, 97, 110, 103, 117, 97, 103, 101, 117, 97, 103, 101, 99, 111, 110, 116, 101, 110, 116, 45, 108, 101, 110,
99, 111, 110, 116, 101, 110, 116, 45, 108, 101, 110, 103, 116, 104, 99, 103, 116, 104, 99, 111, 110, 116, 101, 110, 116, 45, 108, 111, 99, 97,
111, 110, 116, 101, 110, 116, 45, 108, 111, 99, 97, 116, 105, 111, 110, 116, 105, 111, 110, 99, 111, 110, 116, 101, 110, 116, 45, 114, 97, 110,
99, 111, 110, 116, 101, 110, 116, 45, 114, 97, 110, 103, 101, 99, 111, 103, 101, 99, 111, 111, 107, 105, 101, 100, 97, 116, 101, 101, 116, 97,
111, 107, 105, 101, 100, 97, 116, 101, 101, 116, 97, 103, 101, 120, 112, 103, 101, 120, 112, 101, 99, 116, 101, 120, 112, 105, 114, 101, 115, 102,
101, 99, 116, 101, 120, 112, 105, 114, 101, 115, 102, 114, 111, 109, 105, 114, 111, 109, 105, 102, 45, 109, 97, 116, 99, 104, 105, 102, 45, 109,
102, 45, 109, 97, 116, 99, 104, 105, 102, 45, 109, 111, 100, 105, 102, 111, 100, 105, 102, 105, 101, 100, 45, 115, 105, 110, 99, 101, 105, 102,
105, 101, 100, 45, 115, 105, 110, 99, 101, 105, 102, 45, 110, 111, 110, 45, 110, 111, 110, 101, 45, 109, 97, 116, 99, 104, 105, 102, 45, 114,
101, 45, 109, 97, 116, 99, 104, 105, 102, 45, 114, 97, 110, 103, 101, 97, 110, 103, 101, 105, 102, 45, 117, 110, 109, 111, 100, 105, 102, 105,
105, 102, 45, 117, 110, 109, 111, 100, 105, 102, 105, 101, 100, 45, 115, 101, 100, 45, 115, 105, 110, 99, 101, 108, 97, 115, 116, 45, 109, 111,
105, 110, 99, 101, 108, 97, 115, 116, 45, 109, 111, 100, 105, 102, 105, 100, 105, 102, 105, 101, 100, 108, 105, 110, 107, 108, 111, 99, 97, 116,
101, 100, 108, 105, 110, 107, 108, 111, 99, 97, 116, 105, 111, 110, 109, 105, 111, 110, 109, 97, 120, 45, 102, 111, 114, 119, 97, 114, 100, 115,
97, 120, 45, 102, 111, 114, 119, 97, 114, 100, 115, 112, 114, 111, 120, 112, 114, 111, 120, 121, 45, 97, 117, 116, 104, 101, 110, 116, 105, 99,
121, 45, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 101, 112, 97, 116, 101, 112, 114, 111, 120, 121, 45, 97, 117, 116, 104, 111, 114,
114, 111, 120, 121, 45, 97, 117, 116, 104, 111, 114, 105, 122, 97, 116, 105, 122, 97, 116, 105, 111, 110, 114, 97, 110, 103, 101, 114, 101, 102,
105, 111, 110, 114, 97, 110, 103, 101, 114, 101, 102, 101, 114, 101, 114, 101, 114, 101, 114, 114, 101, 102, 114, 101, 115, 104, 114, 101, 116, 114,
114, 101, 102, 114, 101, 115, 104, 114, 101, 116, 114, 121, 45, 97, 102, 121, 45, 97, 102, 116, 101, 114, 115, 101, 114, 118, 101, 114, 115, 101,
116, 101, 114, 115, 101, 114, 118, 101, 114, 115, 101, 116, 45, 99, 111, 116, 45, 99, 111, 111, 107, 105, 101, 115, 116, 114, 105, 99, 116, 45,
111, 107, 105, 101, 115, 116, 114, 105, 99, 116, 45, 116, 114, 97, 110, 116, 114, 97, 110, 115, 112, 111, 114, 116, 45, 115, 101, 99, 117, 114,
115, 112, 111, 114, 116, 45, 115, 101, 99, 117, 114, 105, 116, 121, 116, 105, 116, 121, 116, 114, 97, 110, 115, 102, 101, 114, 45, 101, 110, 99,
114, 97, 110, 115, 102, 101, 114, 45, 101, 110, 99, 111, 100, 105, 110, 111, 100, 105, 110, 103, 118, 97, 114, 121, 118, 105, 97, 119, 119, 119,
103, 118, 97, 114, 121, 118, 105, 97, 119, 119, 119, 45, 97, 117, 116, 45, 97, 117, 116, 104, 101, 110, 116, 105, 99, 97, 116, 101, 105, 100,
104, 101, 110, 116, 105, 99, 97, 116, 101, 105, 100, 101, 110, 116, 105, 101, 110, 116, 105, 116, 121, 44, 100, 101, 102, 108, 97, 116, 101, 105,
116, 121, 44, 100, 101, 102, 108, 97, 116, 101, 105, 100, 101, 110, 116, 100, 101, 110, 116, 105, 116, 121, 44, 103, 122, 105, 112, 100, 101, 102,
105, 116, 121, 44, 103, 122, 105, 112, 100, 101, 102, 108, 97, 116, 101, 108, 97, 116, 101, 44, 103, 122, 105, 112, 105, 100, 101, 110, 116, 105,
44, 103, 122, 105, 112, 105, 100, 101, 110, 116, 105, 116, 121, 44, 100, 116, 121, 44, 100, 101, 102, 108, 97, 116, 101, 44, 103, 122, 105, 112};
101, 102, 108, 97, 116, 101, 44, 103, 122, 105, 112};
static void static_ref(void *unused) {} static void static_ref(void *unused) {}
static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {} static void static_unref(grpc_exec_ctx *exec_ctx, void *unused) {}
@ -221,7 +220,6 @@ grpc_slice_refcount grpc_static_metadata_refcounts[GRPC_STATIC_MDSTR_COUNT] = {
{&grpc_static_metadata_vtable, &static_sub_refcnt}, {&grpc_static_metadata_vtable, &static_sub_refcnt},
{&grpc_static_metadata_vtable, &static_sub_refcnt}, {&grpc_static_metadata_vtable, &static_sub_refcnt},
{&grpc_static_metadata_vtable, &static_sub_refcnt}, {&grpc_static_metadata_vtable, &static_sub_refcnt},
{&grpc_static_metadata_vtable, &static_sub_refcnt},
}; };
const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = { const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {
@ -258,188 +256,186 @@ const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT] = {
{.refcount = &grpc_static_metadata_refcounts[15], {.refcount = &grpc_static_metadata_refcounts[15],
.data.refcounted = {g_bytes + 166, 8}}, .data.refcounted = {g_bytes + 166, 8}},
{.refcount = &grpc_static_metadata_refcounts[16], {.refcount = &grpc_static_metadata_refcounts[16],
.data.refcounted = {g_bytes + 174, 11}}, .data.refcounted = {g_bytes + 174, 12}},
{.refcount = &grpc_static_metadata_refcounts[17], {.refcount = &grpc_static_metadata_refcounts[17],
.data.refcounted = {g_bytes + 185, 12}}, .data.refcounted = {g_bytes + 186, 16}},
{.refcount = &grpc_static_metadata_refcounts[18], {.refcount = &grpc_static_metadata_refcounts[18],
.data.refcounted = {g_bytes + 197, 16}}, .data.refcounted = {g_bytes + 202, 14}},
{.refcount = &grpc_static_metadata_refcounts[19], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 213, 14}}, .data.refcounted = {g_bytes + 216, 0}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}, .data.refcounted = {g_bytes + 216, 19}},
{.refcount = &grpc_static_metadata_refcounts[21], {.refcount = &grpc_static_metadata_refcounts[21],
.data.refcounted = {g_bytes + 227, 19}}, .data.refcounted = {g_bytes + 235, 12}},
{.refcount = &grpc_static_metadata_refcounts[22], {.refcount = &grpc_static_metadata_refcounts[22],
.data.refcounted = {g_bytes + 246, 12}}, .data.refcounted = {g_bytes + 247, 30}},
{.refcount = &grpc_static_metadata_refcounts[23], {.refcount = &grpc_static_metadata_refcounts[23],
.data.refcounted = {g_bytes + 258, 30}}, .data.refcounted = {g_bytes + 277, 31}},
{.refcount = &grpc_static_metadata_refcounts[24], {.refcount = &grpc_static_metadata_refcounts[24],
.data.refcounted = {g_bytes + 288, 31}}, .data.refcounted = {g_bytes + 308, 36}},
{.refcount = &grpc_static_metadata_refcounts[25], {.refcount = &grpc_static_metadata_refcounts[25],
.data.refcounted = {g_bytes + 319, 36}}, .data.refcounted = {g_bytes + 344, 1}},
{.refcount = &grpc_static_metadata_refcounts[26], {.refcount = &grpc_static_metadata_refcounts[26],
.data.refcounted = {g_bytes + 355, 1}}, .data.refcounted = {g_bytes + 345, 1}},
{.refcount = &grpc_static_metadata_refcounts[27], {.refcount = &grpc_static_metadata_refcounts[27],
.data.refcounted = {g_bytes + 356, 1}}, .data.refcounted = {g_bytes + 346, 1}},
{.refcount = &grpc_static_metadata_refcounts[28], {.refcount = &grpc_static_metadata_refcounts[28],
.data.refcounted = {g_bytes + 357, 1}}, .data.refcounted = {g_bytes + 347, 8}},
{.refcount = &grpc_static_metadata_refcounts[29], {.refcount = &grpc_static_metadata_refcounts[29],
.data.refcounted = {g_bytes + 358, 8}}, .data.refcounted = {g_bytes + 355, 4}},
{.refcount = &grpc_static_metadata_refcounts[30], {.refcount = &grpc_static_metadata_refcounts[30],
.data.refcounted = {g_bytes + 366, 4}}, .data.refcounted = {g_bytes + 359, 7}},
{.refcount = &grpc_static_metadata_refcounts[31], {.refcount = &grpc_static_metadata_refcounts[31],
.data.refcounted = {g_bytes + 370, 7}}, .data.refcounted = {g_bytes + 366, 8}},
{.refcount = &grpc_static_metadata_refcounts[32], {.refcount = &grpc_static_metadata_refcounts[32],
.data.refcounted = {g_bytes + 377, 8}}, .data.refcounted = {g_bytes + 374, 16}},
{.refcount = &grpc_static_metadata_refcounts[33], {.refcount = &grpc_static_metadata_refcounts[33],
.data.refcounted = {g_bytes + 385, 16}}, .data.refcounted = {g_bytes + 390, 4}},
{.refcount = &grpc_static_metadata_refcounts[34], {.refcount = &grpc_static_metadata_refcounts[34],
.data.refcounted = {g_bytes + 401, 4}}, .data.refcounted = {g_bytes + 394, 3}},
{.refcount = &grpc_static_metadata_refcounts[35], {.refcount = &grpc_static_metadata_refcounts[35],
.data.refcounted = {g_bytes + 405, 3}}, .data.refcounted = {g_bytes + 397, 3}},
{.refcount = &grpc_static_metadata_refcounts[36], {.refcount = &grpc_static_metadata_refcounts[36],
.data.refcounted = {g_bytes + 408, 3}}, .data.refcounted = {g_bytes + 400, 4}},
{.refcount = &grpc_static_metadata_refcounts[37], {.refcount = &grpc_static_metadata_refcounts[37],
.data.refcounted = {g_bytes + 411, 4}}, .data.refcounted = {g_bytes + 404, 5}},
{.refcount = &grpc_static_metadata_refcounts[38], {.refcount = &grpc_static_metadata_refcounts[38],
.data.refcounted = {g_bytes + 415, 5}}, .data.refcounted = {g_bytes + 409, 4}},
{.refcount = &grpc_static_metadata_refcounts[39], {.refcount = &grpc_static_metadata_refcounts[39],
.data.refcounted = {g_bytes + 420, 4}}, .data.refcounted = {g_bytes + 413, 3}},
{.refcount = &grpc_static_metadata_refcounts[40], {.refcount = &grpc_static_metadata_refcounts[40],
.data.refcounted = {g_bytes + 424, 3}}, .data.refcounted = {g_bytes + 416, 3}},
{.refcount = &grpc_static_metadata_refcounts[41], {.refcount = &grpc_static_metadata_refcounts[41],
.data.refcounted = {g_bytes + 427, 3}}, .data.refcounted = {g_bytes + 419, 1}},
{.refcount = &grpc_static_metadata_refcounts[42], {.refcount = &grpc_static_metadata_refcounts[42],
.data.refcounted = {g_bytes + 430, 1}}, .data.refcounted = {g_bytes + 420, 11}},
{.refcount = &grpc_static_metadata_refcounts[43], {.refcount = &grpc_static_metadata_refcounts[43],
.data.refcounted = {g_bytes + 431, 11}}, .data.refcounted = {g_bytes + 431, 3}},
{.refcount = &grpc_static_metadata_refcounts[44], {.refcount = &grpc_static_metadata_refcounts[44],
.data.refcounted = {g_bytes + 442, 3}}, .data.refcounted = {g_bytes + 434, 3}},
{.refcount = &grpc_static_metadata_refcounts[45], {.refcount = &grpc_static_metadata_refcounts[45],
.data.refcounted = {g_bytes + 445, 3}}, .data.refcounted = {g_bytes + 437, 3}},
{.refcount = &grpc_static_metadata_refcounts[46], {.refcount = &grpc_static_metadata_refcounts[46],
.data.refcounted = {g_bytes + 448, 3}}, .data.refcounted = {g_bytes + 440, 3}},
{.refcount = &grpc_static_metadata_refcounts[47], {.refcount = &grpc_static_metadata_refcounts[47],
.data.refcounted = {g_bytes + 451, 3}}, .data.refcounted = {g_bytes + 443, 3}},
{.refcount = &grpc_static_metadata_refcounts[48], {.refcount = &grpc_static_metadata_refcounts[48],
.data.refcounted = {g_bytes + 454, 3}}, .data.refcounted = {g_bytes + 446, 14}},
{.refcount = &grpc_static_metadata_refcounts[49], {.refcount = &grpc_static_metadata_refcounts[49],
.data.refcounted = {g_bytes + 457, 14}}, .data.refcounted = {g_bytes + 460, 15}},
{.refcount = &grpc_static_metadata_refcounts[50], {.refcount = &grpc_static_metadata_refcounts[50],
.data.refcounted = {g_bytes + 471, 15}}, .data.refcounted = {g_bytes + 475, 13}},
{.refcount = &grpc_static_metadata_refcounts[51], {.refcount = &grpc_static_metadata_refcounts[51],
.data.refcounted = {g_bytes + 486, 13}}, .data.refcounted = {g_bytes + 488, 15}},
{.refcount = &grpc_static_metadata_refcounts[52], {.refcount = &grpc_static_metadata_refcounts[52],
.data.refcounted = {g_bytes + 499, 15}}, .data.refcounted = {g_bytes + 503, 13}},
{.refcount = &grpc_static_metadata_refcounts[53], {.refcount = &grpc_static_metadata_refcounts[53],
.data.refcounted = {g_bytes + 514, 13}}, .data.refcounted = {g_bytes + 516, 6}},
{.refcount = &grpc_static_metadata_refcounts[54], {.refcount = &grpc_static_metadata_refcounts[54],
.data.refcounted = {g_bytes + 527, 6}}, .data.refcounted = {g_bytes + 522, 27}},
{.refcount = &grpc_static_metadata_refcounts[55], {.refcount = &grpc_static_metadata_refcounts[55],
.data.refcounted = {g_bytes + 533, 27}}, .data.refcounted = {g_bytes + 549, 3}},
{.refcount = &grpc_static_metadata_refcounts[56], {.refcount = &grpc_static_metadata_refcounts[56],
.data.refcounted = {g_bytes + 560, 3}}, .data.refcounted = {g_bytes + 552, 5}},
{.refcount = &grpc_static_metadata_refcounts[57], {.refcount = &grpc_static_metadata_refcounts[57],
.data.refcounted = {g_bytes + 563, 5}}, .data.refcounted = {g_bytes + 557, 13}},
{.refcount = &grpc_static_metadata_refcounts[58], {.refcount = &grpc_static_metadata_refcounts[58],
.data.refcounted = {g_bytes + 568, 13}}, .data.refcounted = {g_bytes + 570, 13}},
{.refcount = &grpc_static_metadata_refcounts[59], {.refcount = &grpc_static_metadata_refcounts[59],
.data.refcounted = {g_bytes + 581, 13}}, .data.refcounted = {g_bytes + 583, 19}},
{.refcount = &grpc_static_metadata_refcounts[60], {.refcount = &grpc_static_metadata_refcounts[60],
.data.refcounted = {g_bytes + 594, 19}}, .data.refcounted = {g_bytes + 602, 16}},
{.refcount = &grpc_static_metadata_refcounts[61], {.refcount = &grpc_static_metadata_refcounts[61],
.data.refcounted = {g_bytes + 613, 16}}, .data.refcounted = {g_bytes + 618, 16}},
{.refcount = &grpc_static_metadata_refcounts[62], {.refcount = &grpc_static_metadata_refcounts[62],
.data.refcounted = {g_bytes + 629, 16}}, .data.refcounted = {g_bytes + 634, 14}},
{.refcount = &grpc_static_metadata_refcounts[63], {.refcount = &grpc_static_metadata_refcounts[63],
.data.refcounted = {g_bytes + 645, 14}}, .data.refcounted = {g_bytes + 648, 16}},
{.refcount = &grpc_static_metadata_refcounts[64], {.refcount = &grpc_static_metadata_refcounts[64],
.data.refcounted = {g_bytes + 659, 16}}, .data.refcounted = {g_bytes + 664, 13}},
{.refcount = &grpc_static_metadata_refcounts[65], {.refcount = &grpc_static_metadata_refcounts[65],
.data.refcounted = {g_bytes + 675, 13}}, .data.refcounted = {g_bytes + 677, 6}},
{.refcount = &grpc_static_metadata_refcounts[66], {.refcount = &grpc_static_metadata_refcounts[66],
.data.refcounted = {g_bytes + 688, 6}}, .data.refcounted = {g_bytes + 683, 4}},
{.refcount = &grpc_static_metadata_refcounts[67], {.refcount = &grpc_static_metadata_refcounts[67],
.data.refcounted = {g_bytes + 694, 4}}, .data.refcounted = {g_bytes + 687, 4}},
{.refcount = &grpc_static_metadata_refcounts[68], {.refcount = &grpc_static_metadata_refcounts[68],
.data.refcounted = {g_bytes + 698, 4}}, .data.refcounted = {g_bytes + 691, 6}},
{.refcount = &grpc_static_metadata_refcounts[69], {.refcount = &grpc_static_metadata_refcounts[69],
.data.refcounted = {g_bytes + 702, 6}}, .data.refcounted = {g_bytes + 697, 7}},
{.refcount = &grpc_static_metadata_refcounts[70], {.refcount = &grpc_static_metadata_refcounts[70],
.data.refcounted = {g_bytes + 708, 7}}, .data.refcounted = {g_bytes + 704, 4}},
{.refcount = &grpc_static_metadata_refcounts[71], {.refcount = &grpc_static_metadata_refcounts[71],
.data.refcounted = {g_bytes + 715, 4}}, .data.refcounted = {g_bytes + 708, 8}},
{.refcount = &grpc_static_metadata_refcounts[72], {.refcount = &grpc_static_metadata_refcounts[72],
.data.refcounted = {g_bytes + 719, 8}}, .data.refcounted = {g_bytes + 716, 17}},
{.refcount = &grpc_static_metadata_refcounts[73], {.refcount = &grpc_static_metadata_refcounts[73],
.data.refcounted = {g_bytes + 727, 17}}, .data.refcounted = {g_bytes + 733, 13}},
{.refcount = &grpc_static_metadata_refcounts[74], {.refcount = &grpc_static_metadata_refcounts[74],
.data.refcounted = {g_bytes + 744, 13}}, .data.refcounted = {g_bytes + 746, 8}},
{.refcount = &grpc_static_metadata_refcounts[75], {.refcount = &grpc_static_metadata_refcounts[75],
.data.refcounted = {g_bytes + 757, 8}}, .data.refcounted = {g_bytes + 754, 19}},
{.refcount = &grpc_static_metadata_refcounts[76], {.refcount = &grpc_static_metadata_refcounts[76],
.data.refcounted = {g_bytes + 765, 19}}, .data.refcounted = {g_bytes + 773, 13}},
{.refcount = &grpc_static_metadata_refcounts[77], {.refcount = &grpc_static_metadata_refcounts[77],
.data.refcounted = {g_bytes + 784, 13}}, .data.refcounted = {g_bytes + 786, 4}},
{.refcount = &grpc_static_metadata_refcounts[78], {.refcount = &grpc_static_metadata_refcounts[78],
.data.refcounted = {g_bytes + 797, 4}}, .data.refcounted = {g_bytes + 790, 8}},
{.refcount = &grpc_static_metadata_refcounts[79], {.refcount = &grpc_static_metadata_refcounts[79],
.data.refcounted = {g_bytes + 801, 8}}, .data.refcounted = {g_bytes + 798, 12}},
{.refcount = &grpc_static_metadata_refcounts[80], {.refcount = &grpc_static_metadata_refcounts[80],
.data.refcounted = {g_bytes + 809, 12}}, .data.refcounted = {g_bytes + 810, 18}},
{.refcount = &grpc_static_metadata_refcounts[81], {.refcount = &grpc_static_metadata_refcounts[81],
.data.refcounted = {g_bytes + 821, 18}}, .data.refcounted = {g_bytes + 828, 19}},
{.refcount = &grpc_static_metadata_refcounts[82], {.refcount = &grpc_static_metadata_refcounts[82],
.data.refcounted = {g_bytes + 839, 19}}, .data.refcounted = {g_bytes + 847, 5}},
{.refcount = &grpc_static_metadata_refcounts[83], {.refcount = &grpc_static_metadata_refcounts[83],
.data.refcounted = {g_bytes + 858, 5}}, .data.refcounted = {g_bytes + 852, 7}},
{.refcount = &grpc_static_metadata_refcounts[84], {.refcount = &grpc_static_metadata_refcounts[84],
.data.refcounted = {g_bytes + 863, 7}}, .data.refcounted = {g_bytes + 859, 7}},
{.refcount = &grpc_static_metadata_refcounts[85], {.refcount = &grpc_static_metadata_refcounts[85],
.data.refcounted = {g_bytes + 870, 7}}, .data.refcounted = {g_bytes + 866, 11}},
{.refcount = &grpc_static_metadata_refcounts[86], {.refcount = &grpc_static_metadata_refcounts[86],
.data.refcounted = {g_bytes + 877, 11}}, .data.refcounted = {g_bytes + 877, 6}},
{.refcount = &grpc_static_metadata_refcounts[87], {.refcount = &grpc_static_metadata_refcounts[87],
.data.refcounted = {g_bytes + 888, 6}}, .data.refcounted = {g_bytes + 883, 10}},
{.refcount = &grpc_static_metadata_refcounts[88], {.refcount = &grpc_static_metadata_refcounts[88],
.data.refcounted = {g_bytes + 894, 10}}, .data.refcounted = {g_bytes + 893, 25}},
{.refcount = &grpc_static_metadata_refcounts[89], {.refcount = &grpc_static_metadata_refcounts[89],
.data.refcounted = {g_bytes + 904, 25}}, .data.refcounted = {g_bytes + 918, 17}},
{.refcount = &grpc_static_metadata_refcounts[90], {.refcount = &grpc_static_metadata_refcounts[90],
.data.refcounted = {g_bytes + 929, 17}}, .data.refcounted = {g_bytes + 935, 4}},
{.refcount = &grpc_static_metadata_refcounts[91], {.refcount = &grpc_static_metadata_refcounts[91],
.data.refcounted = {g_bytes + 946, 4}}, .data.refcounted = {g_bytes + 939, 3}},
{.refcount = &grpc_static_metadata_refcounts[92], {.refcount = &grpc_static_metadata_refcounts[92],
.data.refcounted = {g_bytes + 950, 3}}, .data.refcounted = {g_bytes + 942, 16}},
{.refcount = &grpc_static_metadata_refcounts[93], {.refcount = &grpc_static_metadata_refcounts[93],
.data.refcounted = {g_bytes + 953, 16}}, .data.refcounted = {g_bytes + 958, 16}},
{.refcount = &grpc_static_metadata_refcounts[94], {.refcount = &grpc_static_metadata_refcounts[94],
.data.refcounted = {g_bytes + 969, 16}}, .data.refcounted = {g_bytes + 974, 13}},
{.refcount = &grpc_static_metadata_refcounts[95], {.refcount = &grpc_static_metadata_refcounts[95],
.data.refcounted = {g_bytes + 985, 13}}, .data.refcounted = {g_bytes + 987, 12}},
{.refcount = &grpc_static_metadata_refcounts[96], {.refcount = &grpc_static_metadata_refcounts[96],
.data.refcounted = {g_bytes + 998, 12}}, .data.refcounted = {g_bytes + 999, 21}},
{.refcount = &grpc_static_metadata_refcounts[97],
.data.refcounted = {g_bytes + 1010, 21}},
}; };
uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT] = { 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, 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}; 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 4, 6, 6, 8, 8};
static const int8_t elems_r[] = { static const int8_t elems_r[] = {
10, 8, -3, 0, 9, 21, -76, 22, 0, 10, -7, 20, 0, 19, 18, 17, 10, 8, -3, 0, 9, 21, -75, 22, 0, 10, -7, 20, 0, 19, 18, 17,
16, 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, -49, -50, 16, -52, -53, -54, -54, -55, -56, -57, 0, 38, 37, 36, 35, -48, -49, 16, -51, -52, -53, -54, -54, -55, -56, -57, 0, 37, 36, 35, 34,
34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18,
18, 17, 16, 15, 14, 13, 12, 15, 14, 13, 12, 11, 10, 9, 8, 0}; 17, 16, 15, 14, 13, 12, 11, 14, 13, 12, 11, 10, 9, 8, 0};
static uint32_t elems_phash(uint32_t i) { static uint32_t elems_phash(uint32_t i) {
i -= 42; i -= 41;
uint32_t x = i % 96; uint32_t x = i % 95;
uint32_t y = i / 96; uint32_t y = i / 95;
uint32_t h = x; uint32_t h = x;
if (y < GPR_ARRAY_SIZE(elems_r)) { if (y < GPR_ARRAY_SIZE(elems_r)) {
uint32_t delta = (uint32_t)elems_r[y]; uint32_t delta = (uint32_t)elems_r[y];
@ -449,30 +445,29 @@ static uint32_t elems_phash(uint32_t i) {
} }
static const uint16_t elem_keys[] = { static const uint16_t elem_keys[] = {
1009, 1010, 1011, 240, 241, 242, 243, 244, 138, 139, 42, 43, 998, 999, 1000, 237, 238, 239, 240, 241, 136, 137, 41, 42,
429, 430, 431, 911, 912, 913, 712, 713, 1098, 522, 714, 1294, 424, 425, 426, 901, 902, 903, 704, 705, 1086, 516, 706, 1280,
1392, 1490, 1588, 4822, 4920, 4951, 5116, 5214, 5312, 1111, 5410, 5508, 1377, 1474, 4675, 4772, 4803, 4966, 5063, 5160, 5257, 1099, 5354, 5451,
5606, 5704, 5802, 5900, 5998, 6096, 6194, 6292, 6390, 6488, 6586, 6684, 5548, 5645, 5742, 5839, 5936, 6033, 6130, 6227, 6324, 6421, 6518, 6615,
6782, 6880, 6978, 7076, 7174, 7272, 7370, 7468, 7566, 7664, 7762, 7860, 6712, 6809, 6906, 7003, 7100, 7197, 7294, 7391, 7488, 7585, 7682, 7779,
7958, 8056, 8154, 8252, 8350, 1074, 1075, 1076, 1077, 8448, 8546, 8644, 7876, 7973, 8070, 8167, 8264, 1063, 1064, 1065, 1066, 8361, 8458, 8555,
8742, 8840, 8938, 9036, 9134, 314, 0, 0, 0, 0, 0, 0, 8652, 8749, 8846, 8943, 310, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 132, 231, 232, 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, 130, 228, 229, 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[] = { static const uint8_t elem_idxs[] = {
74, 77, 75, 19, 20, 21, 22, 23, 15, 16, 17, 18, 11, 12, 13, 73, 76, 74, 19, 20, 21, 22, 23, 15, 16, 17, 18, 11, 12, 13,
3, 4, 5, 0, 1, 41, 6, 2, 70, 48, 55, 56, 24, 25, 26, 3, 4, 5, 0, 1, 41, 6, 2, 69, 48, 55, 24, 25, 26, 27,
27, 28, 29, 7, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 28, 29, 30, 7, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 42,
42, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 57, 58, 59, 43, 44, 45, 46, 47, 49, 50, 51, 52, 53, 54, 56, 57, 58, 59,
60, 61, 62, 63, 64, 76, 78, 79, 80, 65, 66, 67, 68, 69, 71, 60, 61, 62, 63, 64, 75, 77, 78, 79, 65, 66, 67, 68, 70, 71,
72, 73, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 72, 14, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 9, 10}; 255, 255, 255, 255, 255, 255, 255, 255, 255, 8, 9, 10};
grpc_mdelem grpc_static_mdelem_for_static_strings(int a, int b) { grpc_mdelem grpc_static_mdelem_for_static_strings(int a, int b) {
if (a == -1 || b == -1) return GRPC_MDNULL; if (a == -1 || b == -1) return GRPC_MDNULL;
uint32_t k = (uint32_t)(a * 98 + b); uint32_t k = (uint32_t)(a * 97 + b);
uint32_t h = elems_phash(k); uint32_t h = elems_phash(k);
return h < GPR_ARRAY_SIZE(elem_keys) && elem_keys[h] == k return h < GPR_ARRAY_SIZE(elem_keys) && elem_keys[h] == k
? GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[elem_idxs[h]], ? GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[elem_idxs[h]],
@ -483,328 +478,324 @@ grpc_mdelem grpc_static_mdelem_for_static_strings(int a, int b) {
grpc_mdelem_data grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT] = { grpc_mdelem_data grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT] = {
{{.refcount = &grpc_static_metadata_refcounts[7], {{.refcount = &grpc_static_metadata_refcounts[7],
.data.refcounted = {g_bytes + 50, 11}}, .data.refcounted = {g_bytes + 50, 11}},
{.refcount = &grpc_static_metadata_refcounts[26], {.refcount = &grpc_static_metadata_refcounts[25],
.data.refcounted = {g_bytes + 355, 1}}}, .data.refcounted = {g_bytes + 344, 1}}},
{{.refcount = &grpc_static_metadata_refcounts[7], {{.refcount = &grpc_static_metadata_refcounts[7],
.data.refcounted = {g_bytes + 50, 11}}, .data.refcounted = {g_bytes + 50, 11}},
{.refcount = &grpc_static_metadata_refcounts[27], {.refcount = &grpc_static_metadata_refcounts[26],
.data.refcounted = {g_bytes + 356, 1}}}, .data.refcounted = {g_bytes + 345, 1}}},
{{.refcount = &grpc_static_metadata_refcounts[7], {{.refcount = &grpc_static_metadata_refcounts[7],
.data.refcounted = {g_bytes + 50, 11}}, .data.refcounted = {g_bytes + 50, 11}},
{.refcount = &grpc_static_metadata_refcounts[27],
.data.refcounted = {g_bytes + 346, 1}}},
{{.refcount = &grpc_static_metadata_refcounts[9],
.data.refcounted = {g_bytes + 77, 13}},
{.refcount = &grpc_static_metadata_refcounts[28], {.refcount = &grpc_static_metadata_refcounts[28],
.data.refcounted = {g_bytes + 357, 1}}}, .data.refcounted = {g_bytes + 347, 8}}},
{{.refcount = &grpc_static_metadata_refcounts[9], {{.refcount = &grpc_static_metadata_refcounts[9],
.data.refcounted = {g_bytes + 77, 13}}, .data.refcounted = {g_bytes + 77, 13}},
{.refcount = &grpc_static_metadata_refcounts[29], {.refcount = &grpc_static_metadata_refcounts[29],
.data.refcounted = {g_bytes + 358, 8}}}, .data.refcounted = {g_bytes + 355, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[9], {{.refcount = &grpc_static_metadata_refcounts[9],
.data.refcounted = {g_bytes + 77, 13}}, .data.refcounted = {g_bytes + 77, 13}},
{.refcount = &grpc_static_metadata_refcounts[30], {.refcount = &grpc_static_metadata_refcounts[30],
.data.refcounted = {g_bytes + 366, 4}}}, .data.refcounted = {g_bytes + 359, 7}}},
{{.refcount = &grpc_static_metadata_refcounts[9],
.data.refcounted = {g_bytes + 77, 13}},
{.refcount = &grpc_static_metadata_refcounts[31],
.data.refcounted = {g_bytes + 370, 7}}},
{{.refcount = &grpc_static_metadata_refcounts[5], {{.refcount = &grpc_static_metadata_refcounts[5],
.data.refcounted = {g_bytes + 36, 2}}, .data.refcounted = {g_bytes + 36, 2}},
{.refcount = &grpc_static_metadata_refcounts[32], {.refcount = &grpc_static_metadata_refcounts[31],
.data.refcounted = {g_bytes + 377, 8}}}, .data.refcounted = {g_bytes + 366, 8}}},
{{.refcount = &grpc_static_metadata_refcounts[11], {{.refcount = &grpc_static_metadata_refcounts[11],
.data.refcounted = {g_bytes + 110, 12}}, .data.refcounted = {g_bytes + 110, 12}},
{.refcount = &grpc_static_metadata_refcounts[33], {.refcount = &grpc_static_metadata_refcounts[32],
.data.refcounted = {g_bytes + 385, 16}}}, .data.refcounted = {g_bytes + 374, 16}}},
{{.refcount = &grpc_static_metadata_refcounts[1], {{.refcount = &grpc_static_metadata_refcounts[1],
.data.refcounted = {g_bytes + 5, 7}}, .data.refcounted = {g_bytes + 5, 7}},
{.refcount = &grpc_static_metadata_refcounts[34], {.refcount = &grpc_static_metadata_refcounts[33],
.data.refcounted = {g_bytes + 401, 4}}}, .data.refcounted = {g_bytes + 390, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[35], {.refcount = &grpc_static_metadata_refcounts[34],
.data.refcounted = {g_bytes + 405, 3}}}, .data.refcounted = {g_bytes + 394, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[35],
.data.refcounted = {g_bytes + 397, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[4],
.data.refcounted = {g_bytes + 29, 7}},
{.refcount = &grpc_static_metadata_refcounts[36], {.refcount = &grpc_static_metadata_refcounts[36],
.data.refcounted = {g_bytes + 408, 3}}}, .data.refcounted = {g_bytes + 400, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[4], {{.refcount = &grpc_static_metadata_refcounts[4],
.data.refcounted = {g_bytes + 29, 7}}, .data.refcounted = {g_bytes + 29, 7}},
{.refcount = &grpc_static_metadata_refcounts[37], {.refcount = &grpc_static_metadata_refcounts[37],
.data.refcounted = {g_bytes + 411, 4}}}, .data.refcounted = {g_bytes + 404, 5}}},
{{.refcount = &grpc_static_metadata_refcounts[4], {{.refcount = &grpc_static_metadata_refcounts[4],
.data.refcounted = {g_bytes + 29, 7}}, .data.refcounted = {g_bytes + 29, 7}},
{.refcount = &grpc_static_metadata_refcounts[38], {.refcount = &grpc_static_metadata_refcounts[38],
.data.refcounted = {g_bytes + 415, 5}}}, .data.refcounted = {g_bytes + 409, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[4],
.data.refcounted = {g_bytes + 29, 7}},
{.refcount = &grpc_static_metadata_refcounts[39],
.data.refcounted = {g_bytes + 420, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[3], {{.refcount = &grpc_static_metadata_refcounts[3],
.data.refcounted = {g_bytes + 19, 10}}, .data.refcounted = {g_bytes + 19, 10}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[1], {{.refcount = &grpc_static_metadata_refcounts[1],
.data.refcounted = {g_bytes + 5, 7}}, .data.refcounted = {g_bytes + 5, 7}},
{.refcount = &grpc_static_metadata_refcounts[40], {.refcount = &grpc_static_metadata_refcounts[39],
.data.refcounted = {g_bytes + 424, 3}}}, .data.refcounted = {g_bytes + 413, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[1], {{.refcount = &grpc_static_metadata_refcounts[1],
.data.refcounted = {g_bytes + 5, 7}}, .data.refcounted = {g_bytes + 5, 7}},
{.refcount = &grpc_static_metadata_refcounts[41], {.refcount = &grpc_static_metadata_refcounts[40],
.data.refcounted = {g_bytes + 427, 3}}}, .data.refcounted = {g_bytes + 416, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[0], {{.refcount = &grpc_static_metadata_refcounts[0],
.data.refcounted = {g_bytes + 0, 5}}, .data.refcounted = {g_bytes + 0, 5}},
{.refcount = &grpc_static_metadata_refcounts[42], {.refcount = &grpc_static_metadata_refcounts[41],
.data.refcounted = {g_bytes + 430, 1}}}, .data.refcounted = {g_bytes + 419, 1}}},
{{.refcount = &grpc_static_metadata_refcounts[0], {{.refcount = &grpc_static_metadata_refcounts[0],
.data.refcounted = {g_bytes + 0, 5}}, .data.refcounted = {g_bytes + 0, 5}},
{.refcount = &grpc_static_metadata_refcounts[42],
.data.refcounted = {g_bytes + 420, 11}}},
{{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[43], {.refcount = &grpc_static_metadata_refcounts[43],
.data.refcounted = {g_bytes + 431, 11}}}, .data.refcounted = {g_bytes + 431, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[44], {.refcount = &grpc_static_metadata_refcounts[44],
.data.refcounted = {g_bytes + 442, 3}}}, .data.refcounted = {g_bytes + 434, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[45], {.refcount = &grpc_static_metadata_refcounts[45],
.data.refcounted = {g_bytes + 445, 3}}}, .data.refcounted = {g_bytes + 437, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[46], {.refcount = &grpc_static_metadata_refcounts[46],
.data.refcounted = {g_bytes + 448, 3}}}, .data.refcounted = {g_bytes + 440, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[2],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 12, 7}},
{.refcount = &grpc_static_metadata_refcounts[47], {.refcount = &grpc_static_metadata_refcounts[47],
.data.refcounted = {g_bytes + 451, 3}}}, .data.refcounted = {g_bytes + 443, 3}}},
{{.refcount = &grpc_static_metadata_refcounts[2], {{.refcount = &grpc_static_metadata_refcounts[48],
.data.refcounted = {g_bytes + 12, 7}}, .data.refcounted = {g_bytes + 446, 14}},
{.refcount = &grpc_static_metadata_refcounts[48], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 454, 3}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[49], {{.refcount = &grpc_static_metadata_refcounts[49],
.data.refcounted = {g_bytes + 457, 14}}, .data.refcounted = {g_bytes + 460, 15}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[50], {{.refcount = &grpc_static_metadata_refcounts[49],
.data.refcounted = {g_bytes + 471, 15}}, .data.refcounted = {g_bytes + 460, 15}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[50],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 475, 13}}},
{{.refcount = &grpc_static_metadata_refcounts[50], {{.refcount = &grpc_static_metadata_refcounts[51],
.data.refcounted = {g_bytes + 471, 15}}, .data.refcounted = {g_bytes + 488, 15}},
{.refcount = &grpc_static_metadata_refcounts[51], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 486, 13}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[52], {{.refcount = &grpc_static_metadata_refcounts[52],
.data.refcounted = {g_bytes + 499, 15}}, .data.refcounted = {g_bytes + 503, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[53], {{.refcount = &grpc_static_metadata_refcounts[53],
.data.refcounted = {g_bytes + 514, 13}}, .data.refcounted = {g_bytes + 516, 6}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[54], {{.refcount = &grpc_static_metadata_refcounts[54],
.data.refcounted = {g_bytes + 527, 6}}, .data.refcounted = {g_bytes + 522, 27}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[55], {{.refcount = &grpc_static_metadata_refcounts[55],
.data.refcounted = {g_bytes + 533, 27}}, .data.refcounted = {g_bytes + 549, 3}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[56], {{.refcount = &grpc_static_metadata_refcounts[56],
.data.refcounted = {g_bytes + 560, 3}}, .data.refcounted = {g_bytes + 552, 5}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[57], {{.refcount = &grpc_static_metadata_refcounts[57],
.data.refcounted = {g_bytes + 563, 5}}, .data.refcounted = {g_bytes + 557, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[58], {{.refcount = &grpc_static_metadata_refcounts[58],
.data.refcounted = {g_bytes + 568, 13}}, .data.refcounted = {g_bytes + 570, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[59], {{.refcount = &grpc_static_metadata_refcounts[59],
.data.refcounted = {g_bytes + 581, 13}}, .data.refcounted = {g_bytes + 583, 19}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[60], {{.refcount = &grpc_static_metadata_refcounts[60],
.data.refcounted = {g_bytes + 594, 19}}, .data.refcounted = {g_bytes + 602, 16}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[61], {{.refcount = &grpc_static_metadata_refcounts[61],
.data.refcounted = {g_bytes + 613, 16}}, .data.refcounted = {g_bytes + 618, 16}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[62], {{.refcount = &grpc_static_metadata_refcounts[62],
.data.refcounted = {g_bytes + 629, 16}}, .data.refcounted = {g_bytes + 634, 14}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[63], {{.refcount = &grpc_static_metadata_refcounts[63],
.data.refcounted = {g_bytes + 645, 14}}, .data.refcounted = {g_bytes + 648, 16}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[64], {{.refcount = &grpc_static_metadata_refcounts[64],
.data.refcounted = {g_bytes + 659, 16}}, .data.refcounted = {g_bytes + 664, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[65],
.data.refcounted = {g_bytes + 675, 13}},
{.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[11], {{.refcount = &grpc_static_metadata_refcounts[11],
.data.refcounted = {g_bytes + 110, 12}}, .data.refcounted = {g_bytes + 110, 12}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[65],
.data.refcounted = {g_bytes + 677, 6}},
{.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[66], {{.refcount = &grpc_static_metadata_refcounts[66],
.data.refcounted = {g_bytes + 688, 6}}, .data.refcounted = {g_bytes + 683, 4}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[67], {{.refcount = &grpc_static_metadata_refcounts[67],
.data.refcounted = {g_bytes + 694, 4}}, .data.refcounted = {g_bytes + 687, 4}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[68], {{.refcount = &grpc_static_metadata_refcounts[68],
.data.refcounted = {g_bytes + 698, 4}}, .data.refcounted = {g_bytes + 691, 6}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[69], {{.refcount = &grpc_static_metadata_refcounts[69],
.data.refcounted = {g_bytes + 702, 6}}, .data.refcounted = {g_bytes + 697, 7}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[70], {{.refcount = &grpc_static_metadata_refcounts[70],
.data.refcounted = {g_bytes + 708, 7}}, .data.refcounted = {g_bytes + 704, 4}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[71],
.data.refcounted = {g_bytes + 715, 4}},
{.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[14], {{.refcount = &grpc_static_metadata_refcounts[14],
.data.refcounted = {g_bytes + 162, 4}}, .data.refcounted = {g_bytes + 162, 4}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[71],
.data.refcounted = {g_bytes + 708, 8}},
{.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[72], {{.refcount = &grpc_static_metadata_refcounts[72],
.data.refcounted = {g_bytes + 719, 8}}, .data.refcounted = {g_bytes + 716, 17}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[73], {{.refcount = &grpc_static_metadata_refcounts[73],
.data.refcounted = {g_bytes + 727, 17}}, .data.refcounted = {g_bytes + 733, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[74], {{.refcount = &grpc_static_metadata_refcounts[74],
.data.refcounted = {g_bytes + 744, 13}}, .data.refcounted = {g_bytes + 746, 8}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[75], {{.refcount = &grpc_static_metadata_refcounts[75],
.data.refcounted = {g_bytes + 757, 8}}, .data.refcounted = {g_bytes + 754, 19}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[76], {{.refcount = &grpc_static_metadata_refcounts[76],
.data.refcounted = {g_bytes + 765, 19}}, .data.refcounted = {g_bytes + 773, 13}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[77],
.data.refcounted = {g_bytes + 784, 13}},
{.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[15], {{.refcount = &grpc_static_metadata_refcounts[15],
.data.refcounted = {g_bytes + 166, 8}}, .data.refcounted = {g_bytes + 166, 8}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[16], {{.refcount = &grpc_static_metadata_refcounts[77],
.data.refcounted = {g_bytes + 174, 11}}, .data.refcounted = {g_bytes + 786, 4}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[78], {{.refcount = &grpc_static_metadata_refcounts[78],
.data.refcounted = {g_bytes + 797, 4}}, .data.refcounted = {g_bytes + 790, 8}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[79], {{.refcount = &grpc_static_metadata_refcounts[79],
.data.refcounted = {g_bytes + 801, 8}}, .data.refcounted = {g_bytes + 798, 12}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[80], {{.refcount = &grpc_static_metadata_refcounts[80],
.data.refcounted = {g_bytes + 809, 12}}, .data.refcounted = {g_bytes + 810, 18}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[81], {{.refcount = &grpc_static_metadata_refcounts[81],
.data.refcounted = {g_bytes + 821, 18}}, .data.refcounted = {g_bytes + 828, 19}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[82], {{.refcount = &grpc_static_metadata_refcounts[82],
.data.refcounted = {g_bytes + 839, 19}}, .data.refcounted = {g_bytes + 847, 5}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[83], {{.refcount = &grpc_static_metadata_refcounts[83],
.data.refcounted = {g_bytes + 858, 5}}, .data.refcounted = {g_bytes + 852, 7}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[84], {{.refcount = &grpc_static_metadata_refcounts[84],
.data.refcounted = {g_bytes + 863, 7}}, .data.refcounted = {g_bytes + 859, 7}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[85], {{.refcount = &grpc_static_metadata_refcounts[85],
.data.refcounted = {g_bytes + 870, 7}}, .data.refcounted = {g_bytes + 866, 11}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[86], {{.refcount = &grpc_static_metadata_refcounts[86],
.data.refcounted = {g_bytes + 877, 11}}, .data.refcounted = {g_bytes + 877, 6}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[87], {{.refcount = &grpc_static_metadata_refcounts[87],
.data.refcounted = {g_bytes + 888, 6}}, .data.refcounted = {g_bytes + 883, 10}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[88], {{.refcount = &grpc_static_metadata_refcounts[88],
.data.refcounted = {g_bytes + 894, 10}}, .data.refcounted = {g_bytes + 893, 25}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[89], {{.refcount = &grpc_static_metadata_refcounts[89],
.data.refcounted = {g_bytes + 904, 25}}, .data.refcounted = {g_bytes + 918, 17}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[90],
.data.refcounted = {g_bytes + 929, 17}},
{.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[13], {{.refcount = &grpc_static_metadata_refcounts[13],
.data.refcounted = {g_bytes + 152, 10}}, .data.refcounted = {g_bytes + 152, 10}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[90],
.data.refcounted = {g_bytes + 935, 4}},
{.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[91], {{.refcount = &grpc_static_metadata_refcounts[91],
.data.refcounted = {g_bytes + 946, 4}}, .data.refcounted = {g_bytes + 939, 3}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[92], {{.refcount = &grpc_static_metadata_refcounts[92],
.data.refcounted = {g_bytes + 950, 3}}, .data.refcounted = {g_bytes + 942, 16}},
{.refcount = &grpc_static_metadata_refcounts[20], {.refcount = &grpc_static_metadata_refcounts[19],
.data.refcounted = {g_bytes + 227, 0}}}, .data.refcounted = {g_bytes + 216, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[93],
.data.refcounted = {g_bytes + 953, 16}},
{.refcount = &grpc_static_metadata_refcounts[20],
.data.refcounted = {g_bytes + 227, 0}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[29], {.refcount = &grpc_static_metadata_refcounts[28],
.data.refcounted = {g_bytes + 358, 8}}}, .data.refcounted = {g_bytes + 347, 8}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[31], {.refcount = &grpc_static_metadata_refcounts[30],
.data.refcounted = {g_bytes + 370, 7}}}, .data.refcounted = {g_bytes + 359, 7}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[94], {.refcount = &grpc_static_metadata_refcounts[93],
.data.refcounted = {g_bytes + 969, 16}}}, .data.refcounted = {g_bytes + 958, 16}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[30], {.refcount = &grpc_static_metadata_refcounts[29],
.data.refcounted = {g_bytes + 366, 4}}}, .data.refcounted = {g_bytes + 355, 4}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[95], {.refcount = &grpc_static_metadata_refcounts[94],
.data.refcounted = {g_bytes + 985, 13}}}, .data.refcounted = {g_bytes + 974, 13}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[96], {.refcount = &grpc_static_metadata_refcounts[95],
.data.refcounted = {g_bytes + 998, 12}}}, .data.refcounted = {g_bytes + 987, 12}}},
{{.refcount = &grpc_static_metadata_refcounts[10], {{.refcount = &grpc_static_metadata_refcounts[10],
.data.refcounted = {g_bytes + 90, 20}}, .data.refcounted = {g_bytes + 90, 20}},
{.refcount = &grpc_static_metadata_refcounts[97], {.refcount = &grpc_static_metadata_refcounts[96],
.data.refcounted = {g_bytes + 1010, 21}}}, .data.refcounted = {g_bytes + 999, 21}}},
}; };
const uint8_t grpc_static_accept_encoding_metadata[8] = {0, 74, 75, 76, const uint8_t grpc_static_accept_encoding_metadata[8] = {0, 73, 74, 75,
77, 78, 79, 80}; 76, 77, 78, 79};

@ -44,7 +44,7 @@
#include "src/core/lib/transport/metadata.h" #include "src/core/lib/transport/metadata.h"
#define GRPC_STATIC_MDSTR_COUNT 98 #define GRPC_STATIC_MDSTR_COUNT 97
extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT]; extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT];
/* ":path" */ /* ":path" */
#define GRPC_MDSTR_PATH (grpc_static_slice_table[0]) #define GRPC_MDSTR_PATH (grpc_static_slice_table[0])
@ -78,174 +78,172 @@ extern const grpc_slice grpc_static_slice_table[GRPC_STATIC_MDSTR_COUNT];
#define GRPC_MDSTR_HOST (grpc_static_slice_table[14]) #define GRPC_MDSTR_HOST (grpc_static_slice_table[14])
/* "lb-token" */ /* "lb-token" */
#define GRPC_MDSTR_LB_TOKEN (grpc_static_slice_table[15]) #define GRPC_MDSTR_LB_TOKEN (grpc_static_slice_table[15])
/* "lb-cost-bin" */
#define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table[16])
/* "grpc-timeout" */ /* "grpc-timeout" */
#define GRPC_MDSTR_GRPC_TIMEOUT (grpc_static_slice_table[17]) #define GRPC_MDSTR_GRPC_TIMEOUT (grpc_static_slice_table[16])
/* "grpc-tracing-bin" */ /* "grpc-tracing-bin" */
#define GRPC_MDSTR_GRPC_TRACING_BIN (grpc_static_slice_table[18]) #define GRPC_MDSTR_GRPC_TRACING_BIN (grpc_static_slice_table[17])
/* "grpc-stats-bin" */ /* "grpc-stats-bin" */
#define GRPC_MDSTR_GRPC_STATS_BIN (grpc_static_slice_table[19]) #define GRPC_MDSTR_GRPC_STATS_BIN (grpc_static_slice_table[18])
/* "" */ /* "" */
#define GRPC_MDSTR_EMPTY (grpc_static_slice_table[20]) #define GRPC_MDSTR_EMPTY (grpc_static_slice_table[19])
/* "grpc.wait_for_ready" */ /* "grpc.wait_for_ready" */
#define GRPC_MDSTR_GRPC_DOT_WAIT_FOR_READY (grpc_static_slice_table[21]) #define GRPC_MDSTR_GRPC_DOT_WAIT_FOR_READY (grpc_static_slice_table[20])
/* "grpc.timeout" */ /* "grpc.timeout" */
#define GRPC_MDSTR_GRPC_DOT_TIMEOUT (grpc_static_slice_table[22]) #define GRPC_MDSTR_GRPC_DOT_TIMEOUT (grpc_static_slice_table[21])
/* "grpc.max_request_message_bytes" */ /* "grpc.max_request_message_bytes" */
#define GRPC_MDSTR_GRPC_DOT_MAX_REQUEST_MESSAGE_BYTES \ #define GRPC_MDSTR_GRPC_DOT_MAX_REQUEST_MESSAGE_BYTES \
(grpc_static_slice_table[23]) (grpc_static_slice_table[22])
/* "grpc.max_response_message_bytes" */ /* "grpc.max_response_message_bytes" */
#define GRPC_MDSTR_GRPC_DOT_MAX_RESPONSE_MESSAGE_BYTES \ #define GRPC_MDSTR_GRPC_DOT_MAX_RESPONSE_MESSAGE_BYTES \
(grpc_static_slice_table[24]) (grpc_static_slice_table[23])
/* "/grpc.lb.v1.LoadBalancer/BalanceLoad" */ /* "/grpc.lb.v1.LoadBalancer/BalanceLoad" */
#define GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD \ #define GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD \
(grpc_static_slice_table[25]) (grpc_static_slice_table[24])
/* "0" */ /* "0" */
#define GRPC_MDSTR_0 (grpc_static_slice_table[26]) #define GRPC_MDSTR_0 (grpc_static_slice_table[25])
/* "1" */ /* "1" */
#define GRPC_MDSTR_1 (grpc_static_slice_table[27]) #define GRPC_MDSTR_1 (grpc_static_slice_table[26])
/* "2" */ /* "2" */
#define GRPC_MDSTR_2 (grpc_static_slice_table[28]) #define GRPC_MDSTR_2 (grpc_static_slice_table[27])
/* "identity" */ /* "identity" */
#define GRPC_MDSTR_IDENTITY (grpc_static_slice_table[29]) #define GRPC_MDSTR_IDENTITY (grpc_static_slice_table[28])
/* "gzip" */ /* "gzip" */
#define GRPC_MDSTR_GZIP (grpc_static_slice_table[30]) #define GRPC_MDSTR_GZIP (grpc_static_slice_table[29])
/* "deflate" */ /* "deflate" */
#define GRPC_MDSTR_DEFLATE (grpc_static_slice_table[31]) #define GRPC_MDSTR_DEFLATE (grpc_static_slice_table[30])
/* "trailers" */ /* "trailers" */
#define GRPC_MDSTR_TRAILERS (grpc_static_slice_table[32]) #define GRPC_MDSTR_TRAILERS (grpc_static_slice_table[31])
/* "application/grpc" */ /* "application/grpc" */
#define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table[33]) #define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table[32])
/* "POST" */ /* "POST" */
#define GRPC_MDSTR_POST (grpc_static_slice_table[34]) #define GRPC_MDSTR_POST (grpc_static_slice_table[33])
/* "200" */ /* "200" */
#define GRPC_MDSTR_200 (grpc_static_slice_table[35]) #define GRPC_MDSTR_200 (grpc_static_slice_table[34])
/* "404" */ /* "404" */
#define GRPC_MDSTR_404 (grpc_static_slice_table[36]) #define GRPC_MDSTR_404 (grpc_static_slice_table[35])
/* "http" */ /* "http" */
#define GRPC_MDSTR_HTTP (grpc_static_slice_table[37]) #define GRPC_MDSTR_HTTP (grpc_static_slice_table[36])
/* "https" */ /* "https" */
#define GRPC_MDSTR_HTTPS (grpc_static_slice_table[38]) #define GRPC_MDSTR_HTTPS (grpc_static_slice_table[37])
/* "grpc" */ /* "grpc" */
#define GRPC_MDSTR_GRPC (grpc_static_slice_table[39]) #define GRPC_MDSTR_GRPC (grpc_static_slice_table[38])
/* "GET" */ /* "GET" */
#define GRPC_MDSTR_GET (grpc_static_slice_table[40]) #define GRPC_MDSTR_GET (grpc_static_slice_table[39])
/* "PUT" */ /* "PUT" */
#define GRPC_MDSTR_PUT (grpc_static_slice_table[41]) #define GRPC_MDSTR_PUT (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" */ /* "/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])
/* "204" */ /* "204" */
#define GRPC_MDSTR_204 (grpc_static_slice_table[44]) #define GRPC_MDSTR_204 (grpc_static_slice_table[43])
/* "206" */ /* "206" */
#define GRPC_MDSTR_206 (grpc_static_slice_table[45]) #define GRPC_MDSTR_206 (grpc_static_slice_table[44])
/* "304" */ /* "304" */
#define GRPC_MDSTR_304 (grpc_static_slice_table[46]) #define GRPC_MDSTR_304 (grpc_static_slice_table[45])
/* "400" */ /* "400" */
#define GRPC_MDSTR_400 (grpc_static_slice_table[47]) #define GRPC_MDSTR_400 (grpc_static_slice_table[46])
/* "500" */ /* "500" */
#define GRPC_MDSTR_500 (grpc_static_slice_table[48]) #define GRPC_MDSTR_500 (grpc_static_slice_table[47])
/* "accept-charset" */ /* "accept-charset" */
#define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table[49]) #define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table[48])
/* "accept-encoding" */ /* "accept-encoding" */
#define GRPC_MDSTR_ACCEPT_ENCODING (grpc_static_slice_table[50]) #define GRPC_MDSTR_ACCEPT_ENCODING (grpc_static_slice_table[49])
/* "gzip, deflate" */ /* "gzip, deflate" */
#define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table[51]) #define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table[50])
/* "accept-language" */ /* "accept-language" */
#define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table[52]) #define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table[51])
/* "accept-ranges" */ /* "accept-ranges" */
#define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table[53]) #define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table[52])
/* "accept" */ /* "accept" */
#define GRPC_MDSTR_ACCEPT (grpc_static_slice_table[54]) #define GRPC_MDSTR_ACCEPT (grpc_static_slice_table[53])
/* "access-control-allow-origin" */ /* "access-control-allow-origin" */
#define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table[55]) #define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table[54])
/* "age" */ /* "age" */
#define GRPC_MDSTR_AGE (grpc_static_slice_table[56]) #define GRPC_MDSTR_AGE (grpc_static_slice_table[55])
/* "allow" */ /* "allow" */
#define GRPC_MDSTR_ALLOW (grpc_static_slice_table[57]) #define GRPC_MDSTR_ALLOW (grpc_static_slice_table[56])
/* "authorization" */ /* "authorization" */
#define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table[58]) #define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table[57])
/* "cache-control" */ /* "cache-control" */
#define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table[59]) #define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table[58])
/* "content-disposition" */ /* "content-disposition" */
#define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table[60]) #define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table[59])
/* "content-encoding" */ /* "content-encoding" */
#define GRPC_MDSTR_CONTENT_ENCODING (grpc_static_slice_table[61]) #define GRPC_MDSTR_CONTENT_ENCODING (grpc_static_slice_table[60])
/* "content-language" */ /* "content-language" */
#define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table[62]) #define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table[61])
/* "content-length" */ /* "content-length" */
#define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table[63]) #define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table[62])
/* "content-location" */ /* "content-location" */
#define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table[64]) #define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table[63])
/* "content-range" */ /* "content-range" */
#define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table[65]) #define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table[64])
/* "cookie" */ /* "cookie" */
#define GRPC_MDSTR_COOKIE (grpc_static_slice_table[66]) #define GRPC_MDSTR_COOKIE (grpc_static_slice_table[65])
/* "date" */ /* "date" */
#define GRPC_MDSTR_DATE (grpc_static_slice_table[67]) #define GRPC_MDSTR_DATE (grpc_static_slice_table[66])
/* "etag" */ /* "etag" */
#define GRPC_MDSTR_ETAG (grpc_static_slice_table[68]) #define GRPC_MDSTR_ETAG (grpc_static_slice_table[67])
/* "expect" */ /* "expect" */
#define GRPC_MDSTR_EXPECT (grpc_static_slice_table[69]) #define GRPC_MDSTR_EXPECT (grpc_static_slice_table[68])
/* "expires" */ /* "expires" */
#define GRPC_MDSTR_EXPIRES (grpc_static_slice_table[70]) #define GRPC_MDSTR_EXPIRES (grpc_static_slice_table[69])
/* "from" */ /* "from" */
#define GRPC_MDSTR_FROM (grpc_static_slice_table[71]) #define GRPC_MDSTR_FROM (grpc_static_slice_table[70])
/* "if-match" */ /* "if-match" */
#define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table[72]) #define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table[71])
/* "if-modified-since" */ /* "if-modified-since" */
#define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table[73]) #define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table[72])
/* "if-none-match" */ /* "if-none-match" */
#define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table[74]) #define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table[73])
/* "if-range" */ /* "if-range" */
#define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table[75]) #define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table[74])
/* "if-unmodified-since" */ /* "if-unmodified-since" */
#define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table[76]) #define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table[75])
/* "last-modified" */ /* "last-modified" */
#define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table[77]) #define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table[76])
/* "link" */ /* "link" */
#define GRPC_MDSTR_LINK (grpc_static_slice_table[78]) #define GRPC_MDSTR_LINK (grpc_static_slice_table[77])
/* "location" */ /* "location" */
#define GRPC_MDSTR_LOCATION (grpc_static_slice_table[79]) #define GRPC_MDSTR_LOCATION (grpc_static_slice_table[78])
/* "max-forwards" */ /* "max-forwards" */
#define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table[80]) #define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table[79])
/* "proxy-authenticate" */ /* "proxy-authenticate" */
#define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table[81]) #define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table[80])
/* "proxy-authorization" */ /* "proxy-authorization" */
#define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table[82]) #define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table[81])
/* "range" */ /* "range" */
#define GRPC_MDSTR_RANGE (grpc_static_slice_table[83]) #define GRPC_MDSTR_RANGE (grpc_static_slice_table[82])
/* "referer" */ /* "referer" */
#define GRPC_MDSTR_REFERER (grpc_static_slice_table[84]) #define GRPC_MDSTR_REFERER (grpc_static_slice_table[83])
/* "refresh" */ /* "refresh" */
#define GRPC_MDSTR_REFRESH (grpc_static_slice_table[85]) #define GRPC_MDSTR_REFRESH (grpc_static_slice_table[84])
/* "retry-after" */ /* "retry-after" */
#define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table[86]) #define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table[85])
/* "server" */ /* "server" */
#define GRPC_MDSTR_SERVER (grpc_static_slice_table[87]) #define GRPC_MDSTR_SERVER (grpc_static_slice_table[86])
/* "set-cookie" */ /* "set-cookie" */
#define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table[88]) #define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table[87])
/* "strict-transport-security" */ /* "strict-transport-security" */
#define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table[89]) #define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table[88])
/* "transfer-encoding" */ /* "transfer-encoding" */
#define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table[90]) #define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table[89])
/* "vary" */ /* "vary" */
#define GRPC_MDSTR_VARY (grpc_static_slice_table[91]) #define GRPC_MDSTR_VARY (grpc_static_slice_table[90])
/* "via" */ /* "via" */
#define GRPC_MDSTR_VIA (grpc_static_slice_table[92]) #define GRPC_MDSTR_VIA (grpc_static_slice_table[91])
/* "www-authenticate" */ /* "www-authenticate" */
#define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table[93]) #define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table[92])
/* "identity,deflate" */ /* "identity,deflate" */
#define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table[94]) #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table[93])
/* "identity,gzip" */ /* "identity,gzip" */
#define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table[95]) #define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table[94])
/* "deflate,gzip" */ /* "deflate,gzip" */
#define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table[96]) #define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table[95])
/* "identity,deflate,gzip" */ /* "identity,deflate,gzip" */
#define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \ #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
(grpc_static_slice_table[97]) (grpc_static_slice_table[96])
extern const grpc_slice_refcount_vtable grpc_static_metadata_vtable; extern const grpc_slice_refcount_vtable grpc_static_metadata_vtable;
extern grpc_slice_refcount extern grpc_slice_refcount
@ -257,7 +255,7 @@ extern grpc_slice_refcount
#define GRPC_STATIC_METADATA_INDEX(static_slice) \ #define GRPC_STATIC_METADATA_INDEX(static_slice) \
((int)((static_slice).refcount - grpc_static_metadata_refcounts)) ((int)((static_slice).refcount - grpc_static_metadata_refcounts))
#define GRPC_STATIC_MDELEM_COUNT 81 #define GRPC_STATIC_MDELEM_COUNT 80
extern grpc_mdelem_data grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT]; extern grpc_mdelem_data grpc_static_mdelem_table[GRPC_STATIC_MDELEM_COUNT];
extern uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT]; extern uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT];
/* "grpc-status": "0" */ /* "grpc-status": "0" */
@ -428,81 +426,78 @@ extern uintptr_t grpc_static_mdelem_user_data[GRPC_STATIC_MDELEM_COUNT];
/* "lb-token": "" */ /* "lb-token": "" */
#define GRPC_MDELEM_LB_TOKEN_EMPTY \ #define GRPC_MDELEM_LB_TOKEN_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[55], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[55], GRPC_MDELEM_STORAGE_STATIC))
/* "lb-cost-bin": "" */
#define GRPC_MDELEM_LB_COST_BIN_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[56], GRPC_MDELEM_STORAGE_STATIC))
/* "link": "" */ /* "link": "" */
#define GRPC_MDELEM_LINK_EMPTY \ #define GRPC_MDELEM_LINK_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[57], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[56], GRPC_MDELEM_STORAGE_STATIC))
/* "location": "" */ /* "location": "" */
#define GRPC_MDELEM_LOCATION_EMPTY \ #define GRPC_MDELEM_LOCATION_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[58], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[57], GRPC_MDELEM_STORAGE_STATIC))
/* "max-forwards": "" */ /* "max-forwards": "" */
#define GRPC_MDELEM_MAX_FORWARDS_EMPTY \ #define GRPC_MDELEM_MAX_FORWARDS_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[59], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[58], GRPC_MDELEM_STORAGE_STATIC))
/* "proxy-authenticate": "" */ /* "proxy-authenticate": "" */
#define GRPC_MDELEM_PROXY_AUTHENTICATE_EMPTY \ #define GRPC_MDELEM_PROXY_AUTHENTICATE_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[60], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[59], GRPC_MDELEM_STORAGE_STATIC))
/* "proxy-authorization": "" */ /* "proxy-authorization": "" */
#define GRPC_MDELEM_PROXY_AUTHORIZATION_EMPTY \ #define GRPC_MDELEM_PROXY_AUTHORIZATION_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[61], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[60], GRPC_MDELEM_STORAGE_STATIC))
/* "range": "" */ /* "range": "" */
#define GRPC_MDELEM_RANGE_EMPTY \ #define GRPC_MDELEM_RANGE_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[62], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[61], GRPC_MDELEM_STORAGE_STATIC))
/* "referer": "" */ /* "referer": "" */
#define GRPC_MDELEM_REFERER_EMPTY \ #define GRPC_MDELEM_REFERER_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[63], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[62], GRPC_MDELEM_STORAGE_STATIC))
/* "refresh": "" */ /* "refresh": "" */
#define GRPC_MDELEM_REFRESH_EMPTY \ #define GRPC_MDELEM_REFRESH_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[64], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[63], GRPC_MDELEM_STORAGE_STATIC))
/* "retry-after": "" */ /* "retry-after": "" */
#define GRPC_MDELEM_RETRY_AFTER_EMPTY \ #define GRPC_MDELEM_RETRY_AFTER_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[65], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[64], GRPC_MDELEM_STORAGE_STATIC))
/* "server": "" */ /* "server": "" */
#define GRPC_MDELEM_SERVER_EMPTY \ #define GRPC_MDELEM_SERVER_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[66], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[65], GRPC_MDELEM_STORAGE_STATIC))
/* "set-cookie": "" */ /* "set-cookie": "" */
#define GRPC_MDELEM_SET_COOKIE_EMPTY \ #define GRPC_MDELEM_SET_COOKIE_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[67], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[66], GRPC_MDELEM_STORAGE_STATIC))
/* "strict-transport-security": "" */ /* "strict-transport-security": "" */
#define GRPC_MDELEM_STRICT_TRANSPORT_SECURITY_EMPTY \ #define GRPC_MDELEM_STRICT_TRANSPORT_SECURITY_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[68], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[67], GRPC_MDELEM_STORAGE_STATIC))
/* "transfer-encoding": "" */ /* "transfer-encoding": "" */
#define GRPC_MDELEM_TRANSFER_ENCODING_EMPTY \ #define GRPC_MDELEM_TRANSFER_ENCODING_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[69], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[68], GRPC_MDELEM_STORAGE_STATIC))
/* "user-agent": "" */ /* "user-agent": "" */
#define GRPC_MDELEM_USER_AGENT_EMPTY \ #define GRPC_MDELEM_USER_AGENT_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[70], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[69], GRPC_MDELEM_STORAGE_STATIC))
/* "vary": "" */ /* "vary": "" */
#define GRPC_MDELEM_VARY_EMPTY \ #define GRPC_MDELEM_VARY_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[71], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[70], GRPC_MDELEM_STORAGE_STATIC))
/* "via": "" */ /* "via": "" */
#define GRPC_MDELEM_VIA_EMPTY \ #define GRPC_MDELEM_VIA_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[72], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[71], GRPC_MDELEM_STORAGE_STATIC))
/* "www-authenticate": "" */ /* "www-authenticate": "" */
#define GRPC_MDELEM_WWW_AUTHENTICATE_EMPTY \ #define GRPC_MDELEM_WWW_AUTHENTICATE_EMPTY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[73], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[72], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "identity" */ /* "grpc-accept-encoding": "identity" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[74], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[73], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "deflate" */ /* "grpc-accept-encoding": "deflate" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[75], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[74], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "identity,deflate" */ /* "grpc-accept-encoding": "identity,deflate" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[76], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[75], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "gzip" */ /* "grpc-accept-encoding": "gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_GZIP \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_GZIP \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[77], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[76], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "identity,gzip" */ /* "grpc-accept-encoding": "identity,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[78], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[77], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "deflate,gzip" */ /* "grpc-accept-encoding": "deflate,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE_COMMA_GZIP \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE_COMMA_GZIP \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[79], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[78], GRPC_MDELEM_STORAGE_STATIC))
/* "grpc-accept-encoding": "identity,deflate,gzip" */ /* "grpc-accept-encoding": "identity,deflate,gzip" */
#define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \ #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
(GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[80], GRPC_MDELEM_STORAGE_STATIC)) (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table[79], GRPC_MDELEM_STORAGE_STATIC))
grpc_mdelem grpc_static_mdelem_for_static_strings(int a, int b); grpc_mdelem grpc_static_mdelem_for_static_strings(int a, int b);
typedef enum { typedef enum {
@ -522,7 +517,6 @@ typedef enum {
GRPC_BATCH_USER_AGENT, GRPC_BATCH_USER_AGENT,
GRPC_BATCH_HOST, GRPC_BATCH_HOST,
GRPC_BATCH_LB_TOKEN, GRPC_BATCH_LB_TOKEN,
GRPC_BATCH_LB_COST_BIN,
GRPC_BATCH_CALLOUTS_COUNT GRPC_BATCH_CALLOUTS_COUNT
} grpc_metadata_batch_callouts_index; } grpc_metadata_batch_callouts_index;
@ -545,7 +539,6 @@ typedef union {
struct grpc_linked_mdelem *user_agent; struct grpc_linked_mdelem *user_agent;
struct grpc_linked_mdelem *host; struct grpc_linked_mdelem *host;
struct grpc_linked_mdelem *lb_token; struct grpc_linked_mdelem *lb_token;
struct grpc_linked_mdelem *lb_cost_bin;
} named; } named;
} grpc_metadata_batch_callouts; } grpc_metadata_batch_callouts;

@ -224,4 +224,20 @@ const struct census_context* ServerContext::census_context() const {
return grpc_census_call_get_context(call_); return grpc_census_call_get_context(call_);
} }
void ServerContext::SetLoadReportingCosts(
const std::vector<grpc::string>& cost_data) {
if (call_ == nullptr) return;
grpc_load_reporting_cost_context* cost_ctx =
static_cast<grpc_load_reporting_cost_context*>(
gpr_malloc(sizeof(*cost_ctx)));
cost_ctx->values_count = cost_data.size();
cost_ctx->values = static_cast<grpc_slice*>(
gpr_malloc(sizeof(*cost_ctx->values) * cost_ctx->values_count));
for (size_t i = 0; i < cost_ctx->values_count; ++i) {
cost_ctx->values[i] =
grpc_slice_from_copied_buffer(cost_data[i].data(), cost_data[i].size());
}
grpc_call_set_load_reporting_cost_context(call_, cost_ctx);
}
} // namespace grpc } // namespace grpc

@ -107,6 +107,7 @@ grpc_channel_register_call_type grpc_channel_register_call_import;
grpc_channel_create_registered_call_type grpc_channel_create_registered_call_import; grpc_channel_create_registered_call_type grpc_channel_create_registered_call_import;
grpc_call_start_batch_type grpc_call_start_batch_import; grpc_call_start_batch_type grpc_call_start_batch_import;
grpc_call_get_peer_type grpc_call_get_peer_import; grpc_call_get_peer_type grpc_call_get_peer_import;
grpc_call_set_load_reporting_cost_context_type grpc_call_set_load_reporting_cost_context_import;
grpc_census_call_set_context_type grpc_census_call_set_context_import; grpc_census_call_set_context_type grpc_census_call_set_context_import;
grpc_census_call_get_context_type grpc_census_call_get_context_import; grpc_census_call_get_context_type grpc_census_call_get_context_import;
grpc_channel_get_target_type grpc_channel_get_target_import; grpc_channel_get_target_type grpc_channel_get_target_import;
@ -398,6 +399,7 @@ void grpc_rb_load_imports(HMODULE library) {
grpc_channel_create_registered_call_import = (grpc_channel_create_registered_call_type) GetProcAddress(library, "grpc_channel_create_registered_call"); grpc_channel_create_registered_call_import = (grpc_channel_create_registered_call_type) GetProcAddress(library, "grpc_channel_create_registered_call");
grpc_call_start_batch_import = (grpc_call_start_batch_type) GetProcAddress(library, "grpc_call_start_batch"); grpc_call_start_batch_import = (grpc_call_start_batch_type) GetProcAddress(library, "grpc_call_start_batch");
grpc_call_get_peer_import = (grpc_call_get_peer_type) GetProcAddress(library, "grpc_call_get_peer"); grpc_call_get_peer_import = (grpc_call_get_peer_type) GetProcAddress(library, "grpc_call_get_peer");
grpc_call_set_load_reporting_cost_context_import = (grpc_call_set_load_reporting_cost_context_type) GetProcAddress(library, "grpc_call_set_load_reporting_cost_context");
grpc_census_call_set_context_import = (grpc_census_call_set_context_type) GetProcAddress(library, "grpc_census_call_set_context"); grpc_census_call_set_context_import = (grpc_census_call_set_context_type) GetProcAddress(library, "grpc_census_call_set_context");
grpc_census_call_get_context_import = (grpc_census_call_get_context_type) GetProcAddress(library, "grpc_census_call_get_context"); grpc_census_call_get_context_import = (grpc_census_call_get_context_type) GetProcAddress(library, "grpc_census_call_get_context");
grpc_channel_get_target_import = (grpc_channel_get_target_type) GetProcAddress(library, "grpc_channel_get_target"); grpc_channel_get_target_import = (grpc_channel_get_target_type) GetProcAddress(library, "grpc_channel_get_target");

@ -272,6 +272,9 @@ extern grpc_call_start_batch_type grpc_call_start_batch_import;
typedef char *(*grpc_call_get_peer_type)(grpc_call *call); typedef char *(*grpc_call_get_peer_type)(grpc_call *call);
extern grpc_call_get_peer_type grpc_call_get_peer_import; extern grpc_call_get_peer_type grpc_call_get_peer_import;
#define grpc_call_get_peer grpc_call_get_peer_import #define grpc_call_get_peer grpc_call_get_peer_import
typedef void(*grpc_call_set_load_reporting_cost_context_type)(grpc_call *call, struct grpc_load_reporting_cost_context *context);
extern grpc_call_set_load_reporting_cost_context_type grpc_call_set_load_reporting_cost_context_import;
#define grpc_call_set_load_reporting_cost_context grpc_call_set_load_reporting_cost_context_import
typedef void(*grpc_census_call_set_context_type)(grpc_call *call, struct census_context *context); typedef void(*grpc_census_call_set_context_type)(grpc_call *call, struct census_context *context);
extern grpc_census_call_set_context_type grpc_census_call_set_context_import; extern grpc_census_call_set_context_type grpc_census_call_set_context_import;
#define grpc_census_call_set_context grpc_census_call_set_context_import #define grpc_census_call_set_context grpc_census_call_set_context_import

@ -15,7 +15,6 @@
"\x0Auser-agent" "\x0Auser-agent"
"\x04host" "\x04host"
"\x08lb-token" "\x08lb-token"
"\x0Blb-cost-bin"
"\x0Cgrpc-timeout" "\x0Cgrpc-timeout"
"\x10grpc-tracing-bin" "\x10grpc-tracing-bin"
"\x0Egrpc-stats-bin" "\x0Egrpc-stats-bin"
@ -153,7 +152,6 @@
"\x00\x13if-unmodified-since\x00" "\x00\x13if-unmodified-since\x00"
"\x00\x0Dlast-modified\x00" "\x00\x0Dlast-modified\x00"
"\x00\x08lb-token\x00" "\x00\x08lb-token\x00"
"\x00\x0Blb-cost-bin\x00"
"\x00\x04link\x00" "\x00\x04link\x00"
"\x00\x08location\x00" "\x00\x08location\x00"
"\x00\x0Cmax-forwards\x00" "\x00\x0Cmax-forwards\x00"

@ -31,23 +31,24 @@
* *
*/ */
#include "test/core/end2end/end2end_tests.h"
#include <string.h> #include <string.h>
#include <grpc/byte_buffer.h> #include <grpc/byte_buffer.h>
#include <grpc/load_reporting.h>
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/string_util.h> #include <grpc/support/string_util.h>
#include <grpc/support/time.h> #include <grpc/support/time.h>
#include <grpc/support/useful.h> #include <grpc/support/useful.h>
#include "test/core/end2end/cq_verifier.h"
#include "src/core/ext/load_reporting/load_reporting.h" #include "src/core/ext/load_reporting/load_reporting.h"
#include "src/core/ext/load_reporting/load_reporting_filter.h" #include "src/core/ext/load_reporting/load_reporting_filter.h"
#include "src/core/lib/channel/channel_args.h" #include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/transport/static_metadata.h" #include "src/core/lib/transport/static_metadata.h"
#include "test/core/end2end/cq_verifier.h"
#include "test/core/end2end/end2end_tests.h"
enum { TIMEOUT = 200000 }; enum { TIMEOUT = 200000 };
static void *tag(intptr_t t) { return (void *)t; } static void *tag(intptr_t t) { return (void *)t; }
@ -124,7 +125,8 @@ static void end_test(grpc_end2end_test_fixture *f) {
static void request_response_with_payload( static void request_response_with_payload(
grpc_end2end_test_config config, grpc_end2end_test_fixture f, grpc_end2end_test_config config, grpc_end2end_test_fixture f,
const char *method_name, const char *request_msg, const char *response_msg, const char *method_name, const char *request_msg, const char *response_msg,
grpc_metadata *initial_lr_metadata, grpc_metadata *trailing_lr_metadata) { grpc_metadata *initial_lr_metadata,
grpc_load_reporting_cost_context *cost_ctx) {
grpc_slice request_payload_slice = grpc_slice_from_static_string(request_msg); grpc_slice request_payload_slice = grpc_slice_from_static_string(request_msg);
grpc_slice response_payload_slice = grpc_slice response_payload_slice =
grpc_slice_from_static_string(response_msg); grpc_slice_from_static_string(response_msg);
@ -237,9 +239,8 @@ static void request_response_with_payload(
op->reserved = NULL; op->reserved = NULL;
op++; op++;
op->op = GRPC_OP_SEND_STATUS_FROM_SERVER; op->op = GRPC_OP_SEND_STATUS_FROM_SERVER;
GPR_ASSERT(trailing_lr_metadata != NULL); GPR_ASSERT(cost_ctx != NULL);
op->data.send_status_from_server.trailing_metadata_count = 1; grpc_call_set_load_reporting_cost_context(s, cost_ctx);
op->data.send_status_from_server.trailing_metadata = trailing_lr_metadata;
op->data.send_status_from_server.status = GRPC_STATUS_OK; op->data.send_status_from_server.status = GRPC_STATUS_OK;
grpc_slice status_details = grpc_slice_from_static_string("xyz"); grpc_slice status_details = grpc_slice_from_static_string("xyz");
op->data.send_status_from_server.status_details = &status_details; op->data.send_status_from_server.status_details = &status_details;
@ -293,21 +294,21 @@ static void test_load_reporting_hook(grpc_end2end_test_config config) {
const char *response_msg = "... and the response from the server"; const char *response_msg = "... and the response from the server";
grpc_metadata initial_lr_metadata; grpc_metadata initial_lr_metadata;
grpc_metadata trailing_lr_metadata;
initial_lr_metadata.key = GRPC_MDSTR_LB_TOKEN; initial_lr_metadata.key = GRPC_MDSTR_LB_TOKEN;
initial_lr_metadata.value = grpc_slice_from_static_string("client-token"); initial_lr_metadata.value = grpc_slice_from_static_string("client-token");
memset(&initial_lr_metadata.internal_data, 0, memset(&initial_lr_metadata.internal_data, 0,
sizeof(initial_lr_metadata.internal_data)); sizeof(initial_lr_metadata.internal_data));
trailing_lr_metadata.key = GRPC_MDSTR_LB_COST_BIN; grpc_load_reporting_cost_context *cost_ctx = gpr_malloc(sizeof(*cost_ctx));
trailing_lr_metadata.value = grpc_slice_from_static_string("server-token"); memset(cost_ctx, 0, sizeof(*cost_ctx));
memset(&trailing_lr_metadata.internal_data, 0, cost_ctx->values_count = 1;
sizeof(trailing_lr_metadata.internal_data)); cost_ctx->values =
gpr_malloc(sizeof(*cost_ctx->values) * cost_ctx->values_count);
cost_ctx->values[0] = grpc_slice_from_static_string("cost-token");
request_response_with_payload(config, f, method_name, request_msg, request_response_with_payload(config, f, method_name, request_msg,
response_msg, &initial_lr_metadata, response_msg, &initial_lr_metadata, cost_ctx);
&trailing_lr_metadata);
end_test(&f); end_test(&f);
{ {
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT; grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;

@ -52,6 +52,7 @@
#include <grpc/impl/codegen/status.h> #include <grpc/impl/codegen/status.h>
#include <grpc/impl/codegen/sync.h> #include <grpc/impl/codegen/sync.h>
#include <grpc/impl/codegen/sync_generic.h> #include <grpc/impl/codegen/sync_generic.h>
#include <grpc/load_reporting.h>
#include <grpc/slice.h> #include <grpc/slice.h>
#include <grpc/slice_buffer.h> #include <grpc/slice_buffer.h>
#include <grpc/status.h> #include <grpc/status.h>

@ -123,7 +123,6 @@ CONFIG = [
('if-unmodified-since', ''), ('if-unmodified-since', ''),
('last-modified', ''), ('last-modified', ''),
('lb-token', ''), ('lb-token', ''),
('lb-cost-bin', ''),
('link', ''), ('link', ''),
('location', ''), ('location', ''),
('max-forwards', ''), ('max-forwards', ''),
@ -160,7 +159,6 @@ METADATA_BATCH_CALLOUTS = [
'user-agent', 'user-agent',
'host', 'host',
'lb-token', 'lb-token',
'lb-cost-bin',
] ]
COMPRESSION_ALGORITHMS = [ COMPRESSION_ALGORITHMS = [

@ -827,6 +827,7 @@ include/grpc/impl/codegen/sync_posix.h \
include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_posix.h \
include/grpc/impl/codegen/sync_windows.h \ include/grpc/impl/codegen/sync_windows.h \
include/grpc/impl/codegen/sync_windows.h \ include/grpc/impl/codegen/sync_windows.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \

@ -827,6 +827,7 @@ include/grpc/impl/codegen/sync_posix.h \
include/grpc/impl/codegen/sync_posix.h \ include/grpc/impl/codegen/sync_posix.h \
include/grpc/impl/codegen/sync_windows.h \ include/grpc/impl/codegen/sync_windows.h \
include/grpc/impl/codegen/sync_windows.h \ include/grpc/impl/codegen/sync_windows.h \
include/grpc/load_reporting.h \
include/grpc/slice.h \ include/grpc/slice.h \
include/grpc/slice_buffer.h \ include/grpc/slice_buffer.h \
include/grpc/status.h \ include/grpc/status.h \

@ -5472,23 +5472,6 @@
"third_party": false, "third_party": false,
"type": "lib" "type": "lib"
}, },
{
"deps": [
"grpc++"
],
"headers": [
"include/grpc++/test/server_context_test_spouse.h"
],
"is_filegroup": false,
"language": "c++",
"name": "grpc++_test",
"src": [
"include/grpc++/test/server_context_test_spouse.h",
"src/cpp/test/server_context_test_spouse.cc"
],
"third_party": false,
"type": "lib"
},
{ {
"deps": [], "deps": [],
"headers": [ "headers": [
@ -7081,6 +7064,7 @@
"include/grpc/grpc.h", "include/grpc/grpc.h",
"include/grpc/grpc_posix.h", "include/grpc/grpc_posix.h",
"include/grpc/grpc_security_constants.h", "include/grpc/grpc_security_constants.h",
"include/grpc/load_reporting.h",
"include/grpc/slice.h", "include/grpc/slice.h",
"include/grpc/slice_buffer.h", "include/grpc/slice_buffer.h",
"include/grpc/status.h", "include/grpc/status.h",
@ -7201,6 +7185,7 @@
"include/grpc/grpc.h", "include/grpc/grpc.h",
"include/grpc/grpc_posix.h", "include/grpc/grpc_posix.h",
"include/grpc/grpc_security_constants.h", "include/grpc/grpc_security_constants.h",
"include/grpc/load_reporting.h",
"include/grpc/slice.h", "include/grpc/slice.h",
"include/grpc/slice_buffer.h", "include/grpc/slice_buffer.h",
"include/grpc/status.h", "include/grpc/status.h",
@ -8354,6 +8339,22 @@
"third_party": false, "third_party": false,
"type": "filegroup" "type": "filegroup"
}, },
{
"deps": [
"grpc++"
],
"headers": [
"include/grpc++/test/server_context_test_spouse.h"
],
"is_filegroup": true,
"language": "c++",
"name": "grpc++_test",
"src": [
"include/grpc++/test/server_context_test_spouse.h"
],
"third_party": false,
"type": "filegroup"
},
{ {
"deps": [ "deps": [
"grpc++_codegen_base" "grpc++_codegen_base"

@ -1,170 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{3D3EAEA9-76C4-0CFE-4718-5A1F6B7F72C8}</ProjectGuid>
<IgnoreWarnIntDirInTempDetected>true</IgnoreWarnIntDirInTempDetected>
<IntDir>$(SolutionDir)IntDir\$(MSBuildProjectName)\</IntDir>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(VisualStudioVersion)' == '10.0'" Label="Configuration">
<PlatformToolset>v100</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '11.0'" Label="Configuration">
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '12.0'" Label="Configuration">
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'" Label="Configuration">
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="$(SolutionDir)\..\vsprojects\global.props" />
<Import Project="$(SolutionDir)\..\vsprojects\winsock.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<TargetName>grpc++_test</TargetName>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<TargetName>grpc++_test</TargetName>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<PreprocessorDefinitions>WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<TreatWarningAsError>true</TreatWarningAsError>
<DebugInformationFormat Condition="$(Jenkins)">None</DebugInformationFormat>
<MinimalRebuild Condition="$(Jenkins)">false</MinimalRebuild>
</ClCompile>
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation Condition="!$(Jenkins)">true</GenerateDebugInformation>
<GenerateDebugInformation Condition="$(Jenkins)">false</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\test\server_context_test_spouse.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="$(SolutionDir)\..\src\cpp\test\server_context_test_spouse.cc">
</ClCompile>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
<Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
</ProjectReference>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
</Target>
</Project>

@ -1,35 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<ClCompile Include="$(SolutionDir)\..\src\cpp\test\server_context_test_spouse.cc">
<Filter>src\cpp\test</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="$(SolutionDir)\..\include\grpc++\test\server_context_test_spouse.h">
<Filter>include\grpc++\test</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="include">
<UniqueIdentifier>{418e2be9-9a04-af8a-8878-956543c507a1}</UniqueIdentifier>
</Filter>
<Filter Include="include\grpc++">
<UniqueIdentifier>{bcaf3a2d-e884-bfbd-477b-09634054bcc5}</UniqueIdentifier>
</Filter>
<Filter Include="include\grpc++\test">
<UniqueIdentifier>{3a14b66f-1d31-2d06-e9a1-c6d1199ab04d}</UniqueIdentifier>
</Filter>
<Filter Include="src">
<UniqueIdentifier>{bc08c75b-ee7e-85a0-fb0f-7586bbd33c6f}</UniqueIdentifier>
</Filter>
<Filter Include="src\cpp">
<UniqueIdentifier>{9797a57d-93ac-ff9c-5ac6-fd335777d782}</UniqueIdentifier>
</Filter>
<Filter Include="src\cpp\test">
<UniqueIdentifier>{58d4b4e0-5617-abf4-48a6-f1264d127b27}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>

@ -273,6 +273,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />

@ -696,6 +696,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>

@ -153,6 +153,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />

@ -438,6 +438,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>

@ -264,6 +264,7 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_posix.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice_buffer.h" />
<ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" /> <ClInclude Include="$(SolutionDir)\..\include\grpc\status.h" />

@ -609,6 +609,9 @@
<ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\grpc_security_constants.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\load_reporting.h">
<Filter>include\grpc</Filter>
</ClInclude>
<ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h"> <ClInclude Include="$(SolutionDir)\..\include\grpc\slice.h">
<Filter>include\grpc</Filter> <Filter>include\grpc</Filter>
</ClInclude> </ClInclude>

@ -167,9 +167,6 @@
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj"> <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc_test_util\grpc_test_util.vcxproj">
<Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project> <Project>{17BCAFC0-5FDC-4C94-AEB9-95F3E220614B}</Project>
</ProjectReference> </ProjectReference>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++_test\grpc++_test.vcxproj">
<Project>{3D3EAEA9-76C4-0CFE-4718-5A1F6B7F72C8}</Project>
</ProjectReference>
<ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj"> <ProjectReference Include="$(SolutionDir)\..\vsprojects\vcxproj\.\grpc++\grpc++.vcxproj">
<Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project> <Project>{C187A093-A0FE-489D-A40A-6E33DE0F9FEB}</Project>
</ProjectReference> </ProjectReference>

Loading…
Cancel
Save