grpc 1.43.1 → 1.44.0.pre2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (382) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +84 -64
  3. data/include/grpc/grpc_security.h +10 -0
  4. data/include/grpc/impl/codegen/compression_types.h +0 -2
  5. data/include/grpc/impl/codegen/grpc_types.h +6 -0
  6. data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
  7. data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
  8. data/src/core/ext/filters/client_channel/client_channel.h +8 -8
  9. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  10. data/src/core/ext/filters/client_channel/config_selector.h +4 -4
  11. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
  16. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
  26. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
  35. data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
  36. data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
  37. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
  46. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
  48. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
  49. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  50. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
  51. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  52. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
  53. data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
  54. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  55. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  56. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
  57. data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
  58. data/src/core/ext/filters/client_channel/subchannel.h +2 -3
  59. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
  60. data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
  61. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
  63. data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
  64. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
  65. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
  66. data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
  67. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  68. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  69. data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
  70. data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
  71. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
  72. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
  73. data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
  74. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
  75. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
  76. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
  77. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
  78. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
  79. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
  80. data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
  81. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
  82. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
  83. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
  84. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
  85. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
  86. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
  87. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
  88. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
  89. data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
  90. data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
  91. data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
  92. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  93. data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
  94. data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
  95. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
  96. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  99. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
  100. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  101. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  102. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  103. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
  104. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
  105. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
  106. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
  107. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  108. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  109. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
  110. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
  111. data/src/core/ext/xds/upb_utils.h +65 -0
  112. data/src/core/ext/xds/xds_api.cc +81 -3458
  113. data/src/core/ext/xds/xds_api.h +56 -611
  114. data/src/core/ext/xds/xds_bootstrap.cc +189 -125
  115. data/src/core/ext/xds/xds_bootstrap.h +20 -15
  116. data/src/core/ext/xds/xds_certificate_provider.h +1 -0
  117. data/src/core/ext/xds/xds_channel_creds.cc +108 -0
  118. data/src/core/ext/xds/xds_channel_creds.h +50 -0
  119. data/src/core/ext/xds/xds_client.cc +584 -994
  120. data/src/core/ext/xds/xds_client.h +78 -135
  121. data/src/core/ext/xds/xds_cluster.cc +451 -0
  122. data/src/core/ext/xds/xds_cluster.h +111 -0
  123. data/src/core/ext/xds/xds_common_types.cc +388 -0
  124. data/src/core/ext/xds/xds_common_types.h +110 -0
  125. data/src/core/ext/xds/xds_endpoint.cc +364 -0
  126. data/src/core/ext/xds/xds_endpoint.h +135 -0
  127. data/src/core/ext/xds/xds_http_filters.cc +5 -0
  128. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  129. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  130. data/src/core/ext/xds/xds_listener.cc +1036 -0
  131. data/src/core/ext/xds/xds_listener.h +220 -0
  132. data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
  133. data/src/core/ext/xds/xds_resource_type.h +98 -0
  134. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  135. data/src/core/ext/xds/xds_route_config.cc +993 -0
  136. data/src/core/ext/xds/xds_route_config.h +215 -0
  137. data/src/core/ext/xds/xds_routing.cc +11 -8
  138. data/src/core/ext/xds/xds_routing.h +8 -5
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
  140. data/src/core/lib/address_utils/parse_address.cc +20 -0
  141. data/src/core/lib/address_utils/parse_address.h +5 -0
  142. data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
  143. data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
  144. data/src/core/lib/backoff/backoff.cc +4 -30
  145. data/src/core/lib/backoff/backoff.h +3 -3
  146. data/src/core/lib/channel/channel_args.cc +0 -1
  147. data/src/core/lib/channel/channel_stack.cc +8 -0
  148. data/src/core/lib/channel/channel_stack.h +1 -1
  149. data/src/core/lib/channel/channel_stack_builder.cc +5 -9
  150. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  151. data/src/core/lib/channel/channelz.cc +1 -0
  152. data/src/core/lib/compression/compression.cc +19 -111
  153. data/src/core/lib/compression/compression_internal.cc +142 -202
  154. data/src/core/lib/compression/compression_internal.h +64 -69
  155. data/src/core/lib/compression/message_compress.cc +11 -11
  156. data/src/core/lib/compression/message_compress.h +2 -2
  157. data/src/core/lib/gpr/useful.h +4 -0
  158. data/src/core/lib/gprpp/bitset.h +7 -0
  159. data/src/core/lib/gprpp/chunked_vector.h +45 -3
  160. data/src/core/lib/gprpp/status_helper.cc +20 -28
  161. data/src/core/lib/gprpp/status_helper.h +6 -19
  162. data/src/core/lib/gprpp/table.h +11 -0
  163. data/src/core/lib/http/httpcli.cc +37 -46
  164. data/src/core/lib/http/httpcli.h +3 -15
  165. data/src/core/lib/iomgr/call_combiner.cc +15 -4
  166. data/src/core/lib/iomgr/closure.h +29 -9
  167. data/src/core/lib/iomgr/combiner.cc +25 -3
  168. data/src/core/lib/iomgr/error.cc +2 -0
  169. data/src/core/lib/iomgr/error.h +3 -0
  170. data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
  171. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
  172. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
  173. data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
  174. data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
  175. data/src/core/lib/iomgr/exec_ctx.cc +22 -9
  176. data/src/core/lib/iomgr/executor.cc +10 -1
  177. data/src/core/lib/iomgr/fork_posix.cc +3 -2
  178. data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
  179. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  180. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  181. data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
  182. data/src/core/lib/iomgr/port.h +2 -2
  183. data/src/core/lib/iomgr/resolve_address.cc +5 -24
  184. data/src/core/lib/iomgr/resolve_address.h +47 -44
  185. data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
  186. data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
  187. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  188. data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
  189. data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
  190. data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
  191. data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
  192. data/src/core/lib/iomgr/resolved_address.h +39 -0
  193. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
  194. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
  195. data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
  196. data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
  197. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
  198. data/src/core/lib/matchers/matchers.cc +1 -1
  199. data/src/core/lib/promise/activity.h +49 -20
  200. data/src/core/lib/promise/detail/status.h +5 -0
  201. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
  202. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
  203. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
  204. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
  205. data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
  206. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
  207. data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
  208. data/src/core/lib/resource_quota/api.h +0 -1
  209. data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
  210. data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
  211. data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
  212. data/src/core/lib/security/authorization/evaluate_args.h +1 -0
  213. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  214. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  215. data/src/core/lib/security/authorization/matchers.cc +227 -0
  216. data/src/core/lib/security/authorization/matchers.h +211 -0
  217. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  218. data/src/core/lib/security/authorization/rbac_policy.h +170 -0
  219. data/src/core/lib/security/context/security_context.cc +4 -2
  220. data/src/core/lib/security/context/security_context.h +1 -1
  221. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
  222. data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
  223. data/src/core/lib/security/credentials/credentials.h +10 -20
  224. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
  225. data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
  226. data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
  227. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
  228. data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
  229. data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
  230. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
  231. data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
  232. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  233. data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
  234. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
  235. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
  236. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
  237. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
  238. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
  239. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  240. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
  241. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
  242. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
  243. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
  244. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  245. data/src/core/lib/security/security_connector/security_connector.cc +0 -4
  246. data/src/core/lib/security/security_connector/security_connector.h +5 -1
  247. data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
  248. data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
  249. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
  250. data/src/core/lib/security/transport/auth_filters.h +7 -0
  251. data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
  252. data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
  253. data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
  254. data/src/core/{ext → lib}/service_config/service_config.h +4 -4
  255. data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
  256. data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
  257. data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
  258. data/src/core/lib/slice/slice.cc +3 -1
  259. data/src/core/lib/slice/slice.h +43 -13
  260. data/src/core/lib/slice/slice_intern.cc +3 -101
  261. data/src/core/lib/slice/slice_internal.h +1 -2
  262. data/src/core/lib/slice/slice_refcount.h +4 -13
  263. data/src/core/lib/slice/slice_refcount_base.h +0 -16
  264. data/src/core/lib/surface/call.cc +140 -382
  265. data/src/core/lib/surface/call.h +4 -4
  266. data/src/core/lib/surface/channel.cc +42 -44
  267. data/src/core/lib/surface/channel.h +4 -4
  268. data/src/core/lib/surface/init.cc +0 -2
  269. data/src/core/lib/surface/lame_client.cc +0 -1
  270. data/src/core/lib/surface/server.cc +12 -29
  271. data/src/core/lib/surface/server.h +2 -2
  272. data/src/core/lib/surface/version.cc +2 -2
  273. data/src/core/lib/transport/error_utils.h +14 -0
  274. data/src/core/lib/transport/metadata_batch.h +799 -717
  275. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  276. data/src/core/lib/transport/parsed_metadata.h +95 -92
  277. data/src/core/lib/transport/timeout_encoding.cc +200 -66
  278. data/src/core/lib/transport/timeout_encoding.h +40 -10
  279. data/src/core/lib/transport/transport.h +1 -1
  280. data/src/core/lib/transport/transport_op_string.cc +6 -39
  281. data/src/core/lib/uri/uri_parser.cc +223 -53
  282. data/src/core/lib/uri/uri_parser.h +36 -23
  283. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
  284. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  285. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
  286. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
  287. data/src/core/tsi/ssl_transport_security.cc +53 -13
  288. data/src/core/tsi/ssl_transport_security.h +18 -6
  289. data/src/ruby/ext/grpc/extconf.rb +10 -3
  290. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  291. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  292. data/src/ruby/lib/grpc/version.rb +1 -1
  293. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  294. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  295. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  296. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  297. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  298. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  299. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  300. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  301. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  302. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  303. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  304. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  305. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  306. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  307. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  308. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  309. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  310. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  311. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  312. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  313. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  314. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  315. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  316. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  317. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  318. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  319. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  320. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  321. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  322. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  323. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  324. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  325. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  326. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  327. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  328. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  329. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  330. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  331. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  332. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  333. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  334. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  335. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  336. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  337. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  338. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  339. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  340. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  341. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  342. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  343. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  344. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  345. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  346. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  347. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  348. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  349. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  350. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  351. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  352. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  353. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  354. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  355. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  356. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  357. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  358. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  359. data/third_party/xxhash/xxhash.h +607 -352
  360. metadata +149 -77
  361. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  362. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  363. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  364. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  365. data/src/core/lib/compression/compression_args.cc +0 -140
  366. data/src/core/lib/compression/compression_args.h +0 -58
  367. data/src/core/lib/compression/stream_compression.cc +0 -81
  368. data/src/core/lib/compression/stream_compression.h +0 -117
  369. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  370. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  371. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  372. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  373. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  374. data/src/core/lib/slice/static_slice.cc +0 -377
  375. data/src/core/lib/slice/static_slice.h +0 -300
  376. data/src/core/lib/transport/metadata.cc +0 -714
  377. data/src/core/lib/transport/metadata.h +0 -449
  378. data/src/core/lib/transport/metadata_batch.cc +0 -99
  379. data/src/core/lib/transport/static_metadata.cc +0 -1032
  380. data/src/core/lib/transport/static_metadata.h +0 -322
  381. data/src/core/lib/transport/status_metadata.cc +0 -63
  382. data/src/core/lib/transport/status_metadata.h +0 -48
