grpc 1.41.0 → 1.42.0.pre1

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 (519) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -44
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/event_engine/event_engine.h +82 -42
  5. data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
  6. data/include/grpc/event_engine/memory_allocator.h +210 -0
  7. data/include/grpc/grpc.h +4 -0
  8. data/include/grpc/grpc_security.h +18 -0
  9. data/include/grpc/grpc_security_constants.h +1 -0
  10. data/include/grpc/impl/codegen/port_platform.h +7 -0
  11. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
  12. data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
  13. data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
  14. data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
  15. data/src/core/ext/filters/client_channel/client_channel.h +74 -27
  16. data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
  17. data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
  19. data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +4 -5
  21. data/src/core/ext/filters/client_channel/connector.h +18 -18
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
  23. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2502 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
  43. data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
  44. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
  45. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
  53. data/src/core/ext/filters/client_channel/resolver.h +1 -1
  54. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  55. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
  59. data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
  60. data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
  61. data/src/core/ext/filters/client_channel/server_address.h +1 -1
  62. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
  63. data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
  64. data/src/core/ext/filters/client_channel/subchannel.h +29 -49
  65. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
  66. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
  67. data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
  68. data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
  69. data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
  70. data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
  71. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
  72. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
  73. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  74. data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
  75. data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
  76. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
  77. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
  78. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
  79. data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
  80. data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
  81. data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
  82. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  83. data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
  84. data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
  85. data/src/core/ext/service_config/service_config_call_data.h +72 -0
  86. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
  87. data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
  89. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
  90. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
  92. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
  93. data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
  94. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
  95. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  96. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  97. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
  98. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
  99. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
  100. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
  103. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
  108. data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
  109. data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
  110. data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
  111. data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
  112. data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
  113. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
  114. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
  119. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
  122. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
  123. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
  124. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
  125. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
  126. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
  127. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
  128. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
  129. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
  130. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
  131. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  132. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
  133. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  134. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  135. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  136. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  137. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
  138. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
  139. data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
  140. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
  141. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
  142. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
  143. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
  144. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
  145. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
  146. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
  147. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
  148. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
  149. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
  150. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
  151. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
  152. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
  153. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
  154. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
  155. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  156. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
  157. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
  158. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
  159. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
  160. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
  161. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
  162. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
  163. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  164. data/src/core/ext/xds/xds_api.cc +325 -362
  165. data/src/core/ext/xds/xds_api.h +134 -82
  166. data/src/core/ext/xds/xds_bootstrap.h +10 -0
  167. data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
  168. data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
  169. data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
  170. data/src/core/ext/xds/xds_client.cc +527 -314
  171. data/src/core/ext/xds/xds_client.h +42 -37
  172. data/src/core/ext/xds/xds_client_stats.h +1 -1
  173. data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
  174. data/src/core/lib/address_utils/parse_address.cc +2 -0
  175. data/src/core/lib/avl/avl.cc +5 -5
  176. data/src/core/lib/backoff/backoff.cc +1 -1
  177. data/src/core/lib/channel/channel_args.cc +24 -6
  178. data/src/core/lib/channel/channel_args.h +9 -0
  179. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  180. data/src/core/lib/channel/channel_trace.cc +1 -1
  181. data/src/core/lib/channel/channel_trace.h +1 -1
  182. data/src/core/lib/channel/channelz.cc +3 -3
  183. data/src/core/lib/channel/channelz.h +2 -2
  184. data/src/core/lib/channel/channelz_registry.cc +1 -1
  185. data/src/core/lib/channel/channelz_registry.h +1 -1
  186. data/src/core/lib/channel/connected_channel.cc +1 -3
  187. data/src/core/lib/channel/connected_channel.h +1 -2
  188. data/src/core/lib/compression/compression.cc +2 -2
  189. data/src/core/lib/compression/compression_args.cc +6 -4
  190. data/src/core/lib/compression/compression_internal.cc +2 -2
  191. data/src/core/lib/compression/compression_internal.h +1 -1
  192. data/src/core/lib/config/core_configuration.cc +44 -2
  193. data/src/core/lib/config/core_configuration.h +39 -1
  194. data/src/core/lib/debug/stats.cc +1 -1
  195. data/src/core/lib/debug/stats_data.cc +13 -13
  196. data/src/core/lib/gpr/atm.cc +1 -1
  197. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  198. data/src/core/lib/gpr/string.cc +2 -2
  199. data/src/core/lib/gpr/tls.h +1 -1
  200. data/src/core/lib/gpr/useful.h +79 -32
  201. data/src/core/lib/gprpp/arena.h +10 -0
  202. data/src/core/lib/gprpp/bitset.h +38 -16
  203. data/src/core/lib/gprpp/chunked_vector.h +211 -0
  204. data/src/core/lib/gprpp/construct_destruct.h +1 -1
  205. data/src/core/lib/gprpp/match.h +1 -1
  206. data/src/core/lib/gprpp/memory.h +6 -0
  207. data/src/core/lib/gprpp/overload.h +1 -1
  208. data/src/core/lib/gprpp/status_helper.cc +23 -3
  209. data/src/core/lib/gprpp/status_helper.h +12 -1
  210. data/src/core/lib/gprpp/table.h +411 -0
  211. data/src/core/lib/http/httpcli.cc +200 -182
  212. data/src/core/lib/http/parser.cc +2 -2
  213. data/src/core/lib/iomgr/call_combiner.cc +28 -10
  214. data/src/core/lib/iomgr/combiner.cc +6 -21
  215. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
  216. data/src/core/lib/iomgr/error.cc +113 -52
  217. data/src/core/lib/iomgr/error.h +50 -9
  218. data/src/core/lib/iomgr/error_cfstream.cc +5 -0
  219. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
  220. data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
  221. data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
  222. data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
  223. data/src/core/lib/iomgr/event_engine/closure.h +10 -1
  224. data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
  225. data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
  226. data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
  227. data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
  228. data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
  229. data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
  230. data/src/core/lib/iomgr/exec_ctx.cc +1 -9
  231. data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
  232. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
  233. data/src/core/lib/iomgr/executor.cc +6 -20
  234. data/src/core/lib/iomgr/iomgr.cc +3 -1
  235. data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
  236. data/src/core/lib/iomgr/iomgr_internal.h +3 -2
  237. data/src/core/lib/iomgr/load_file.cc +2 -2
  238. data/src/core/lib/iomgr/lockfree_event.cc +18 -0
  239. data/src/core/lib/iomgr/pollset_custom.cc +1 -1
  240. data/src/core/lib/iomgr/pollset_custom.h +1 -1
  241. data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
  242. data/src/core/lib/iomgr/resource_quota.cc +13 -11
  243. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
  244. data/src/core/lib/iomgr/socket_mutator.cc +2 -2
  245. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
  246. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
  247. data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
  248. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
  249. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  250. data/src/core/lib/iomgr/tcp_posix.cc +4 -5
  251. data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
  252. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
  253. data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
  254. data/src/core/lib/iomgr/tcp_windows.cc +2 -2
  255. data/src/core/lib/iomgr/timer_generic.cc +13 -13
  256. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  257. data/src/core/lib/json/json_util.cc +68 -0
  258. data/src/core/lib/json/json_util.h +57 -99
  259. data/src/core/lib/json/json_writer.cc +0 -3
  260. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  261. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  262. data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
  263. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
  264. data/src/core/lib/security/context/security_context.cc +4 -2
  265. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  266. data/src/core/lib/security/credentials/credentials.cc +4 -2
  267. data/src/core/lib/security/credentials/credentials.h +6 -1
  268. data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
  269. data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
  270. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
  271. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
  272. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
  273. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  274. data/src/core/lib/security/security_connector/security_connector.cc +9 -4
  275. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  276. data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
  277. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
  278. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
  279. data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
  280. data/src/core/lib/security/transport/security_handshaker.cc +73 -43
  281. data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
  282. data/src/core/lib/security/transport/tsi_error.cc +3 -5
  283. data/src/core/lib/slice/slice.cc +0 -16
  284. data/src/core/lib/slice/slice_api.cc +39 -0
  285. data/src/core/lib/slice/slice_buffer.cc +5 -5
  286. data/src/core/lib/slice/slice_intern.cc +8 -13
  287. data/src/core/lib/slice/slice_internal.h +1 -244
  288. data/src/core/lib/slice/slice_refcount.cc +17 -0
  289. data/src/core/lib/slice/slice_refcount.h +121 -0
  290. data/src/core/lib/slice/slice_refcount_base.h +173 -0
  291. data/src/core/lib/slice/slice_split.cc +100 -0
  292. data/src/core/lib/slice/slice_split.h +40 -0
  293. data/src/core/lib/slice/slice_string_helpers.cc +0 -83
  294. data/src/core/lib/slice/slice_string_helpers.h +0 -11
  295. data/src/core/lib/slice/static_slice.cc +529 -0
  296. data/src/core/lib/slice/static_slice.h +331 -0
  297. data/src/core/lib/surface/builtins.cc +49 -0
  298. data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
  299. data/src/core/lib/surface/call.cc +103 -120
  300. data/src/core/lib/surface/call.h +0 -6
  301. data/src/core/lib/surface/channel.cc +19 -32
  302. data/src/core/lib/surface/channel.h +0 -9
  303. data/src/core/lib/surface/channel_init.cc +23 -76
  304. data/src/core/lib/surface/channel_init.h +52 -44
  305. data/src/core/lib/surface/completion_queue.cc +6 -5
  306. data/src/core/lib/surface/init.cc +0 -39
  307. data/src/core/lib/surface/init_secure.cc +17 -14
  308. data/src/core/lib/surface/lame_client.cc +18 -11
  309. data/src/core/lib/surface/lame_client.h +1 -1
  310. data/src/core/lib/surface/server.cc +25 -17
  311. data/src/core/lib/surface/server.h +17 -10
  312. data/src/core/lib/surface/validate_metadata.cc +5 -2
  313. data/src/core/lib/surface/version.cc +2 -2
  314. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  315. data/src/core/lib/transport/error_utils.cc +42 -17
  316. data/src/core/lib/transport/error_utils.h +1 -1
  317. data/src/core/lib/transport/metadata.cc +31 -10
  318. data/src/core/lib/transport/metadata.h +2 -1
  319. data/src/core/lib/transport/metadata_batch.cc +35 -371
  320. data/src/core/lib/transport/metadata_batch.h +905 -71
  321. data/src/core/lib/transport/parsed_metadata.h +263 -0
  322. data/src/core/lib/transport/pid_controller.cc +4 -4
  323. data/src/core/lib/transport/static_metadata.cc +714 -846
  324. data/src/core/lib/transport/static_metadata.h +115 -379
  325. data/src/core/lib/transport/status_metadata.cc +1 -0
  326. data/src/core/lib/transport/transport.cc +4 -5
  327. data/src/core/lib/transport/transport_op_string.cc +40 -20
  328. data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
  329. data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
  330. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  331. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  332. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
  333. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  335. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  336. data/src/core/tsi/fake_transport_security.cc +15 -7
  337. data/src/core/tsi/local_transport_security.cc +36 -73
  338. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
  339. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
  340. data/src/core/tsi/ssl_transport_security.cc +10 -2
  341. data/src/core/tsi/transport_security.cc +12 -0
  342. data/src/core/tsi/transport_security.h +16 -1
  343. data/src/core/tsi/transport_security_interface.h +26 -0
  344. data/src/ruby/ext/grpc/extconf.rb +12 -9
  345. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  346. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  347. data/src/ruby/lib/grpc/version.rb +1 -1
  348. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
  349. data/src/ruby/spec/client_server_spec.rb +1 -1
  350. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
  351. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
  352. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  353. data/third_party/boringssl-with-bazel/err_data.c +278 -272
  354. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
  355. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  356. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
  357. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
  358. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
  359. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  360. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
  361. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  362. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  363. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
  364. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  365. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  366. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
  367. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
  368. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
  369. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
  370. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
  371. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
  372. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
  373. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  374. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  375. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  376. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  377. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  378. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  379. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
  380. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  381. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
  382. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  383. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
  384. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  385. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
  387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
  389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
  391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
  394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
  395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
  397. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
  398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
  399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
  400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
  401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
  402. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
  403. data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
  404. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  405. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  406. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  407. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  408. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  409. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  410. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
  411. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
  412. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  413. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  414. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  415. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
  416. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  417. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
  418. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
  419. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  420. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
  421. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
  422. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  423. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
  424. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
  425. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  426. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
  427. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
  428. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
  429. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
  430. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
  431. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
  432. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
  433. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
  435. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
  436. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
  437. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
  438. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
  439. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
  441. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  442. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  443. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
  444. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  445. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
  446. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
  447. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
  448. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
  449. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  450. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  451. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
  452. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
  453. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  454. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
  455. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  456. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
  457. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
  458. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
  459. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
  460. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
  461. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
  462. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
  463. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
  464. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
  465. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
  466. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
  467. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
  468. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
  469. data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
  470. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  471. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
  472. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
  473. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
  474. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
  475. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
  476. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
  477. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
  478. data/third_party/re2/re2/compile.cc +91 -109
  479. data/third_party/re2/re2/dfa.cc +27 -39
  480. data/third_party/re2/re2/filtered_re2.cc +18 -2
  481. data/third_party/re2/re2/filtered_re2.h +10 -5
  482. data/third_party/re2/re2/nfa.cc +1 -1
  483. data/third_party/re2/re2/parse.cc +42 -23
  484. data/third_party/re2/re2/perl_groups.cc +34 -34
  485. data/third_party/re2/re2/prefilter.cc +3 -2
  486. data/third_party/re2/re2/prog.cc +182 -4
  487. data/third_party/re2/re2/prog.h +28 -9
  488. data/third_party/re2/re2/re2.cc +87 -118
  489. data/third_party/re2/re2/re2.h +156 -141
  490. data/third_party/re2/re2/regexp.cc +12 -5
  491. data/third_party/re2/re2/regexp.h +8 -2
  492. data/third_party/re2/re2/set.cc +31 -9
  493. data/third_party/re2/re2/set.h +9 -4
  494. data/third_party/re2/re2/simplify.cc +11 -3
  495. data/third_party/re2/re2/tostring.cc +1 -1
  496. data/third_party/re2/re2/walker-inl.h +1 -1
  497. data/third_party/re2/util/mutex.h +2 -2
  498. data/third_party/re2/util/pcre.h +3 -3
  499. metadata +83 -70
  500. data/include/grpc/event_engine/slice_allocator.h +0 -71
  501. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
  502. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
  503. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  504. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  505. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  506. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  507. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
  508. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
  509. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  510. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  511. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  512. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
  513. data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
  514. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
  515. data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
  516. data/src/core/lib/iomgr/udp_server.cc +0 -747
  517. data/src/core/lib/iomgr/udp_server.h +0 -103
  518. data/src/core/lib/transport/authority_override.cc +0 -40
  519. data/src/core/lib/transport/authority_override.h +0 -37
