grpc 1.47.0 → 1.49.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 (1053) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +183 -62
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +37 -25
  5. data/include/grpc/event_engine/slice_buffer.h +8 -2
  6. data/include/grpc/grpc.h +3 -3
  7. data/include/grpc/impl/codegen/compression_types.h +2 -1
  8. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  9. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +5 -9
  11. data/include/grpc/impl/codegen/port_platform.h +2 -7
  12. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +20 -8
  14. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -2
  15. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
  18. data/src/core/ext/filters/client_channel/client_channel.cc +164 -261
  19. data/src/core/ext/filters/client_channel/client_channel.h +34 -12
  20. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  21. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  22. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/ext/filters/client_channel/config_selector.h +13 -5
  24. data/src/core/ext/filters/client_channel/connector.h +5 -6
  25. data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
  26. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  28. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  29. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  31. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +170 -164
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +13 -4
  36. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  37. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  39. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
  40. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  41. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +200 -96
  42. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  43. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +121 -131
  44. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +153 -116
  45. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +220 -181
  46. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -6
  47. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +110 -119
  48. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +133 -117
  49. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +97 -87
  50. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +114 -131
  51. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  52. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +84 -102
  53. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +64 -76
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +172 -103
  55. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  56. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +18 -16
  57. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  58. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +7 -9
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +434 -148
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +179 -103
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  63. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -18
  64. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +8 -18
  65. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  66. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +16 -18
  67. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +4 -5
  68. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  69. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
  70. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +181 -175
  71. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  72. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +39 -32
  73. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  74. data/src/core/ext/filters/client_channel/retry_filter.cc +35 -43
  75. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  76. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  77. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  78. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +7 -7
  79. data/src/core/ext/filters/client_channel/subchannel.cc +101 -138
  80. data/src/core/ext/filters/client_channel/subchannel.h +14 -30
  81. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  82. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  83. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  84. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +15 -101
  85. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
  86. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -13
  87. data/src/core/ext/filters/deadline/deadline_filter.h +8 -2
  88. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +20 -3
  89. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -4
  90. data/src/core/ext/filters/fault_injection/service_config_parser.cc +19 -11
  91. data/src/core/ext/filters/fault_injection/service_config_parser.h +19 -6
  92. data/src/core/ext/filters/http/client/http_client_filter.cc +17 -7
  93. data/src/core/ext/filters/http/client/http_client_filter.h +9 -2
  94. data/src/core/ext/filters/http/client_authority_filter.cc +11 -11
  95. data/src/core/ext/filters/http/client_authority_filter.h +6 -3
  96. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
  97. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
  98. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  99. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
  100. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  101. data/src/core/ext/filters/http/server/http_server_filter.cc +17 -11
  102. data/src/core/ext/filters/http/server/http_server_filter.h +7 -2
  103. data/src/core/ext/filters/message_size/message_size_filter.cc +37 -21
  104. data/src/core/ext/filters/message_size/message_size_filter.h +13 -3
  105. data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
  106. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  107. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +25 -10
  108. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +15 -5
  109. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  110. data/src/core/ext/filters/server_config_selector/server_config_selector.h +14 -0
  111. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +23 -5
  112. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  113. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +39 -66
  114. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +77 -104
  115. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  116. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +320 -635
  117. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -3
  118. data/src/core/ext/transport/chttp2/transport/flow_control.cc +207 -262
  119. data/src/core/ext/transport/chttp2/transport/flow_control.h +177 -289
  120. data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
  121. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
  122. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
  124. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  125. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  126. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  128. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -16
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
  131. data/src/core/ext/transport/chttp2/transport/internal.h +11 -112
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
  133. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
  135. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  136. data/src/core/ext/transport/inproc/inproc_transport.cc +124 -154
  137. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  138. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  139. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  140. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  141. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  142. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  143. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  144. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  145. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  146. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  147. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  148. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  149. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  150. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  151. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  152. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  153. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  154. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  156. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  157. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  158. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  159. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  160. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  161. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  162. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  163. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  164. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  165. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  166. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  167. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  168. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  169. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  170. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  171. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  172. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  173. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  180. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  181. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  182. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  185. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  186. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  205. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  206. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  207. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  208. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  209. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  210. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  211. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  212. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  213. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  214. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  215. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  216. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  217. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  218. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  219. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  220. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  221. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  222. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  223. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  224. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  225. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  226. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  227. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  228. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  229. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  230. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  231. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  232. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  233. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  234. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  235. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  236. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  237. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  238. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  239. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  240. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  241. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  246. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  247. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  249. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  250. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  259. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  263. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  264. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  265. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  266. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  267. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  269. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  270. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  271. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  272. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +168 -0
  273. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  274. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  276. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  277. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  280. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  281. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  282. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  285. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  286. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  287. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  288. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  289. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  290. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  291. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  292. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  293. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  294. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  295. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  296. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  297. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  298. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  299. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  300. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  301. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  302. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  303. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  304. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  305. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  306. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  307. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  308. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  309. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  310. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  311. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  312. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  313. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  314. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  315. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  316. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  317. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  318. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  319. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  320. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  321. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  322. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  323. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  324. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  325. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  326. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  327. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  328. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  329. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  330. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  331. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  332. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  333. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  334. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  335. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  336. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  337. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  338. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  339. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  340. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  341. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  342. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  343. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  344. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  345. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  346. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  347. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  348. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  349. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  350. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  351. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  352. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  353. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  354. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  355. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  356. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  357. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  358. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  359. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  360. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  361. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  362. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  363. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  364. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  365. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  366. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  367. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  368. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  369. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  370. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  371. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  372. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  373. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  374. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  375. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  376. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  377. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  378. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  379. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  380. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  381. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  382. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  383. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  384. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  385. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  386. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  387. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  388. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  389. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  390. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  391. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  392. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  393. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  394. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  395. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  396. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  397. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  398. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  399. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  400. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  401. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  402. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  403. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  404. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  405. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  406. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  407. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  408. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  409. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  410. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  411. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  412. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  413. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  414. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  415. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  416. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  417. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  418. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  419. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  420. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  421. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  422. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  423. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  424. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  425. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  426. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  427. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  428. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  429. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  430. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  431. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  432. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  433. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  434. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  435. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  436. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  437. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  438. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  439. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  440. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  441. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  442. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  443. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  444. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  445. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  446. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  447. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  448. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  449. data/src/core/ext/xds/certificate_provider_store.cc +2 -0
  450. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  451. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  452. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  453. data/src/core/ext/xds/upb_utils.h +0 -22
  454. data/src/core/ext/xds/xds_api.cc +68 -103
  455. data/src/core/ext/xds/xds_api.h +30 -32
  456. data/src/core/ext/xds/xds_bootstrap.cc +69 -69
  457. data/src/core/ext/xds/xds_bootstrap.h +37 -19
  458. data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
  459. data/src/core/ext/xds/xds_certificate_provider.h +25 -1
  460. data/src/core/ext/xds/xds_channel_stack_modifier.cc +15 -4
  461. data/src/core/ext/xds/xds_channel_stack_modifier.h +13 -1
  462. data/src/core/ext/xds/xds_client.cc +583 -1193
  463. data/src/core/ext/xds/xds_client.h +28 -42
  464. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  465. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  466. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  467. data/src/core/ext/xds/xds_client_stats.h +4 -3
  468. data/src/core/ext/xds/xds_cluster.cc +107 -107
  469. data/src/core/ext/xds/xds_cluster.h +14 -5
  470. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +23 -18
  471. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -8
  472. data/src/core/ext/xds/xds_common_types.cc +161 -123
  473. data/src/core/ext/xds/xds_common_types.h +16 -9
  474. data/src/core/ext/xds/xds_endpoint.cc +95 -85
  475. data/src/core/ext/xds/xds_endpoint.h +16 -8
  476. data/src/core/ext/xds/xds_http_fault_filter.cc +11 -16
  477. data/src/core/ext/xds/xds_http_fault_filter.h +5 -3
  478. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  479. data/src/core/ext/xds/xds_http_filters.h +5 -5
  480. data/src/core/ext/xds/xds_http_rbac_filter.cc +52 -55
  481. data/src/core/ext/xds/xds_http_rbac_filter.h +8 -1
  482. data/src/core/ext/xds/xds_lb_policy_registry.cc +288 -0
  483. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  484. data/src/core/ext/xds/xds_listener.cc +355 -307
  485. data/src/core/ext/xds/xds_listener.h +13 -4
  486. data/src/core/ext/xds/xds_resource_type.h +16 -5
  487. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  488. data/src/core/ext/xds/xds_route_config.cc +215 -184
  489. data/src/core/ext/xds/xds_route_config.h +39 -16
  490. data/src/core/ext/xds/xds_routing.cc +19 -6
  491. data/src/core/ext/xds/xds_routing.h +12 -9
  492. data/src/core/ext/xds/xds_server_config_fetcher.cc +124 -81
  493. data/src/core/ext/xds/xds_transport.h +86 -0
  494. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  495. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  496. data/src/core/lib/address_utils/parse_address.cc +24 -25
  497. data/src/core/lib/address_utils/parse_address.h +11 -7
  498. data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
  499. data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
  500. data/src/core/lib/avl/avl.h +47 -25
  501. data/src/core/lib/backoff/backoff.cc +1 -1
  502. data/src/core/lib/backoff/backoff.h +1 -1
  503. data/src/core/lib/channel/call_tracer.h +4 -4
  504. data/src/core/lib/channel/channel_args.cc +88 -19
  505. data/src/core/lib/channel/channel_args.h +114 -62
  506. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  507. data/src/core/lib/channel/channel_fwd.h +26 -0
  508. data/src/core/lib/channel/channel_stack.cc +4 -5
  509. data/src/core/lib/channel/channel_stack.h +1 -11
  510. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  511. data/src/core/lib/channel/channel_stack_builder.h +4 -7
  512. data/src/core/lib/channel/channel_stack_builder_impl.cc +3 -5
  513. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
  514. data/src/core/lib/channel/channelz.cc +28 -37
  515. data/src/core/lib/channel/channelz.h +11 -3
  516. data/src/core/lib/channel/channelz_registry.cc +4 -5
  517. data/src/core/lib/channel/connected_channel.cc +1 -0
  518. data/src/core/lib/channel/connected_channel.h +1 -0
  519. data/src/core/lib/channel/promise_based_filter.cc +11 -5
  520. data/src/core/lib/channel/promise_based_filter.h +2 -1
  521. data/src/core/lib/compression/compression.cc +6 -1
  522. data/src/core/lib/compression/compression_internal.cc +3 -6
  523. data/src/core/lib/compression/compression_internal.h +3 -2
  524. data/src/core/lib/compression/message_compress.cc +3 -1
  525. data/src/core/lib/compression/message_compress.h +2 -3
  526. data/src/core/lib/config/core_configuration.h +48 -35
  527. data/src/core/lib/debug/stats.cc +15 -18
  528. data/src/core/lib/debug/stats.h +13 -4
  529. data/src/core/lib/debug/stats_data.cc +2 -1
  530. data/src/core/lib/debug/stats_data.h +0 -4
  531. data/src/core/lib/debug/trace.h +13 -12
  532. data/src/core/lib/event_engine/default_event_engine.cc +71 -0
  533. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +6 -10
  534. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  535. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  536. data/src/core/lib/event_engine/executor/executor.h +38 -0
  537. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  538. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  539. data/src/core/lib/event_engine/forkable.cc +98 -0
  540. data/src/core/lib/event_engine/forkable.h +61 -0
  541. data/src/core/lib/event_engine/poller.h +54 -0
  542. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +142 -0
  543. data/src/core/lib/event_engine/{iomgr_engine.h → posix_engine/posix_engine.h} +35 -32
  544. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  545. data/src/core/lib/event_engine/posix_engine/timer.h +193 -0
  546. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  547. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  548. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +290 -0
  549. data/src/core/lib/event_engine/posix_engine/timer_manager.h +120 -0
  550. data/src/core/lib/event_engine/promise.h +78 -0
  551. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  552. data/src/core/lib/event_engine/thread_pool.cc +158 -0
  553. data/src/core/lib/event_engine/thread_pool.h +81 -0
  554. data/src/core/lib/event_engine/utils.cc +49 -0
  555. data/src/core/lib/event_engine/utils.h +40 -0
  556. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  557. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  558. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  559. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  560. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  561. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  562. data/src/core/lib/gpr/time.cc +11 -9
  563. data/src/core/lib/gpr/time_posix.cc +6 -9
  564. data/src/core/lib/gpr/time_windows.cc +10 -7
  565. data/src/core/lib/gpr/useful.h +29 -0
  566. data/src/core/lib/gprpp/bitset.h +3 -13
  567. data/src/core/lib/gprpp/debug_location.h +39 -7
  568. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  569. data/src/core/lib/gprpp/no_destruct.h +94 -0
  570. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  571. data/src/core/lib/gprpp/status_helper.cc +45 -30
  572. data/src/core/lib/gprpp/table.h +0 -1
  573. data/src/core/lib/gprpp/time.cc +8 -0
  574. data/src/core/lib/gprpp/time.h +4 -0
  575. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  576. data/src/core/lib/{iomgr → gprpp}/time_averaged_stats.h +29 -22
  577. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  578. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -28
  579. data/src/core/lib/http/format_request.cc +5 -4
  580. data/src/core/lib/http/format_request.h +1 -1
  581. data/src/core/lib/http/httpcli.cc +29 -35
  582. data/src/core/lib/http/httpcli.h +19 -3
  583. data/src/core/lib/http/httpcli_security_connector.cc +26 -14
  584. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  585. data/src/core/lib/http/parser.cc +6 -7
  586. data/src/core/lib/http/parser.h +3 -0
  587. data/src/core/lib/iomgr/call_combiner.cc +2 -28
  588. data/src/core/lib/iomgr/closure.h +0 -9
  589. data/src/core/lib/iomgr/combiner.cc +0 -20
  590. data/src/core/lib/iomgr/endpoint.h +1 -1
  591. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
  592. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  593. data/src/core/lib/iomgr/error.cc +6 -777
  594. data/src/core/lib/iomgr/error.h +6 -147
  595. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  596. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  597. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  598. data/src/core/lib/iomgr/ev_poll_posix.cc +94 -61
  599. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  600. data/src/core/lib/iomgr/ev_posix.cc +54 -92
  601. data/src/core/lib/iomgr/ev_posix.h +5 -3
  602. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  603. data/src/core/lib/iomgr/executor.cc +0 -10
  604. data/src/core/lib/iomgr/executor.h +0 -3
  605. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  606. data/src/core/lib/iomgr/iomgr.cc +7 -0
  607. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  608. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  609. data/src/core/lib/iomgr/load_file.cc +1 -1
  610. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  611. data/src/core/lib/iomgr/port.h +3 -0
  612. data/src/core/lib/iomgr/resolve_address.h +29 -6
  613. data/src/core/lib/iomgr/resolve_address_posix.cc +39 -9
  614. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  615. data/src/core/lib/iomgr/resolve_address_windows.cc +41 -11
  616. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  617. data/src/core/lib/iomgr/socket_windows.h +0 -2
  618. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  619. data/src/core/lib/iomgr/tcp_client.h +24 -13
  620. data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
  621. data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
  622. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  623. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
  624. data/src/core/lib/iomgr/tcp_posix.cc +207 -33
  625. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
  626. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
  627. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  628. data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
  629. data/src/core/lib/iomgr/tcp_windows.cc +5 -5
  630. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  631. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  632. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  633. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  634. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  635. data/src/core/lib/json/json.h +19 -22
  636. data/src/core/lib/json/json_args.h +34 -0
  637. data/src/core/lib/json/json_object_loader.cc +233 -0
  638. data/src/core/lib/json/json_object_loader.h +618 -0
  639. data/src/core/lib/json/json_reader.cc +86 -62
  640. data/src/core/lib/json/json_util.cc +8 -36
  641. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  642. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -31
  643. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  644. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +48 -73
  645. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  646. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +16 -24
  647. data/src/core/lib/matchers/matchers.cc +6 -3
  648. data/src/core/lib/matchers/matchers.h +2 -0
  649. data/src/core/lib/promise/activity.cc +0 -1
  650. data/src/core/lib/promise/activity.h +56 -14
  651. data/src/core/lib/promise/arena_promise.h +84 -81
  652. data/src/core/lib/promise/context.h +0 -1
  653. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  654. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  655. data/src/core/lib/promise/loop.h +1 -0
  656. data/src/core/lib/promise/map.h +0 -1
  657. data/src/core/lib/promise/promise.h +1 -0
  658. data/src/core/lib/promise/seq.h +25 -4
  659. data/src/core/lib/promise/sleep.cc +43 -42
  660. data/src/core/lib/promise/sleep.h +31 -28
  661. data/src/core/lib/promise/try_seq.h +26 -6
  662. data/src/core/lib/resolver/resolver.cc +0 -42
  663. data/src/core/lib/resolver/resolver.h +5 -12
  664. data/src/core/lib/resolver/resolver_factory.h +6 -4
  665. data/src/core/lib/resolver/resolver_registry.cc +3 -10
  666. data/src/core/lib/resolver/resolver_registry.h +12 -2
  667. data/src/core/lib/resolver/server_address.cc +19 -15
  668. data/src/core/lib/resolver/server_address.h +11 -8
  669. data/src/core/lib/resource_quota/api.cc +1 -1
  670. data/src/core/lib/resource_quota/arena.cc +21 -1
  671. data/src/core/lib/resource_quota/arena.h +24 -2
  672. data/src/core/lib/resource_quota/memory_quota.cc +171 -73
  673. data/src/core/lib/resource_quota/memory_quota.h +109 -42
  674. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  675. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  676. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  677. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  678. data/src/core/lib/security/authorization/evaluate_args.cc +17 -8
  679. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  680. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  681. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  682. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -1
  683. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +13 -2
  684. data/src/core/lib/security/authorization/matchers.cc +20 -9
  685. data/src/core/lib/security/authorization/matchers.h +7 -0
  686. data/src/core/lib/security/authorization/rbac_policy.cc +4 -0
  687. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  688. data/src/core/lib/security/context/security_context.cc +5 -2
  689. data/src/core/lib/security/context/security_context.h +14 -2
  690. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -5
  691. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -4
  692. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  693. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  694. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  695. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  696. data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
  697. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  698. data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -9
  699. data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -5
  700. data/src/core/lib/security/credentials/credentials.cc +4 -8
  701. data/src/core/lib/security/credentials/credentials.h +26 -20
  702. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +45 -20
  703. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
  704. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  705. data/src/core/lib/security/credentials/external/external_account_credentials.cc +53 -29
  706. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  707. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +15 -8
  708. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  709. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +23 -9
  710. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  711. data/src/core/lib/security/credentials/fake/fake_credentials.cc +10 -17
  712. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
  713. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  714. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +55 -35
  715. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -3
  716. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -3
  717. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
  718. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +7 -3
  719. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +7 -3
  720. data/src/core/lib/security/credentials/jwt/json_token.cc +17 -5
  721. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  722. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +12 -10
  723. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
  724. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +37 -14
  725. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  726. data/src/core/lib/security/credentials/local/local_credentials.cc +7 -7
  727. data/src/core/lib/security/credentials/local/local_credentials.h +9 -3
  728. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +41 -29
  729. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
  730. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +7 -7
  731. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
  732. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +18 -21
  733. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -3
  734. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  735. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  736. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
  737. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -4
  738. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
  739. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
  740. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  741. data/src/core/lib/security/credentials/tls/tls_credentials.cc +19 -26
  742. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -4
  743. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  744. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  745. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -31
  746. data/src/core/lib/security/credentials/xds/xds_credentials.h +16 -2
  747. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +30 -18
  748. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  749. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +42 -38
  750. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  751. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +13 -4
  752. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -5
  753. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  754. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  755. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  756. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -13
  757. data/src/core/lib/security/security_connector/local/local_security_connector.h +7 -3
  758. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  759. data/src/core/lib/security/security_connector/security_connector.h +23 -9
  760. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +21 -8
  761. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  762. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  763. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  764. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  765. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +25 -17
  766. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -7
  767. data/src/core/lib/security/transport/auth_filters.h +8 -1
  768. data/src/core/lib/security/transport/client_auth_filter.cc +19 -11
  769. data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
  770. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  771. data/src/core/lib/security/transport/security_handshaker.cc +70 -49
  772. data/src/core/lib/security/transport/security_handshaker.h +6 -1
  773. data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
  774. data/src/core/lib/security/util/json_util.cc +3 -2
  775. data/src/core/lib/security/util/json_util.h +0 -2
  776. data/src/core/lib/service_config/service_config.h +11 -0
  777. data/src/core/lib/service_config/service_config_call_data.h +2 -1
  778. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  779. data/src/core/lib/service_config/service_config_impl.h +12 -16
  780. data/src/core/lib/service_config/service_config_parser.cc +26 -29
  781. data/src/core/lib/service_config/service_config_parser.h +10 -22
  782. data/src/core/lib/slice/percent_encoding.cc +4 -13
  783. data/src/core/lib/slice/slice.cc +10 -4
  784. data/src/core/lib/slice/slice_buffer.cc +30 -1
  785. data/src/core/lib/slice/slice_buffer.h +37 -6
  786. data/src/core/lib/slice/slice_string_helpers.cc +0 -20
  787. data/src/core/lib/slice/slice_string_helpers.h +0 -4
  788. data/src/core/lib/surface/call.cc +61 -117
  789. data/src/core/lib/surface/call.h +5 -1
  790. data/src/core/lib/surface/channel.cc +6 -6
  791. data/src/core/lib/surface/channel.h +3 -1
  792. data/src/core/lib/surface/channel_ping.cc +1 -1
  793. data/src/core/lib/surface/completion_queue.cc +15 -16
  794. data/src/core/lib/surface/completion_queue.h +2 -4
  795. data/src/core/lib/surface/init.cc +2 -7
  796. data/src/core/lib/surface/lame_client.cc +3 -4
  797. data/src/core/lib/surface/lame_client.h +2 -2
  798. data/src/core/lib/surface/server.cc +21 -20
  799. data/src/core/lib/surface/server.h +11 -8
  800. data/src/core/lib/surface/validate_metadata.cc +5 -15
  801. data/src/core/lib/surface/version.cc +2 -2
  802. data/src/core/lib/transport/connectivity_state.cc +0 -1
  803. data/src/core/lib/transport/connectivity_state.h +1 -1
  804. data/src/core/lib/transport/error_utils.cc +9 -39
  805. data/src/core/lib/transport/handshaker.cc +10 -12
  806. data/src/core/lib/transport/handshaker.h +4 -5
  807. data/src/core/lib/transport/handshaker_factory.h +2 -3
  808. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  809. data/src/core/lib/transport/handshaker_registry.h +2 -4
  810. data/src/core/lib/transport/http_connect_handshaker.cc +20 -20
  811. data/src/core/lib/transport/metadata_batch.cc +5 -0
  812. data/src/core/lib/transport/metadata_batch.h +52 -7
  813. data/src/core/lib/transport/parsed_metadata.h +0 -1
  814. data/src/core/lib/transport/tcp_connect_handshaker.cc +14 -20
  815. data/src/core/lib/transport/transport.cc +0 -3
  816. data/src/core/lib/transport/transport.h +20 -21
  817. data/src/core/lib/transport/transport_fwd.h +20 -0
  818. data/src/core/lib/transport/transport_impl.h +1 -0
  819. data/src/core/lib/transport/transport_op_string.cc +9 -9
  820. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  821. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  822. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +15 -8
  823. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  824. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  825. data/src/core/tsi/fake_transport_security.cc +66 -31
  826. data/src/core/tsi/fake_transport_security.h +6 -0
  827. data/src/core/tsi/local_transport_security.cc +9 -5
  828. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  829. data/src/core/tsi/ssl_transport_security.cc +48 -24
  830. data/src/core/tsi/transport_security.cc +18 -6
  831. data/src/core/tsi/transport_security.h +2 -1
  832. data/src/core/tsi/transport_security_grpc.cc +3 -2
  833. data/src/core/tsi/transport_security_grpc.h +5 -2
  834. data/src/core/tsi/transport_security_interface.h +17 -5
  835. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  836. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  837. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  838. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  839. data/src/ruby/ext/grpc/extconf.rb +51 -18
  840. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  841. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  842. data/src/ruby/lib/grpc/errors.rb +1 -1
  843. data/src/ruby/lib/grpc/version.rb +1 -1
  844. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  845. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  846. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  847. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  848. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  849. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  850. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  851. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  852. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  853. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  854. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  855. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  856. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  857. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  858. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  859. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  860. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  861. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  862. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  863. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  864. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  865. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  866. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  867. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  868. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  869. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  870. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  871. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  872. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  873. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  874. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  875. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
  876. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  877. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  878. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  879. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  880. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  881. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  882. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  883. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  884. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  885. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  886. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  887. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  888. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  889. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  890. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  891. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  892. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  893. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  894. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  895. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  896. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  897. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  898. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  899. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  900. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  901. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  902. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  903. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  904. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  905. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  906. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  907. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  908. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  909. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  910. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  911. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  912. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  913. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  914. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  915. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  916. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  917. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  918. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  919. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  920. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  921. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  922. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  923. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  924. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  925. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  926. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  927. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  928. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  929. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  930. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  931. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  932. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  933. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  934. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  935. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  936. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  937. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  938. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  939. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  940. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  941. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  942. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  943. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  944. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  945. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  946. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  947. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  948. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  949. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  950. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  951. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  952. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  953. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  954. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  955. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  956. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  957. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  958. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  959. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  960. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  961. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  962. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  963. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  964. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  965. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  966. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  967. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  968. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  969. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  970. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  971. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  972. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  973. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  974. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  975. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  976. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  977. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  978. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  979. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  980. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  981. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  982. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  983. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  984. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  985. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  986. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  987. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  988. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  989. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  990. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  991. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  992. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  993. data/third_party/upb/upb/arena.c +277 -0
  994. data/third_party/upb/upb/arena.h +225 -0
  995. data/third_party/upb/upb/array.c +114 -0
  996. data/third_party/upb/upb/array.h +83 -0
  997. data/third_party/upb/upb/collections.h +36 -0
  998. data/third_party/upb/upb/decode.c +161 -65
  999. data/third_party/upb/upb/decode.h +1 -0
  1000. data/third_party/upb/upb/decode_fast.c +1 -1
  1001. data/third_party/upb/upb/def.c +10 -2
  1002. data/third_party/upb/upb/def.h +8 -1
  1003. data/third_party/upb/upb/def.hpp +7 -4
  1004. data/third_party/upb/upb/encode.c +29 -20
  1005. data/third_party/upb/upb/encode.h +16 -6
  1006. data/third_party/upb/upb/extension_registry.c +93 -0
  1007. data/third_party/upb/upb/extension_registry.h +84 -0
  1008. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  1009. data/third_party/upb/upb/internal/table.h +385 -0
  1010. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  1011. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  1012. data/third_party/upb/upb/json_decode.c +1512 -0
  1013. data/third_party/upb/upb/json_decode.h +47 -0
  1014. data/third_party/upb/upb/json_encode.c +7 -3
  1015. data/third_party/upb/upb/json_encode.h +6 -3
  1016. data/third_party/upb/upb/map.c +108 -0
  1017. data/third_party/upb/upb/map.h +117 -0
  1018. data/third_party/upb/upb/message_value.h +66 -0
  1019. data/third_party/upb/upb/mini_table.c +1147 -0
  1020. data/third_party/upb/upb/mini_table.h +189 -0
  1021. data/third_party/upb/upb/mini_table.hpp +112 -0
  1022. data/third_party/upb/upb/msg.c +2 -62
  1023. data/third_party/upb/upb/msg.h +2 -45
  1024. data/third_party/upb/upb/msg_internal.h +28 -22
  1025. data/third_party/upb/upb/port_def.inc +2 -1
  1026. data/third_party/upb/upb/port_undef.inc +1 -0
  1027. data/third_party/upb/upb/reflection.c +2 -159
  1028. data/third_party/upb/upb/reflection.h +2 -112
  1029. data/third_party/upb/upb/status.c +86 -0
  1030. data/third_party/upb/upb/status.h +66 -0
  1031. data/third_party/upb/upb/table.c +2 -2
  1032. data/third_party/upb/upb/table_internal.h +3 -352
  1033. data/third_party/upb/upb/text_encode.c +3 -2
  1034. data/third_party/upb/upb/upb.c +4 -290
  1035. data/third_party/upb/upb/upb.h +7 -196
  1036. metadata +113 -37
  1037. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  1038. data/src/core/lib/event_engine/event_engine.cc +0 -62
  1039. data/src/core/lib/event_engine/iomgr_engine.cc +0 -206
  1040. data/src/core/lib/iomgr/error_internal.h +0 -66
  1041. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  1042. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  1043. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  1044. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  1045. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  1046. data/src/core/lib/promise/detail/switch.h +0 -1455
  1047. data/src/core/lib/slice/slice_split.cc +0 -103
  1048. data/src/core/lib/slice/slice_split.h +0 -36
  1049. data/src/core/lib/transport/byte_stream.cc +0 -165
  1050. data/src/core/lib/transport/byte_stream.h +0 -170
  1051. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
  1052. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
  1053. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -19,10 +19,11 @@