@@ -17,10 +17,13 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <cstdint>
21
+
20
22
  #include "absl/strings/string_view.h"
21
23
 
22
24
  #include <grpc/slice.h>
23
25
 
26
+ #include "src/core/lib/gpr/string.h"
24
27
  #include "src/core/lib/slice/slice_internal.h"
25
28
 
26
29
  // Herein lies grpc_core::Slice and its team of thin wrappers around grpc_slice.
@@ -110,6 +113,8 @@ class BaseSlice {
110
113
 
111
114
  uint8_t* mutable_data() { return GRPC_SLICE_START_PTR(slice_); }
112
115
 
116
+ grpc_slice* c_slice_ptr() { return &slice_; }
117
+
113
118
  private:
114
119
  grpc_slice slice_;
115
120
  };
@@ -159,6 +164,9 @@ struct CopyConstructors {
159
164
  static Out FromCopiedString(const char* s) {
160
165
  return Out(grpc_slice_from_copied_string(s));
161
166
  }
167
+ static Out FromCopiedString(absl::string_view s) {
168
+ return FromCopiedBuffer(s.data(), s.size());
169
+ }
162
170
  static Out FromCopiedString(std::string s) {
163
171
  return Out(grpc_slice_from_cpp_string(std::move(s)));
164
172
  }
@@ -171,30 +179,39 @@ struct CopyConstructors {
171
179
  return FromCopiedBuffer(reinterpret_cast<const char*>(buffer.data()),
172
180
  buffer.size());
173
181
  }
182
+
183
+ static Out FromInt64(int64_t i) {
184
+ char buffer[GPR_LTOA_MIN_BUFSIZE];
185
+ gpr_ltoa(i, buffer);
186
+ return FromCopiedString(buffer);
187
+ }
188
+ };
189
+
190
+ template <typename Out>
191
+ struct StaticConstructors {
192
+ static Out FromStaticString(const char* s) {
193
+ return Out(grpc_slice_from_static_string(s));
194
+ }
195
+
196
+ static Out FromStaticString(absl::string_view s) {
197
+ return Out(ExternallyManagedSlice(s.data(), s.size()));
198
+ }
174
199
  };