@@ -104,15 +104,17 @@ struct channel_data {
104
104
  } // namespace
105
105
 
106
106
  static grpc_error_handle hs_filter_outgoing_metadata(grpc_metadata_batch* b) {
107
- if (b->idx.named.grpc_message != nullptr) {
107
+ if (b->legacy_index()->named.grpc_message != nullptr) {
108
108
  grpc_slice pct_encoded_msg = grpc_core::PercentEncodeSlice(
109
- GRPC_MDVALUE(b->idx.named.grpc_message->md),
109
+ GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md),
110
110
  grpc_core::PercentEncodingType::Compatible);
111
- if (grpc_slice_is_equivalent(pct_encoded_msg,
112
- GRPC_MDVALUE(b->idx.named.grpc_message->md))) {
111
+ if (grpc_slice_is_equivalent(
112
+ pct_encoded_msg,
113
+ GRPC_MDVALUE(b->legacy_index()->named.grpc_message->md))) {
113
114
  grpc_slice_unref_internal(pct_encoded_msg);
114
115
  } else {
115
- grpc_metadata_batch_set_value(b->idx.named.grpc_message, pct_encoded_msg);
116
+ grpc_metadata_batch_set_value(b->legacy_index()->named.grpc_message,
117
+ pct_encoded_msg);
116
118
  }
117
119
  }
118
120
  return GRPC_ERROR_NONE;
@@ -159,18 +161,19 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
159
161
  grpc_error_handle error = GRPC_ERROR_NONE;
160
162
  static const char* error_name = "Failed processing incoming headers";
161
163
 
162
- if (b->idx.named.method != nullptr) {
163
- if (md_strict_equal(b->idx.named.method->md, GRPC_MDELEM_METHOD_POST)) {
164
+ if (b->legacy_index()->named.method != nullptr) {
165
+ if (md_strict_equal(b->legacy_index()->named.method->md,
166
+ GRPC_MDELEM_METHOD_POST)) {
164
167
  *calld->recv_initial_metadata_flags &=
165
168
  ~(GRPC_INITIAL_METADATA_CACHEABLE_REQUEST |
166
169
  GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST);
167
- } else if (md_strict_equal(b->idx.named.method->md,
170
+ } else if (md_strict_equal(b->legacy_index()->named.method->md,
168
171
  GRPC_MDELEM_METHOD_PUT)) {
169
172
  *calld->recv_initial_metadata_flags &=
170
173
  ~GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
171
174
  *calld->recv_initial_metadata_flags |=
172
175
  GRPC_INITIAL_METADATA_IDEMPOTENT_REQUEST;
173
- } else if (md_strict_equal(b->idx.named.method->md,
176
+ } else if (md_strict_equal(b->legacy_index()->named.method->md,
174
177
  GRPC_MDELEM_METHOD_GET)) {
175
178
  *calld->recv_initial_metadata_flags |=
176
179
  GRPC_INITIAL_METADATA_CACHEABLE_REQUEST;
@@ -180,64 +183,63 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
180
183
  hs_add_error(error_name, &error,
181
184
  grpc_attach_md_to_error(
182
185
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
183
- b->idx.named.method->md));
186
+ b->legacy_index()->named.method->md));
184
187
  }
185
- grpc_metadata_batch_remove(b, GRPC_BATCH_METHOD);
188
+ b->Remove(GRPC_BATCH_METHOD);
186
189
  } else {
187
- hs_add_error(
188
- error_name, &error,
189
- grpc_error_set_str(
190
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
191
- GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":method")));
190
+ hs_add_error(error_name, &error,
191
+ grpc_error_set_str(
192
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
193
+ GRPC_ERROR_STR_KEY, ":method"));
192
194
  }
193
195
 
194
- if (b->idx.named.te != nullptr) {
195
- if (!grpc_mdelem_static_value_eq(b->idx.named.te->md,
196
- GRPC_MDELEM_TE_TRAILERS)) {
197
- hs_add_error(error_name, &error,
198
- grpc_attach_md_to_error(
199
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
200
- b->idx.named.te->md));
201
- }
202
- grpc_metadata_batch_remove(b, GRPC_BATCH_TE);
203
- } else {
196
+ auto te = b->Take(grpc_core::TeMetadata());
197
+ if (te == grpc_core::TeMetadata::kTrailers) {
198
+ // Do nothing, ok.
199
+ } else if (!te.has_value()) {
204
200
  hs_add_error(error_name, &error,
205
201
  grpc_error_set_str(
206
202
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
207
- GRPC_ERROR_STR_KEY, grpc_slice_from_static_string("te")));
203
+ GRPC_ERROR_STR_KEY, "te"));
204
+ } else {
205
+ hs_add_error(error_name, &error,
206
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad te header"));
208
207
  }
209
208
 
210
- if (b->idx.named.scheme != nullptr) {
211
- if (!md_strict_equal(b->idx.named.scheme->md, GRPC_MDELEM_SCHEME_HTTP) &&
212
- !md_strict_equal(b->idx.named.scheme->md, GRPC_MDELEM_SCHEME_HTTPS) &&
213
- !grpc_mdelem_static_value_eq(b->idx.named.scheme->md,
209
+ if (b->legacy_index()->named.scheme != nullptr) {
210
+ if (!md_strict_equal(b->legacy_index()->named.scheme->md,
211
+ GRPC_MDELEM_SCHEME_HTTP) &&
212
+ !md_strict_equal(b->legacy_index()->named.scheme->md,
213
+ GRPC_MDELEM_SCHEME_HTTPS) &&
214
+ !grpc_mdelem_static_value_eq(b->legacy_index()->named.scheme->md,
214
215
  GRPC_MDELEM_SCHEME_GRPC)) {
215
216
  hs_add_error(error_name, &error,
216
217
  grpc_attach_md_to_error(
217
218
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Bad header"),
218
- b->idx.named.scheme->md));
219
+ b->legacy_index()->named.scheme->md));
219
220
  }
220
- grpc_metadata_batch_remove(b, GRPC_BATCH_SCHEME);
221
+ b->Remove(GRPC_BATCH_SCHEME);
221
222
  } else {
222
- hs_add_error(
223
- error_name, &error,
224
- grpc_error_set_str(
225
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
226
- GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":scheme")));
223
+ hs_add_error(error_name, &error,
224
+ grpc_error_set_str(
225
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
226
+ GRPC_ERROR_STR_KEY, ":scheme"));
227
227
  }
228
228
 
229
- if (b->idx.named.content_type != nullptr) {
229
+ if (b->legacy_index()->named.content_type != nullptr) {
230
230
  if (!grpc_mdelem_static_value_eq(
231
- b->idx.named.content_type->md,
231
+ b->legacy_index()->named.content_type->md,
232
232
  GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC)) {
233
- if (grpc_slice_buf_start_eq(GRPC_MDVALUE(b->idx.named.content_type->md),
234
- EXPECTED_CONTENT_TYPE,
235
- EXPECTED_CONTENT_TYPE_LENGTH) &&
233
+ if (grpc_slice_buf_start_eq(
234
+ GRPC_MDVALUE(b->legacy_index()->named.content_type->md),
235
+ EXPECTED_CONTENT_TYPE, EXPECTED_CONTENT_TYPE_LENGTH) &&
236
236
  (GRPC_SLICE_START_PTR(GRPC_MDVALUE(
237
- b->idx.named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
237
+ b->legacy_index()
238
+ ->named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
238
239
  '+' ||
239
240
  GRPC_SLICE_START_PTR(GRPC_MDVALUE(
240
- b->idx.named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
241
+ b->legacy_index()
242
+ ->named.content_type->md))[EXPECTED_CONTENT_TYPE_LENGTH] ==
241
243
  ';')) {
242
244
  /* Although the C implementation doesn't (currently) generate them,
243
245
  any custom +-suffix is explicitly valid. */
@@ -247,27 +249,27 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
247
249
  } else {
248
250
  /* TODO(klempner): We're currently allowing this, but we shouldn't
249
251
  see it without a proxy so log for now. */
250
- char* val = grpc_dump_slice(GRPC_MDVALUE(b->idx.named.content_type->md),
251
- GPR_DUMP_ASCII);
252
+ char* val = grpc_dump_slice(
253
+ GRPC_MDVALUE(b->legacy_index()->named.content_type->md),
254
+ GPR_DUMP_ASCII);
252
255
  gpr_log(GPR_INFO, "Unexpected content-type '%s'", val);
253
256
  gpr_free(val);
254
257
  }
255
258
  }
256
- grpc_metadata_batch_remove(b, GRPC_BATCH_CONTENT_TYPE);
259
+ b->Remove(GRPC_BATCH_CONTENT_TYPE);
257
260
  }
258
261
 
259
- if (b->idx.named.path == nullptr) {
260
- hs_add_error(
261
- error_name, &error,
262
- grpc_error_set_str(
263
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
264
- GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":path")));
262
+ if (b->legacy_index()->named.path == nullptr) {
263
+ hs_add_error(error_name, &error,
264
+ grpc_error_set_str(
265
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
266
+ GRPC_ERROR_STR_KEY, ":path"));
265
267
  } else if (*calld->recv_initial_metadata_flags &
266
268
  GRPC_INITIAL_METADATA_CACHEABLE_REQUEST) {
267
269
  /* We have a cacheable request made with GET verb. The path contains the
268
270
  * query parameter which is base64 encoded request payload. */
269
271
  const char k_query_separator = '?';
270
- grpc_slice path_slice = GRPC_MDVALUE(b->idx.named.path->md);
272
+ grpc_slice path_slice = GRPC_MDVALUE(b->legacy_index()->named.path->md);
271
273
  uint8_t* path_ptr = GRPC_SLICE_START_PTR(path_slice);
272
274
  size_t path_length = GRPC_SLICE_LENGTH(path_slice);
273
275
  /* offset of the character '?' */
@@ -283,8 +285,8 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
283
285
  grpc_mdelem mdelem_path_without_query = grpc_mdelem_from_slices(
284
286
  GRPC_MDSTR_PATH, grpc_slice_sub(path_slice, 0, offset));
285
287
 
286
- grpc_metadata_batch_substitute(b, b->idx.named.path,
287
- mdelem_path_without_query);
288
+ (void)b->Substitute(b->legacy_index()->named.path,
289
+ mdelem_path_without_query);
288
290
 
289
291
  /* decode payload from query and add to the slice buffer to be returned */
290
292
  const int k_url_safe = 1;
@@ -304,10 +306,11 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
304
306
  }
305
307
  }
306
308
 
307
- if (b->idx.named.host != nullptr && b->idx.named.authority == nullptr) {
308
- grpc_linked_mdelem* el = b->idx.named.host;
309
+ if (b->legacy_index()->named.host != nullptr &&
310
+ b->legacy_index()->named.authority == nullptr) {
311
+ grpc_linked_mdelem* el = b->legacy_index()->named.host;
309
312
  grpc_mdelem md = GRPC_MDELEM_REF(el->md);
310
- grpc_metadata_batch_remove(b, el);
313
+ b->Remove(el);
311
314
  hs_add_error(
312
315
  error_name, &error,
313
316
  grpc_metadata_batch_add_head(
@@ -318,17 +321,17 @@ static grpc_error_handle hs_filter_incoming_metadata(grpc_call_element* elem,
318
321
  GRPC_MDELEM_UNREF(md);
319
322
  }
320
323
 
321
- if (b->idx.named.authority == nullptr) {
322
- hs_add_error(
323
- error_name, &error,
324
- grpc_error_set_str(
325
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
326
- GRPC_ERROR_STR_KEY, grpc_slice_from_static_string(":authority")));
324
+ if (b->legacy_index()->named.authority == nullptr) {
325
+ hs_add_error(error_name, &error,
326
+ grpc_error_set_str(
327
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Missing header"),
328
+ GRPC_ERROR_STR_KEY, ":authority"));
327
329
  }
328
330
 
329
331
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
330
- if (!chand->surface_user_agent && b->idx.named.user_agent != nullptr) {
331
- grpc_metadata_batch_remove(b, GRPC_BATCH_USER_AGENT);
332
+ if (!chand->surface_user_agent &&
333
+ b->legacy_index()->named.user_agent != nullptr) {
334
+ b->Remove(GRPC_BATCH_USER_AGENT);
332
335
  }
333
336
 
334
337
  return error;
@@ -359,7 +362,7 @@ static void hs_recv_initial_metadata_ready(void* user_data,
359
362
  "resuming recv_message_ready from recv_initial_metadata_ready");
360
363
  }
361
364
  } else {
362
- GRPC_ERROR_REF(err);
365
+ (void)GRPC_ERROR_REF(err);
363
366
  }
364
367
  if (calld->seen_recv_trailing_metadata_ready) {
365
368
  GRPC_CALL_COMBINER_START(calld->call_combiner,
@@ -25,8 +25,8 @@
25
25
 
26
26
  #include "src/core/lib/channel/channel_args.h"
27
27
  #include "src/core/lib/channel/channel_stack_builder.h"
28
+ #include "src/core/lib/config/core_configuration.h"
28
29
  #include "src/core/lib/iomgr/timer.h"
29
- #include "src/core/lib/surface/channel_init.h"
30
30
  #include "src/core/lib/transport/http2_errors.h"
31
31
 
32
32
  /* If these settings change, make sure that we are not sending a GOAWAY for
@@ -534,29 +534,27 @@ const grpc_channel_filter grpc_max_age_filter = {
534
534
  grpc_channel_next_get_info,
535
535
  "max_age"};
536
536
 
537
- static bool maybe_add_max_age_filter(grpc_channel_stack_builder* builder,
538
- void* /*arg*/) {
539
- const grpc_channel_args* channel_args =
540
- grpc_channel_stack_builder_get_channel_arguments(builder);
541
- bool enable =
542
- grpc_channel_arg_get_integer(
543
- grpc_channel_args_find(channel_args, GRPC_ARG_MAX_CONNECTION_AGE_MS),
544
- MAX_CONNECTION_AGE_INTEGER_OPTIONS) != INT_MAX ||
545
- grpc_channel_arg_get_integer(
546
- grpc_channel_args_find(channel_args, GRPC_ARG_MAX_CONNECTION_IDLE_MS),
547
- MAX_CONNECTION_IDLE_INTEGER_OPTIONS) != INT_MAX;
548
- if (enable) {
549
- return grpc_channel_stack_builder_prepend_filter(
550
- builder, &grpc_max_age_filter, nullptr, nullptr);
551
- } else {
552
- return true;
553
- }
554
- }
555
-
556
- void grpc_max_age_filter_init(void) {
557
- grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
558
- GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
559
- maybe_add_max_age_filter, nullptr);
537
+ namespace grpc_core {
538
+ void RegisterMaxAgeFilter(CoreConfiguration::Builder* builder) {
539
+ builder->channel_init()->RegisterStage(
540
+ GRPC_SERVER_CHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
541
+ [](grpc_channel_stack_builder* builder) {
542
+ const grpc_channel_args* channel_args =
543
+ grpc_channel_stack_builder_get_channel_arguments(builder);
544
+ bool enable = grpc_channel_arg_get_integer(
545
+ grpc_channel_args_find(
546
+ channel_args, GRPC_ARG_MAX_CONNECTION_AGE_MS),
547
+ MAX_CONNECTION_AGE_INTEGER_OPTIONS) != INT_MAX ||
548
+ grpc_channel_arg_get_integer(
549
+ grpc_channel_args_find(
550
+ channel_args, GRPC_ARG_MAX_CONNECTION_IDLE_MS),
551
+ MAX_CONNECTION_IDLE_INTEGER_OPTIONS) != INT_MAX;
552
+ if (enable) {
553
+ return grpc_channel_stack_builder_prepend_filter(
554
+ builder, &grpc_max_age_filter, nullptr, nullptr);
555
+ } else {
556
+ return true;
557
+ }
558
+ });
560
559
  }
561
-
562
- void grpc_max_age_filter_shutdown(void) {}
560
+ } // namespace grpc_core
@@ -27,15 +27,14 @@
27
27
  #include <grpc/support/alloc.h>
28
28
  #include <grpc/support/log.h>
29
29
 
30
- #include "src/core/ext/filters/client_channel/service_config.h"
31
- #include "src/core/ext/filters/client_channel/service_config_call_data.h"
30
+ #include "src/core/ext/service_config/service_config_call_data.h"
32
31
  #include "src/core/lib/channel/channel_args.h"
33
32
  #include "src/core/lib/channel/channel_stack_builder.h"
33
+ #include "src/core/lib/config/core_configuration.h"
34
34
  #include "src/core/lib/gpr/string.h"
35
35
  #include "src/core/lib/gprpp/ref_counted.h"
36
36
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
37
37
  #include "src/core/lib/surface/call.h"
38
- #include "src/core/lib/surface/channel_init.h"
39
38
 
40
39
  static void recv_message_ready(void* user_data, grpc_error_handle error);
41
40
  static void recv_trailing_metadata_ready(void* user_data,
@@ -211,7 +210,7 @@ static void recv_message_ready(void* user_data, grpc_error_handle error) {
211
210
  GRPC_ERROR_UNREF(calld->error);
212
211
  calld->error = GRPC_ERROR_REF(error);
213
212
  } else {
214
- GRPC_ERROR_REF(error);
213
+ (void)GRPC_ERROR_REF(error);
215
214
  }
216
215
  // Invoke the next callback.
217
216
  grpc_closure* closure = calld->next_recv_message_ready;
@@ -344,7 +343,7 @@ const grpc_channel_filter grpc_message_size_filter = {
344
343
 
345
344
  // Used for GRPC_CLIENT_SUBCHANNEL
346
345
  static bool maybe_add_message_size_filter_subchannel(
347
- grpc_channel_stack_builder* builder, void* /*arg*/) {
346
+ grpc_channel_stack_builder* builder) {
348
347
  const grpc_channel_args* channel_args =
349
348
  grpc_channel_stack_builder_get_channel_arguments(builder);
350
349
  if (grpc_channel_args_want_minimal_stack(channel_args)) {
@@ -356,8 +355,7 @@ static bool maybe_add_message_size_filter_subchannel(
356
355
 
357
356
  // Used for GRPC_CLIENT_DIRECT_CHANNEL and GRPC_SERVER_CHANNEL. Adds the filter
358
357
  // only if message size limits or service config is specified.
359
- static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder,
360
- void* /*arg*/) {
358
+ static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder) {
361
359
  const grpc_channel_args* channel_args =
362
360
  grpc_channel_stack_builder_get_channel_arguments(builder);
363
361
  if (grpc_channel_args_want_minimal_stack(channel_args)) {
@@ -384,16 +382,21 @@ static bool maybe_add_message_size_filter(grpc_channel_stack_builder* builder,
384
382
  }
385
383
 
386
384
  void grpc_message_size_filter_init(void) {
387
- grpc_channel_init_register_stage(
388
- GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
389
- maybe_add_message_size_filter_subchannel, nullptr);
390
- grpc_channel_init_register_stage(GRPC_CLIENT_DIRECT_CHANNEL,
391
- GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
392
- maybe_add_message_size_filter, nullptr);
393
- grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL,
394
- GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
395
- maybe_add_message_size_filter, nullptr);
396
385
  grpc_core::MessageSizeParser::Register();
397
386
  }
398
387
 
399
388
  void grpc_message_size_filter_shutdown(void) {}
389
+
390
+ namespace grpc_core {
391
+ void RegisterMessageSizeFilter(CoreConfiguration::Builder* builder) {
392
+ builder->channel_init()->RegisterStage(
393
+ GRPC_CLIENT_SUBCHANNEL, GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
394
+ maybe_add_message_size_filter_subchannel);
395
+ builder->channel_init()->RegisterStage(GRPC_CLIENT_DIRECT_CHANNEL,
396
+ GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
397
+ maybe_add_message_size_filter);
398
+ builder->channel_init()->RegisterStage(GRPC_SERVER_CHANNEL,
399
+ GRPC_CHANNEL_INIT_BUILTIN_PRIORITY,
400
+ maybe_add_message_size_filter);
401
+ }
402
+ } // namespace grpc_core
@@ -19,7 +19,7 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include "src/core/ext/filters/client_channel/service_config_parser.h"
22
+ #include "src/core/ext/service_config/service_config_parser.h"
23
23
  #include "src/core/lib/channel/channel_stack.h"
24
24
 
25
25
  extern const grpc_channel_filter grpc_message_size_filter;
@@ -16,7 +16,7 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include "src/core/ext/filters/client_channel/service_config.h"
19
+ #include "src/core/ext/service_config/service_config.h"
20
20
 
21
21
  #include <string>
22
22
 
@@ -24,7 +24,7 @@
24
24
 
25
25
  #include <grpc/support/log.h>
26
26
 
27
- #include "src/core/ext/filters/client_channel/service_config_parser.h"
27
+ #include "src/core/ext/service_config/service_config_parser.h"
28
28
  #include "src/core/lib/json/json.h"
29
29
  #include "src/core/lib/slice/slice_internal.h"
30
30
 
@@ -14,8 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_H
18
- #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_H
17
+ #ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H
18
+ #define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
@@ -26,7 +26,7 @@
26
26
  #include <grpc/impl/codegen/grpc_types.h>
27
27
  #include <grpc/support/string_util.h>
28
28
 
29
- #include "src/core/ext/filters/client_channel/service_config_parser.h"
29
+ #include "src/core/ext/service_config/service_config_parser.h"
30
30
  #include "src/core/lib/gprpp/ref_counted.h"
31
31
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
32
32
  #include "src/core/lib/iomgr/error.h"
@@ -124,4 +124,4 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
124
124
 
125
125
  } // namespace grpc_core
126
126
 
127
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_H */
127
+ #endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_H */
@@ -0,0 +1,72 @@
1
+ //
2
+ // Copyright 2016 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H
18
+ #define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <map>
23
+
24
+ #include "absl/strings/string_view.h"
25
+
26
+ #include "src/core/ext/service_config/service_config.h"
27
+ #include "src/core/ext/service_config/service_config_parser.h"
28
+ #include "src/core/lib/channel/context.h"
29
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
30
+
31
+ namespace grpc_core {
32
+
33
+ /// Stores the service config data associated with an individual call.
34
+ /// A pointer to this object is stored in the call_context
35
+ /// GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA element, so that filters can
36
+ /// easily access method and global parameters for the call.
37
+ class ServiceConfigCallData {
38
+ public:
39
+ using CallAttributes = std::map<const char*, absl::string_view>;
40
+
41
+ ServiceConfigCallData() : method_configs_(nullptr) {}
42
+
43
+ ServiceConfigCallData(
44
+ RefCountedPtr<ServiceConfig> service_config,
45
+ const ServiceConfigParser::ParsedConfigVector* method_configs,
46
+ CallAttributes call_attributes)
47
+ : service_config_(std::move(service_config)),
48
+ method_configs_(method_configs),
49
+ call_attributes_(std::move(call_attributes)) {}
50
+
51
+ ServiceConfig* service_config() { return service_config_.get(); }
52
+
53
+ ServiceConfigParser::ParsedConfig* GetMethodParsedConfig(size_t index) const {
54
+ return method_configs_ != nullptr ? (*method_configs_)[index].get()
55
+ : nullptr;
56
+ }
57
+
58
+ ServiceConfigParser::ParsedConfig* GetGlobalParsedConfig(size_t index) const {
59
+ return service_config_->GetGlobalParsedConfig(index);
60
+ }
61
+
62
+ const CallAttributes& call_attributes() const { return call_attributes_; }
63
+
64
+ private:
65
+ RefCountedPtr<ServiceConfig> service_config_;
66
+ const ServiceConfigParser::ParsedConfigVector* method_configs_;
67
+ CallAttributes call_attributes_;
68
+ };
69
+
70
+ } // namespace grpc_core
71
+
72
+ #endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H */
@@ -16,7 +16,7 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include "src/core/ext/filters/client_channel/service_config_parser.h"
19
+ #include "src/core/ext/service_config/service_config_parser.h"
20
20
 
21
21
  #include <grpc/support/log.h>
22
22
 
@@ -29,12 +29,12 @@ typedef absl::InlinedVector<std::unique_ptr<ServiceConfigParser::Parser>,
29
29
  ServiceConfigParserList* g_registered_parsers;
30
30
  } // namespace
31
31
 
32
- void ServiceConfigParser::Init() {
32
+ void ServiceConfigParserInit() {
33
33
  GPR_ASSERT(g_registered_parsers == nullptr);
34
34
  g_registered_parsers = new ServiceConfigParserList();
35
35
  }
36
36
 
37
- void ServiceConfigParser::Shutdown() {
37
+ void ServiceConfigParserShutdown() {
38
38
  delete g_registered_parsers;
39
39
  g_registered_parsers = nullptr;
40
40
  }
@@ -14,8 +14,8 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_PARSER_H
18
- #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_PARSER_H
17
+ #ifndef GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H
18
+ #define GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
@@ -30,6 +30,11 @@
30
30
 
31
31
  namespace grpc_core {
32
32
 
33
+ // Initialization functions for ServiceConfigParser. ServiceConfigParser should
34
+ // be initialized before any parser implementation is registered.
35
+ void ServiceConfigParserInit();
36
+ void ServiceConfigParserShutdown();
37
+
33
38
  // Service config parser registry.
34
39
  // See service_config.h for more information.
35
40
  class ServiceConfigParser {
@@ -70,9 +75,6 @@ class ServiceConfigParser {
70
75
  kNumPreallocatedParsers>
71
76
  ParsedConfigVector;
72
77
 
73
- static void Init();
74
- static void Shutdown();
75
-
76
78
  /// Globally register a service config parser. On successful registration, it
77
79
  /// returns the index at which the parser was registered. On failure, -1 is
78
80
  /// returned. Each new service config update will go through all the
@@ -92,4 +94,4 @@ class ServiceConfigParser {
92
94
 
93
95
  } // namespace grpc_core
94
96
 
95
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_SERVICE_CONFIG_PARSER_H */
97
+ #endif /* GRPC_CORE_EXT_SERVICE_CONFIG_SERVICE_CONFIG_PARSER_H */
@@ -28,7 +28,6 @@
28
28
  #include <grpc/support/string_util.h>
29
29
 
30
30
  #include "src/core/ext/filters/client_channel/connector.h"
31
- #include "src/core/ext/filters/client_channel/subchannel.h"
32
31
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
33
32
  #include "src/core/lib/address_utils/sockaddr_utils.h"
34
33
  #include "src/core/lib/channel/channel_args.h"
@@ -54,8 +53,6 @@ Chttp2Connector::~Chttp2Connector() {
54
53
 
55
54
  void Chttp2Connector::Connect(const Args& args, Result* result,
56
55
  grpc_closure* notify) {
57
- grpc_resolved_address addr;
58
- Subchannel::GetAddressFromSubchannelAddressArg(args.channel_args, &addr);
59
56
  grpc_endpoint** ep;
60
57
  {
61
58
  MutexLock lock(&mu_);
@@ -83,9 +80,9 @@ void Chttp2Connector::Connect(const Args& args, Result* result,
83
80
  grpc_tcp_client_connect(
84
81
  &connected_, ep,
85
82
  grpc_slice_allocator_create(resource_quota_,
86
- grpc_sockaddr_to_string(&addr, false),
83
+ grpc_sockaddr_to_string(args.address, false),
87
84
  args.channel_args),
88
- args.interested_parties, args.channel_args, &addr, args.deadline);
85
+ args.interested_parties, args.channel_args, args.address, args.deadline);
89
86
  }
90
87
 
91
88
  void Chttp2Connector::Shutdown(grpc_error_handle error) {