19
19
 
20
20
  #include <stdlib.h>
21
21
 
22
+ #include <algorithm> // IWYU pragma: keep
22
23
  #include <memory>
23
24
  #include <utility>
24
25
 
25
- #include "absl/container/inlined_vector.h"
26
+ #include "src/core/lib/gpr/useful.h"
26
27
 
27
28
  namespace grpc_core {
28
29
 
@@ -58,33 +59,32 @@ class AVL {
58
59
 
59
60
  bool SameIdentity(const AVL& avl) const { return root_ == avl.root_; }
60
61
 
61
- bool operator==(const AVL& other) const {
62
- Iterator a(root_);
63
- Iterator b(other.root_);
62
+ friend int QsortCompare(const AVL& left, const AVL& right) {
63
+ if (left.root_.get() == right.root_.get()) return 0;
64
+ Iterator a(left.root_);
65
+ Iterator b(right.root_);
64
66
  for (;;) {
65
67
  Node* p = a.current();
66
68
  Node* q = b.current();
67
- if (p == nullptr) return q == nullptr;
68
- if (q == nullptr) return false;
69
- if (p->kv != q->kv) return false;
69
+ if (p != q) {
70
+ if (p == nullptr) return -1;
71
+ if (q == nullptr) return 1;
72
+ const int kv = QsortCompare(p->kv, q->kv);
73
+ if (kv != 0) return kv;
74
+ } else if (p == nullptr) {
75
+ return 0;
76
+ }
70
77
  a.MoveNext();
71
78
  b.MoveNext();
72
79
  }
73
80
  }
74
81
 
82
+ bool operator==(const AVL& other) const {
83
+ return QsortCompare(*this, other) == 0;
84
+ }
85
+
75
86
  bool operator<(const AVL& other) const {
76
- Iterator a(root_);
77
- Iterator b(other.root_);
78
- for (;;) {
79
- Node* p = a.current();
80
- Node* q = b.current();
81
- if (p == nullptr) return q != nullptr;
82
- if (q == nullptr) return false;
83
- if (p->kv < q->kv) return true;
84
- if (p->kv != q->kv) return false;
85
- a.MoveNext();
86
- b.MoveNext();
87
- }
87
+ return QsortCompare(*this, other) < 0;
88
88
  }
89
89
 
90
90
  private:
@@ -104,30 +104,52 @@ class AVL {
104
104
  };
105
105
  NodePtr root_;
106
106
 
107
+ class IteratorStack {
108
+ public:
109
+ void Push(Node* n) {
110
+ nodes_[depth_] = n;
111
+ ++depth_;
112
+ }
113
+
114
+ Node* Pop() {
115
+ --depth_;
116
+ return nodes_[depth_];
117
+ }
118
+
119
+ Node* Back() const { return nodes_[depth_ - 1]; }
120
+
121
+ bool Empty() const { return depth_ == 0; }
122
+
123
+ private:
124
+ size_t depth_{0};
125
+ // 32 is the maximum depth we can accept, and corresponds to ~4billion nodes
126
+ // - which ought to suffice our use cases.
127
+ Node* nodes_[32];
128
+ };
129
+
107
130
  class Iterator {
108
131
  public:
109
132
  explicit Iterator(const NodePtr& root) {
110
133
  auto* n = root.get();
111
134
  while (n != nullptr) {
112
- stack_.push_back(n);
135
+ stack_.Push(n);
113
136
  n = n->left.get();
114
137
  }
115
138
  }
116
- Node* current() const { return stack_.empty() ? nullptr : stack_.back(); }
139
+ Node* current() const { return stack_.Empty() ? nullptr : stack_.Back(); }
117
140
  void MoveNext() {
118
- auto* n = stack_.back();
119
- stack_.pop_back();
141
+ auto* n = stack_.Pop();
120
142
  if (n->right != nullptr) {
121
143
  n = n->right.get();
122
144
  while (n != nullptr) {
123
- stack_.push_back(n);
145
+ stack_.Push(n);
124
146
  n = n->left.get();
125
147
  }
126
148
  }
127
149
  }
128
150
 
129
151
  private:
130
- absl::InlinedVector<Node*, 8> stack_;
152
+ IteratorStack stack_;
131
153
  };
132
154
 
133
155
  explicit AVL(NodePtr root) : root_(std::move(root)) {}
@@ -22,7 +22,7 @@
22
22
 
23
23
  #include <algorithm>
24
24
 
25
- #include "src/core/lib/gpr/useful.h"
25
+ #include "src/core/lib/iomgr/exec_ctx.h"
26
26
 
27
27
  namespace grpc_core {
28
28
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  #include "absl/random/random.h"
25
25
 
26
- #include "src/core/lib/iomgr/exec_ctx.h"
26
+ #include "src/core/lib/gprpp/time.h"
27
27
 
28
28
  namespace grpc_core {
29
29
 
@@ -29,7 +29,7 @@
29
29
  #include <grpc/support/atm.h>
30
30
 
31
31
  #include "src/core/lib/iomgr/error.h"
32
- #include "src/core/lib/transport/byte_stream.h"
32
+ #include "src/core/lib/slice/slice_buffer.h"
33
33
  #include "src/core/lib/transport/metadata_batch.h"
34
34
  #include "src/core/lib/transport/transport.h"
35
35
 
@@ -50,7 +50,7 @@ class CallTracer {
50
50
  // Please refer to `grpc_transport_stream_op_batch_payload` for details on
51
51
  // arguments.
52
52
  virtual void RecordSendInitialMetadata(
53
- grpc_metadata_batch* send_initial_metadata, uint32_t flags) = 0;
53
+ grpc_metadata_batch* send_initial_metadata) = 0;
54
54
  // TODO(yashkt): We are using gpr_atm here instead of absl::string_view
55
55
  // since that's what the transport API uses, and performing an atomic load
56
56
  // is unnecessary if the census tracer does not need it at present. Fix this
@@ -58,13 +58,13 @@ class CallTracer {
58
58
  virtual void RecordOnDoneSendInitialMetadata(gpr_atm* peer_string) = 0;
59
59
  virtual void RecordSendTrailingMetadata(
60
60
  grpc_metadata_batch* send_trailing_metadata) = 0;
61
- virtual void RecordSendMessage(const ByteStream& send_message) = 0;
61
+ virtual void RecordSendMessage(const SliceBuffer& send_message) = 0;
62
62
  // The `RecordReceivedInitialMetadata()` and `RecordReceivedMessage()`
63
63
  // methods should only be invoked when the metadata/message was
64
64
  // successfully received, i.e., without any error.
65
65
  virtual void RecordReceivedInitialMetadata(
66
66
  grpc_metadata_batch* recv_initial_metadata, uint32_t flags) = 0;
67
- virtual void RecordReceivedMessage(const ByteStream& recv_message) = 0;
67
+ virtual void RecordReceivedMessage(const SliceBuffer& recv_message) = 0;
68
68
  // If the call was cancelled before the recv_trailing_metadata op
69
69
  // was started, recv_trailing_metadata and transport_stream_stats
70
70
  // will be null.
@@ -41,30 +41,65 @@
41
41
  #include "src/core/lib/gpr/useful.h"
42
42
  #include "src/core/lib/gprpp/match.h"
43
43
 
44
- namespace {
44
+ namespace grpc_core {
45
45
 
46
- int PointerCompare(void* a_ptr, const grpc_arg_pointer_vtable* a_vtable,
47
- void* b_ptr, const grpc_arg_pointer_vtable* b_vtable) {
48
- int c = grpc_core::QsortCompare(a_ptr, b_ptr);
49
- if (c == 0) return 0;
50
- c = grpc_core::QsortCompare(a_vtable, b_vtable);
51
- if (c != 0) return c;
52
- return a_vtable->cmp(a_ptr, b_ptr);
46
+ ChannelArgs::Pointer::Pointer(void* p, const grpc_arg_pointer_vtable* vtable)
47
+ : p_(p), vtable_(vtable == nullptr ? EmptyVTable() : vtable) {}
48
+
49
+ ChannelArgs::Pointer::Pointer(const Pointer& other)
50
+ : p_(other.vtable_->copy(other.p_)), vtable_(other.vtable_) {}
51
+
52
+ ChannelArgs::Pointer::Pointer(Pointer&& other) noexcept
53
+ : p_(other.p_), vtable_(other.vtable_) {
54
+ other.p_ = nullptr;
55
+ other.vtable_ = EmptyVTable();
53
56
  }
54
57
 
55
- } // namespace
58
+ const grpc_arg_pointer_vtable* ChannelArgs::Pointer::EmptyVTable() {
59
+ static const grpc_arg_pointer_vtable vtable = {
60
+ // copy
61
+ [](void* p) { return p; },
62
+ // destroy
63
+ [](void*) {},
64
+ // cmp
65
+ [](void* p1, void* p2) -> int { return QsortCompare(p1, p2); },
66
+ };
67
+ return &vtable;
68
+ }
56
69
 
57
- namespace grpc_core {
70
+ ChannelArgs::ChannelArgs() = default;
71
+ ChannelArgs::~ChannelArgs() = default;
72
+ ChannelArgs::ChannelArgs(const ChannelArgs& other) = default;
73
+ ChannelArgs& ChannelArgs::operator=(const ChannelArgs& other) = default;
74
+ ChannelArgs::ChannelArgs(ChannelArgs&& other) noexcept = default;
75
+ ChannelArgs& ChannelArgs::operator=(ChannelArgs&& other) noexcept = default;
58
76
 
59
- bool ChannelArgs::Pointer::operator==(const Pointer& rhs) const {
60
- return PointerCompare(p_, vtable_, rhs.p_, rhs.vtable_) == 0;
77
+ const ChannelArgs::Value* ChannelArgs::Get(absl::string_view name) const {
78
+ return args_.Lookup(name);
61
79
  }
62
80
 
63
- bool ChannelArgs::Pointer::operator<(const Pointer& rhs) const {
64
- return PointerCompare(p_, vtable_, rhs.p_, rhs.vtable_) < 0;
81
+ bool ChannelArgs::Contains(absl::string_view name) const {
82
+ return Get(name) != nullptr;
65
83
  }
66
84
 
67
- ChannelArgs::ChannelArgs() = default;
85
+ bool ChannelArgs::operator<(const ChannelArgs& other) const {
86
+ return args_ < other.args_;
87
+ }
88
+
89
+ bool ChannelArgs::operator==(const ChannelArgs& other) const {
90
+ return args_ == other.args_;
91
+ }
92
+
93
+ bool ChannelArgs::operator!=(const ChannelArgs& other) const {
94
+ return !(*this == other);
95
+ }
96
+
97
+ bool ChannelArgs::WantMinimalStack() const {
98
+ return GetBool(GRPC_ARG_MINIMAL_STACK).value_or(false);
99
+ }
100
+
101
+ ChannelArgs::ChannelArgs(AVL<std::string, Value> args)
102
+ : args_(std::move(args)) {}
68
103
 
69
104
  ChannelArgs ChannelArgs::Set(grpc_arg arg) const {
70
105
  switch (arg.type) {
@@ -91,7 +126,7 @@ ChannelArgs ChannelArgs::FromC(const grpc_channel_args* args) {
91
126
  return result;
92
127
  }
93
128
 
94
- const grpc_channel_args* ChannelArgs::ToC() const {
129
+ ChannelArgs::CPtr ChannelArgs::ToC() const {
95
130
  std::vector<grpc_arg> c_args;
96
131
  args_.ForEach([&c_args](const std::string& key, const Value& value) {
97
132
  char* name = const_cast<char*>(key.c_str());
@@ -107,7 +142,16 @@ const grpc_channel_args* ChannelArgs::ToC() const {
107
142
  p.c_vtable());
108
143
  }));
109
144
  });
110
- return grpc_channel_args_copy_and_add(nullptr, c_args.data(), c_args.size());
145
+ return CPtr(static_cast<const grpc_channel_args*>(
146
+ grpc_channel_args_copy_and_add(nullptr, c_args.data(), c_args.size())));
147
+ }
148
+
149
+ ChannelArgs ChannelArgs::Set(absl::string_view name, Pointer value) const {
150
+ return Set(name, Value(std::move(value)));
151
+ }
152
+
153
+ ChannelArgs ChannelArgs::Set(absl::string_view name, int value) const {
154
+ return Set(name, Value(value));
111
155
  }
112
156
 
113
157
  ChannelArgs ChannelArgs::Set(absl::string_view key, Value value) const {
@@ -155,6 +199,13 @@ absl::optional<absl::string_view> ChannelArgs::GetString(
155
199
  return absl::get<std::string>(*v);
156
200
  }
157
201
 
202
+ absl::optional<std::string> ChannelArgs::GetOwnedString(
203
+ absl::string_view name) const {
204
+ absl::optional<absl::string_view> v = GetString(name);
205
+ if (!v.has_value()) return absl::nullopt;
206
+ return std::string(*v);
207
+ }
208
+
158
209
  void* ChannelArgs::GetVoidPointer(absl::string_view name) const {
159
210
  auto* v = Get(name);
160
211
  if (v == nullptr) return nullptr;
@@ -199,6 +250,22 @@ std::string ChannelArgs::ToString() const {
199
250
  return absl::StrCat("{", absl::StrJoin(arg_strings, ", "), "}");
200
251
  }
201
252
 
253
+ ChannelArgs ChannelArgs::UnionWith(ChannelArgs other) const {
254
+ args_.ForEach([&other](const std::string& key, const Value& value) {
255
+ other.args_ = other.args_.Add(key, value);
256
+ });
257
+ return other;
258
+ }
259
+
260
+ void ChannelArgs::ChannelArgsDeleter::operator()(
261
+ const grpc_channel_args* p) const {
262
+ grpc_channel_args_destroy(p);
263
+ }
264
+
265
+ std::ostream& operator<<(std::ostream& out, const ChannelArgs& args) {
266
+ return out << args.ToString();
267
+ }
268
+
202
269
  } // namespace grpc_core
203
270
 
204
271
  static grpc_arg copy_arg(const grpc_arg* src) {
@@ -319,8 +386,9 @@ static int cmp_arg(const grpc_arg* a, const grpc_arg* b) {
319
386
  case GRPC_ARG_INTEGER:
320
387
  return grpc_core::QsortCompare(a->value.integer, b->value.integer);
321
388
  case GRPC_ARG_POINTER:
322
- return PointerCompare(a->value.pointer.p, a->value.pointer.vtable,
323
- b->value.pointer.p, b->value.pointer.vtable);
389
+ return grpc_core::channel_args_detail::PointerCompare(
390
+ a->value.pointer.p, a->value.pointer.vtable, b->value.pointer.p,
391
+ b->value.pointer.vtable);
324
392
  }
325
393
  GPR_UNREACHABLE_CODE(return 0);
326
394
  }
@@ -540,6 +608,7 @@ ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src) {
540
608
  }
541
609
  return output;
542
610
  }
611
+
543
612
  } // namespace grpc_core
544
613
 
545
614
  namespace {
@@ -23,8 +23,10 @@
23
23
 
24
24
  #include <stddef.h>
25
25
 
26
+ #include <algorithm> // IWYU pragma: keep
27
+ #include <iosfwd>
28
+ #include <memory>
26
29
  #include <string>
27
- #include <type_traits>
28
30
  #include <utility>
29
31
 
30
32
  #include "absl/meta/type_traits.h"
@@ -36,6 +38,7 @@
36
38
 
37
39
  #include "src/core/lib/avl/avl.h"
38
40
  #include "src/core/lib/gpr/useful.h"
41
+ #include "src/core/lib/gprpp/debug_location.h"
39
42
  #include "src/core/lib/gprpp/dual_ref_counted.h"
40
43
  #include "src/core/lib/gprpp/ref_counted.h"
41
44
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -58,23 +61,52 @@ namespace grpc_core {
58
61
  template <typename T, typename Ignored = void /* for SFINAE */>
59
62
  struct ChannelArgTypeTraits;
60
63
 
64
+ namespace channel_args_detail {
65
+ inline int PointerCompare(void* a_ptr, const grpc_arg_pointer_vtable* a_vtable,
66
+ void* b_ptr,
67
+ const grpc_arg_pointer_vtable* b_vtable) {
68
+ int c = QsortCompare(a_ptr, b_ptr);
69
+ if (c == 0) return 0;
70
+ c = QsortCompare(a_vtable, b_vtable);
71
+ if (c != 0) return c;
72
+ return a_vtable->cmp(a_ptr, b_ptr);
73
+ }
74
+
75
+ // The type returned by calling Ref() on a T - used to determine the basest-type
76
+ // before the crt refcount base class.
77
+ template <typename T>
78
+ using RefType = absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
79
+ } // namespace channel_args_detail
80
+
61
81
  // Specialization for ref-counted pointers.
62
82
  // Types should expose:
63
83
  // static int ChannelArgsCompare(const T* a, const T* b);
64
84
  template <typename T>
65
85
  struct ChannelArgTypeTraits<
66
- T,
67
- absl::enable_if_t<
68
- std::is_base_of<RefCounted<T>, T>::value ||
69
- std::is_base_of<RefCounted<T, NonPolymorphicRefCount>, T>::value ||
70
- std::is_base_of<DualRefCounted<T>, T>::value,
71
- void>> {
86
+ T, absl::enable_if_t<
87
+ std::is_base_of<RefCounted<channel_args_detail::RefType<T>>,
88
+ channel_args_detail::RefType<T>>::value ||
89
+ std::is_base_of<RefCounted<channel_args_detail::RefType<T>,
90
+ NonPolymorphicRefCount>,
91
+ channel_args_detail::RefType<T>>::value ||
92
+ std::is_base_of<DualRefCounted<channel_args_detail::RefType<T>>,
93
+ channel_args_detail::RefType<T>>::value,
94
+ void>> {
72
95
  static const grpc_arg_pointer_vtable* VTable() {
73
96
  static const grpc_arg_pointer_vtable tbl = {
74
97
  // copy
75
- [](void* p) -> void* { return static_cast<T*>(p)->Ref().release(); },
98
+ [](void* p) -> void* {
99
+ return p == nullptr ? nullptr
100
+ : static_cast<T*>(p)
101
+ ->Ref(DEBUG_LOCATION, "ChannelArgs copy")
102
+ .release();
103
+ },
76
104
  // destroy
77
- [](void* p) { static_cast<T*>(p)->Unref(); },
105
+ [](void* p) {
106
+ if (p != nullptr) {
107
+ static_cast<T*>(p)->Unref(DEBUG_LOCATION, "ChannelArgs destroy");
108
+ }
109
+ },
78
110
  // compare
79
111
  [](void* p1, void* p2) {
80
112
  return T::ChannelArgsCompare(static_cast<const T*>(p1),
@@ -111,63 +143,77 @@ class ChannelArgs {
111
143
  public:
112
144
  class Pointer {
113
145
  public:
114
- Pointer(void* p, const grpc_arg_pointer_vtable* vtable)
115
- : p_(p), vtable_(vtable == nullptr ? EmptyVTable() : vtable) {}
146
+ Pointer(void* p, const grpc_arg_pointer_vtable* vtable);
116
147
  ~Pointer() { vtable_->destroy(p_); }
117
148
 
118
- Pointer(const Pointer& other)
119
- : p_(other.vtable_->copy(other.p_)), vtable_(other.vtable_) {}
149
+ Pointer(const Pointer& other);
120
150
  Pointer& operator=(Pointer other) {
121
151
  std::swap(p_, other.p_);
122
152
  std::swap(vtable_, other.vtable_);
123
153
  return *this;
124
154
  }
125
- Pointer(Pointer&& other) noexcept : p_(other.p_), vtable_(other.vtable_) {
126
- other.p_ = nullptr;
127
- other.vtable_ = EmptyVTable();
128
- }
155
+ Pointer(Pointer&& other) noexcept;
129
156
  Pointer& operator=(Pointer&& other) noexcept {
130
157
  std::swap(p_, other.p_);
131
158
  std::swap(vtable_, other.vtable_);
132
159
  return *this;
133
160
  }
134
161
 
135
- bool operator==(const Pointer& rhs) const;
136
- bool operator<(const Pointer& rhs) const;
137
- bool operator!=(const Pointer& rhs) const { return !(*this == rhs); }
162
+ friend int QsortCompare(const Pointer& a, const Pointer& b) {
163
+ return channel_args_detail::PointerCompare(a.p_, a.vtable_, b.p_,
164
+ b.vtable_);
165
+ }
166
+
167
+ bool operator==(const Pointer& rhs) const {
168
+ return QsortCompare(*this, rhs) == 0;
169
+ }
170
+ bool operator<(const Pointer& rhs) const {
171
+ return QsortCompare(*this, rhs) < 0;
172
+ }
173
+ bool operator!=(const Pointer& rhs) const {
174
+ return QsortCompare(*this, rhs) != 0;
175
+ }
138
176
 
139
177
  void* c_pointer() const { return p_; }
140
-
141
178
  const grpc_arg_pointer_vtable* c_vtable() const { return vtable_; }
142
179
 
143
180
  private:
144
- static const grpc_arg_pointer_vtable* EmptyVTable() {
145
- static const grpc_arg_pointer_vtable vtable = {
146
- // copy
147
- [](void* p) { return p; },
148
- // destroy
149
- [](void*) {},
150
- // cmp
151
- [](void* p1, void* p2) -> int { return QsortCompare(p1, p2); },
152
- };
153
- return &vtable;
154
- }
181
+ static const grpc_arg_pointer_vtable* EmptyVTable();
155
182
 
156
183
  void* p_;
157
184
  const grpc_arg_pointer_vtable* vtable_;
158
185
  };
186
+
159
187
  using Value = absl::variant<int, std::string, Pointer>;
160
188
 
189
+ struct ChannelArgsDeleter {
190
+ void operator()(const grpc_channel_args* p) const;
191
+ };
192
+ using CPtr =
193
+ std::unique_ptr<const grpc_channel_args, ChannelArgs::ChannelArgsDeleter>;
194
+
161
195
  ChannelArgs();
196
+ ~ChannelArgs();
197
+ ChannelArgs(const ChannelArgs&);
198
+ ChannelArgs& operator=(const ChannelArgs&);
199
+ ChannelArgs(ChannelArgs&&) noexcept;
200
+ ChannelArgs& operator=(ChannelArgs&&) noexcept;
162
201
 
163
202
  static ChannelArgs FromC(const grpc_channel_args* args);
164
- // Construct a new grpc_channel_args struct which the caller will own.
165
- // It should be destroyed with grpc_channel_args_destroy.
166
- const grpc_channel_args* ToC() const;
203
+ static ChannelArgs FromC(const grpc_channel_args& args) {
204
+ return FromC(&args);
205
+ }
206
+ // Construct a new grpc_channel_args struct.
207
+ CPtr ToC() const;
167
208
 
168
- const Value* Get(absl::string_view name) const { return args_.Lookup(name); }
209
+ // Returns the union of this channel args with other.
210
+ // If a key is present in both, the value from this is used.
211
+ GRPC_MUST_USE_RESULT ChannelArgs UnionWith(ChannelArgs other) const;
212
+
213
+ const Value* Get(absl::string_view name) const;
169
214
  GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
170
- Value value) const;
215
+ Pointer value) const;
216
+ GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name, int value) const;
171
217
  GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
172
218
  absl::string_view value) const;
173
219
  GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
@@ -186,30 +232,28 @@ class ChannelArgs {
186
232
  }
187
233
  template <typename T>
188
234
  GRPC_MUST_USE_RESULT auto Set(absl::string_view name,
189
- const RefCountedPtr<T>& value) const
235
+ RefCountedPtr<T> value) const
190
236
  -> absl::enable_if_t<
191
- std::is_same<
192
- const grpc_arg_pointer_vtable*,
193
- decltype(ChannelArgTypeTraits<absl::remove_cvref_t<
194
- decltype(*value->Ref())>>::VTable())>::value,
237
+ std::is_same<const grpc_arg_pointer_vtable*,
238
+ decltype(ChannelArgTypeTraits<
239
+ absl::remove_cvref_t<T>>::VTable())>::value,
195
240
  ChannelArgs> {
196
- auto store_value = value->Ref();
197
241
  return Set(
198
- name,
199
- Pointer(store_value.release(),
200
- ChannelArgTypeTraits<
201
- absl::remove_cvref_t<decltype(*store_value)>>::VTable()));
242
+ name, Pointer(value.release(),
243
+ ChannelArgTypeTraits<absl::remove_cvref_t<T>>::VTable()));
202
244
  }
203
245
  template <typename T>
204
- GRPC_MUST_USE_RESULT ChannelArgs SetIfUnset(absl::string_view name, T value) {
246
+ GRPC_MUST_USE_RESULT ChannelArgs SetIfUnset(absl::string_view name,
247
+ T value) const {
205
248
  if (Contains(name)) return *this;
206
249
  return Set(name, std::move(value));
207
250
  }
208
251
  GRPC_MUST_USE_RESULT ChannelArgs Remove(absl::string_view name) const;
209
- bool Contains(absl::string_view name) const { return Get(name) != nullptr; }
252
+ bool Contains(absl::string_view name) const;
210
253
 
211
254
  absl::optional<int> GetInt(absl::string_view name) const;
212
255
  absl::optional<absl::string_view> GetString(absl::string_view name) const;
256
+ absl::optional<std::string> GetOwnedString(absl::string_view name) const;
213
257
  void* GetVoidPointer(absl::string_view name) const;
214
258
  template <typename T>
215
259
  T* GetPointer(absl::string_view name) const {
@@ -233,35 +277,43 @@ class ChannelArgs {
233
277
  return Set(T::ChannelArgName(), std::move(p));
234
278
  }
235
279
  template <typename T>
236
- T* GetObject() {
280
+ T* GetObject() const {
237
281
  return GetPointer<T>(T::ChannelArgName());
238
282
  }
239
283
  template <typename T>
240
- RefCountedPtr<T> GetObjectRef() {
284
+ RefCountedPtr<T> GetObjectRef() const {
241
285
  auto* p = GetObject<T>();
242
286
  if (p == nullptr) return nullptr;
243
- return p->Ref();
287
+ return p->Ref(DEBUG_LOCATION, "ChannelArgs GetObjectRef()");
244
288
  }
245
-
246
- bool operator<(const ChannelArgs& other) const { return args_ < other.args_; }
247
- bool operator==(const ChannelArgs& other) const {
248
- return args_ == other.args_;
289
+ template <typename T>
290
+ RefCountedPtr<T> GetObjectRef(const DebugLocation& location,
291
+ const char* reason) const {
292
+ auto* p = GetObject<T>();
293
+ if (p == nullptr) return nullptr;
294
+ return p->Ref(location, reason);
249
295
  }
250
296
 
251
- // Helpers for commonly accessed things
297
+ bool operator!=(const ChannelArgs& other) const;
298
+ bool operator<(const ChannelArgs& other) const;
299
+ bool operator==(const ChannelArgs& other) const;
252
300
 
253
- bool WantMinimalStack() const {
254
- return GetBool(GRPC_ARG_MINIMAL_STACK).value_or(false);
255
- }
301
+ // Helpers for commonly accessed things
256
302
 
303
+ bool WantMinimalStack() const;
257
304
  std::string ToString() const;
258
305
 
259
306
  private:
260
- explicit ChannelArgs(AVL<std::string, Value> args) : args_(std::move(args)) {}
307
+ explicit ChannelArgs(AVL<std::string, Value> args);
308
+
309
+ GRPC_MUST_USE_RESULT ChannelArgs Set(absl::string_view name,
310
+ Value value) const;
261
311
 
262
312
  AVL<std::string, Value> args_;
263
313
  };
264
314
 
315
+ std::ostream& operator<<(std::ostream& out, const ChannelArgs& args);
316
+
265
317
  } // namespace grpc_core
266
318
 
267
319
  /** Copy the arguments in \a src into a new instance */
@@ -364,7 +416,7 @@ ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src);
364
416
  // Takes ownership of the old_args
365
417
  typedef grpc_core::ChannelArgs (
366
418
  *grpc_channel_args_client_channel_creation_mutator)(
367
- const char* target, grpc_core::ChannelArgs old_args,
419
+ const char* target, const grpc_core::ChannelArgs& old_args,
368
420
  grpc_channel_stack_type type);
369
421
 
370
422
  // Should be called only once globaly before grpc is init'ed.
@@ -16,6 +16,7 @@
16
16
 
17
17
  #include "src/core/lib/channel/channel_args_preconditioning.h"
18
18
 
19
+ #include <algorithm>
19
20
  #include <utility>
20
21
 
21
22
  namespace grpc_core {
@@ -0,0 +1,26 @@
1
+ // Copyright 2022 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
16
+ #define GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H
17
+
18
+ typedef struct grpc_channel_stack grpc_channel_stack;
19
+ typedef struct grpc_channel_filter grpc_channel_filter;
20
+
21
+ typedef struct grpc_channel_element grpc_channel_element;
22
+ typedef struct grpc_call_element grpc_call_element;
23
+
24
+ typedef struct grpc_call_stack grpc_call_stack;
25
+
26
+ #endif // GRPC_CORE_LIB_CHANNEL_CHANNEL_FWD_H