175
200
 
176
201
  } // namespace slice_detail
177
202
 
178
- class StaticSlice : public slice_detail::BaseSlice {
203
+ class StaticSlice : public slice_detail::BaseSlice,
204
+ public slice_detail::StaticConstructors<StaticSlice> {
179
205
  public:
180
206
  StaticSlice() = default;
181
207
  explicit StaticSlice(const grpc_slice& slice)
182
208
  : slice_detail::BaseSlice(slice) {
183
- GPR_DEBUG_ASSERT(
184
- slice.refcount->GetType() == grpc_slice_refcount::Type::STATIC ||
185
- slice.refcount->GetType() == grpc_slice_refcount::Type::NOP);
209
+ GPR_DEBUG_ASSERT(slice.refcount->GetType() ==
210
+ grpc_slice_refcount::Type::NOP);
186
211
  }
187
212
  explicit StaticSlice(const StaticMetadataSlice& slice)
188
213
  : slice_detail::BaseSlice(slice) {}
189
214
 
190
- static StaticSlice FromStaticString(const char* s) {
191
- return StaticSlice(grpc_slice_from_static_string(s));
192
- }
193
-
194
- static StaticSlice FromStaticString(absl::string_view s) {
195
- return StaticSlice(ExternallyManagedSlice(s.data(), s.size()));
196
- }
197
-
198
215
  StaticSlice(const StaticSlice& other)
199
216
  : slice_detail::BaseSlice(other.c_slice()) {}
200
217
  StaticSlice& operator=(const StaticSlice& other) {
@@ -242,13 +259,15 @@ class MutableSlice : public slice_detail::BaseSlice,
242
259
  // Iterator access to the underlying bytes
243
260
  uint8_t* begin() { return mutable_data(); }
244
261
  uint8_t* end() { return mutable_data() + size(); }
262
+ uint8_t* data() { return mutable_data(); }
245
263
 
246
264
  // Array access
247
265
  uint8_t& operator[](size_t i) { return mutable_data()[i]; }
248
266
  };
249
267
 
250
268
  class Slice : public slice_detail::BaseSlice,
251
- public slice_detail::CopyConstructors<Slice> {
269
+ public slice_detail::CopyConstructors<Slice>,
270
+ public slice_detail::StaticConstructors<Slice> {
252
271
  public:
253
272
  Slice() = default;
254
273
  ~Slice() { grpc_slice_unref_internal(c_slice()); }
@@ -321,6 +340,17 @@ class Slice : public slice_detail::BaseSlice,
321
340
  return Slice(grpc_slice_sub_no_ref(TakeCSlice(), pos, pos + n));
322
341
  }
323
342
 
343
+ // Return a sub slice of this one. Adds a reference to the underlying slice.
344
+ Slice RefSubSlice(size_t pos, size_t n) const {
345
+ return Slice(grpc_slice_sub(c_slice(), pos, pos + n));
346
+ }
347
+
348
+ // Split this slice, returning a new slice containing (split:end] and
349
+ // leaving this slice with [begin:split).
350
+ Slice Split(size_t split) {
351
+ return Slice(grpc_slice_split_tail(c_slice_ptr(), split));
352
+ }
353
+
324
354
  Slice Ref() const { return Slice(grpc_slice_ref_internal(c_slice())); }
325
355
 
326
356
  Slice Copy() const { return Slice(grpc_slice_copy(c_slice())); }
@@ -31,7 +31,6 @@
31
31
  #include "src/core/lib/slice/slice_internal.h"
32
32
  #include "src/core/lib/slice/slice_string_helpers.h"
33
33
  #include "src/core/lib/slice/slice_utils.h"
34
- #include "src/core/lib/transport/static_metadata.h"
35
34
 
36
35
  #define LOG2_SHARD_COUNT 5
37
36
  #define SHARD_COUNT (1 << LOG2_SHARD_COUNT)
@@ -51,15 +50,6 @@ typedef struct slice_shard {
51
50
 
52
51
  static slice_shard* g_shards;
53
52
 
54
- struct static_metadata_hash_ent {
55
- uint32_t hash;
56
- uint32_t idx;
57
- };
58
- static static_metadata_hash_ent
59
- static_metadata_hash[4 * GRPC_STATIC_MDSTR_COUNT];
60
- static uint32_t max_static_metadata_hash_probe;
61
- uint32_t grpc_static_metadata_hash_values[GRPC_STATIC_MDSTR_COUNT];
62
-
63
53
  namespace grpc_core {
64
54
 
65
55
  /* hash seed: decided at initialization time */
@@ -116,37 +106,8 @@ uint32_t grpc_slice_default_hash_impl(grpc_slice s) {
116
106
  grpc_core::g_hash_seed);
117
107
  }
118
108
 
119
- uint32_t grpc_static_slice_hash(grpc_slice s) {
120
- return grpc_static_metadata_hash_values[GRPC_STATIC_METADATA_INDEX(s)];
121
- }
122
-
123
- int grpc_static_slice_eq(grpc_slice a, grpc_slice b) {
124
- return GRPC_STATIC_METADATA_INDEX(a) == GRPC_STATIC_METADATA_INDEX(b);
125
- }
126
-
127
109
  uint32_t grpc_slice_hash(grpc_slice s) { return grpc_slice_hash_internal(s); }
128
110
 
129
- grpc_slice grpc_slice_maybe_static_intern(grpc_slice slice,
130
- bool* returned_slice_is_different) {
131
- if (GRPC_IS_STATIC_METADATA_STRING(slice)) {
132
- return slice;
133
- }
134
-
135
- uint32_t hash = grpc_slice_hash_internal(slice);
136
- for (uint32_t i = 0; i <= max_static_metadata_hash_probe; i++) {
137
- static_metadata_hash_ent ent =
138
- static_metadata_hash[(hash + i) % GPR_ARRAY_SIZE(static_metadata_hash)];
139
- if (ent.hash == hash && ent.idx < GRPC_STATIC_MDSTR_COUNT &&
140
- grpc_slice_eq_static_interned(
141
- slice, grpc_core::g_static_metadata_slice_table[ent.idx])) {
142
- *returned_slice_is_different = true;
143
- return grpc_core::g_static_metadata_slice_table[ent.idx];
144
- }
145
- }
146
-
147
- return slice;
148
- }
149
-
150
111
  grpc_slice grpc_slice_intern(grpc_slice slice) {
151
112
  /* TODO(arjunroy): At present, this is capable of returning either a static or
152
113
  an interned slice. This yields weirdness like the constructor for
@@ -155,25 +116,6 @@ grpc_slice grpc_slice_intern(grpc_slice slice) {
155
116
  return grpc_core::ManagedMemorySlice(&slice);
156
117
  }
157
118
 
158
- // Attempt to see if the provided slice or string matches a static slice.
159
- // SliceArgs is either a const grpc_slice& or const pair<const char*, size_t>&.
160
- // In either case, hash is the pre-computed hash value.
161
- //
162
- // Returns: a matching static slice, or null.
163
- template <typename SliceArgs>
164
- static const grpc_core::StaticMetadataSlice* MatchStaticSlice(
165
- uint32_t hash, const SliceArgs& args) {
166
- for (uint32_t i = 0; i <= max_static_metadata_hash_probe; i++) {
167
- static_metadata_hash_ent ent =
168
- static_metadata_hash[(hash + i) % GPR_ARRAY_SIZE(static_metadata_hash)];
169
- if (ent.hash == hash && ent.idx < GRPC_STATIC_MDSTR_COUNT &&
170
- grpc_core::g_static_metadata_slice_table[ent.idx] == args) {
171
- return &grpc_core::g_static_metadata_slice_table[ent.idx];
172
- }
173
- }
174
- return nullptr;
175
- }
176
-
177
119
  // Helper methods to enable us to select appropriately overloaded slice methods
178
120
  // whether we're dealing with a slice, or a buffer with length, when interning
179
121
  // strings. Helpers for FindOrCreateInternedSlice().
@@ -271,30 +213,15 @@ grpc_core::ManagedMemorySlice::ManagedMemorySlice(const char* string)
271
213
  grpc_core::ManagedMemorySlice::ManagedMemorySlice(const char* buf, size_t len) {
272
214
  GPR_TIMER_SCOPE("grpc_slice_intern", 0);
273
215
  const uint32_t hash = gpr_murmur_hash3(buf, len, g_hash_seed);
274
- const StaticMetadataSlice* static_slice =
275
- MatchStaticSlice(hash, std::pair<const char*, size_t>(buf, len));
276
- if (static_slice) {
277
- *this = *static_slice;
278
- } else {
279
- *this = grpc_core::InternedSlice(FindOrCreateInternedSlice(
280
- hash, std::pair<const char*, size_t>(buf, len)));
281
- }
216
+ *this = grpc_core::InternedSlice(FindOrCreateInternedSlice(
217
+ hash, std::pair<const char*, size_t>(buf, len)));
282
218
  }
283
219
 
284
220
  grpc_core::ManagedMemorySlice::ManagedMemorySlice(const grpc_slice* slice_ptr) {
285
221
  GPR_TIMER_SCOPE("grpc_slice_intern", 0);
286
222
  const grpc_slice& slice = *slice_ptr;
287
- if (GRPC_IS_STATIC_METADATA_STRING(slice)) {
288
- *this = static_cast<const grpc_core::StaticMetadataSlice&>(slice);
289
- return;
290
- }
291
223
  const uint32_t hash = grpc_slice_hash_internal(slice);
292
- const StaticMetadataSlice* static_slice = MatchStaticSlice(hash, slice);
293
- if (static_slice) {
294
- *this = *static_slice;
295
- } else {
296
- *this = grpc_core::InternedSlice(FindOrCreateInternedSlice(hash, slice));
297
- }
224
+ *this = grpc_core::InternedSlice(FindOrCreateInternedSlice(hash, slice));
298
225
  }
299
226
 
300
227
  void grpc_test_only_set_slice_hash_seed(uint32_t seed) {
@@ -315,31 +242,6 @@ void grpc_slice_intern_init(void) {
315
242
  shard->strs = static_cast<InternedSliceRefcount**>(
316
243
  gpr_zalloc(sizeof(*shard->strs) * shard->capacity));
317
244
  }
318
- for (size_t i = 0; i < GPR_ARRAY_SIZE(static_metadata_hash); i++) {
319
- static_metadata_hash[i].hash = 0;
320
- static_metadata_hash[i].idx = GRPC_STATIC_MDSTR_COUNT;
321
- }
322
- max_static_metadata_hash_probe = 0;
323
- for (size_t i = 0; i < GRPC_STATIC_MDSTR_COUNT; i++) {
324
- grpc_static_metadata_hash_values[i] = grpc_slice_default_hash_internal(
325
- grpc_core::g_static_metadata_slice_table[i]);
326
- for (size_t j = 0; j < GPR_ARRAY_SIZE(static_metadata_hash); j++) {
327
- size_t slot = (grpc_static_metadata_hash_values[i] + j) %
328
- GPR_ARRAY_SIZE(static_metadata_hash);
329
- if (static_metadata_hash[slot].idx == GRPC_STATIC_MDSTR_COUNT) {
330
- static_metadata_hash[slot].hash = grpc_static_metadata_hash_values[i];
331
- static_metadata_hash[slot].idx = static_cast<uint32_t>(i);
332
- if (j > max_static_metadata_hash_probe) {
333
- max_static_metadata_hash_probe = static_cast<uint32_t>(j);
334
- }
335
- break;
336
- }
337
- }
338
- }
339
- // Handle KV hash for all static mdelems.
340
- for (size_t i = 0; i < GRPC_STATIC_MDELEM_COUNT; ++i) {
341
- grpc_core::g_static_mdelem_table[i].HashInit();
342
- }
343
245
  }
344
246
 
345
247
  void grpc_slice_intern_shutdown(void) {
@@ -56,8 +56,7 @@ void grpc_slice_buffer_sub_first(grpc_slice_buffer* sb, size_t begin,
56
56
  bool grpc_slice_is_interned(const grpc_slice& slice);
57
57
  inline bool grpc_slice_is_interned(const grpc_slice& slice) {
58
58
  return (slice.refcount &&
59
- (slice.refcount->GetType() == grpc_slice_refcount::Type::INTERNED ||
60
- slice.refcount->GetType() == grpc_slice_refcount::Type::STATIC));
59
+ (slice.refcount->GetType() == grpc_slice_refcount::Type::INTERNED));
61
60
  }
62
61
 
63
62
  inline bool grpc_slice_static_interned_equal(const grpc_slice& a,
@@ -17,17 +17,16 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <string.h>
21
+
20
22
  #include <grpc/support/alloc.h>
21
23
 
24
+ #include "src/core/lib/gpr/murmur_hash.h"
22
25
  #include "src/core/lib/slice/slice_refcount_base.h"
23
- #include "src/core/lib/slice/static_slice.h"
24
-
25
- // Interned slices have specific fast-path operations for hashing. To inline
26
- // these operations, we need to forward declare them here.
27
- extern uint32_t grpc_static_metadata_hash_values[GRPC_STATIC_MDSTR_COUNT];
28
26
 
29
27
  namespace grpc_core {
30
28
 
29
+ extern uint32_t g_hash_seed;
31
30
  extern grpc_slice_refcount kNoopRefcount;
32
31
 
33
32
  // TODO(ctiller): when this is removed, remove the std::atomic* in
@@ -73,11 +72,6 @@ inline int grpc_slice_refcount::Eq(const grpc_slice& a, const grpc_slice& b) {
73
72
  GPR_DEBUG_ASSERT(a.refcount != nullptr);
74
73
  GPR_DEBUG_ASSERT(a.refcount == this);
75
74
  switch (ref_type_) {
76
- case Type::STATIC:
77
- GPR_DEBUG_ASSERT(
78
- (GRPC_STATIC_METADATA_INDEX(a) == GRPC_STATIC_METADATA_INDEX(b)) ==
79
- (a.refcount == b.refcount));
80
- ABSL_FALLTHROUGH_INTENDED;
81
75
  case Type::INTERNED:
82
76
  return a.refcount == b.refcount;
83
77
  case Type::NOP:
@@ -94,9 +88,6 @@ inline uint32_t grpc_slice_refcount::Hash(const grpc_slice& slice) {
94
88
  GPR_DEBUG_ASSERT(slice.refcount != nullptr);
95
89
  GPR_DEBUG_ASSERT(slice.refcount == this);
96
90
  switch (ref_type_) {
97
- case Type::STATIC:
98
- return ::grpc_static_metadata_hash_values[GRPC_STATIC_METADATA_INDEX(
99
- slice)];
100
91
  case Type::INTERNED:
101
92
  return reinterpret_cast<grpc_core::InternedSliceRefcount*>(slice.refcount)
102
93
  ->hash;
@@ -85,7 +85,6 @@
85
85
  struct grpc_slice_refcount {
86
86
  public:
87
87
  enum class Type {
88
- STATIC, // Refcount for a static metadata slice.
89
88
  INTERNED, // Refcount for an interned slice.
90
89
  NOP, // No-Op
91
90
  REGULAR // Refcount for non-static-metadata, non-interned slices.
@@ -163,19 +162,4 @@ struct grpc_slice_refcount {
163
162
  void* destroy_fn_arg_ = nullptr;
164
163
  };
165
164
 
166
- namespace grpc_core {
167
-
168
- struct StaticSliceRefcount {
169
- static grpc_slice_refcount kStaticSubRefcount;
170
-
171
- explicit StaticSliceRefcount(uint32_t index)
172
- : base(&kStaticSubRefcount, grpc_slice_refcount::Type::STATIC),
173
- index(index) {}
174
-
175
- grpc_slice_refcount base;
176
- const uint32_t index;
177
- };
178
-
179
- } // namespace grpc_core
180
-
181
165
  #endif // GRPC_CORE_LIB_SLICE_SLICE_REFCOUNT_BASE_H