grpc 1.48.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 (715) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +104 -41
  3. data/include/grpc/event_engine/event_engine.h +19 -16
  4. data/include/grpc/impl/codegen/grpc_types.h +3 -8
  5. data/include/grpc/impl/codegen/port_platform.h +0 -8
  6. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
  7. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  8. data/src/core/ext/filters/client_channel/client_channel.cc +117 -200
  9. data/src/core/ext/filters/client_channel/client_channel.h +15 -8
  10. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  11. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  12. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  13. data/src/core/ext/filters/client_channel/config_selector.h +12 -4
  14. data/src/core/ext/filters/client_channel/connector.h +4 -5
  15. data/src/core/ext/filters/client_channel/http_proxy.cc +53 -65
  16. data/src/core/ext/filters/client_channel/http_proxy.h +12 -9
  17. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +14 -12
  18. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +6 -6
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +100 -124
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  24. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +169 -63
  26. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +25 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +15 -19
  28. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -78
  29. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +44 -44
  30. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -5
  31. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +65 -77
  32. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +15 -14
  33. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +19 -14
  34. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +60 -67
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +40 -49
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +81 -97
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +53 -61
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +171 -102
  39. data/src/core/ext/filters/client_channel/proxy_mapper.h +13 -14
  40. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +19 -16
  41. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +170 -99
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  46. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -15
  47. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  51. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +5 -6
  52. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -13
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +162 -165
  54. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +37 -30
  55. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  56. data/src/core/ext/filters/client_channel/retry_filter.cc +0 -7
  57. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  58. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  59. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
  60. data/src/core/ext/filters/client_channel/subchannel.cc +49 -89
  61. data/src/core/ext/filters/client_channel/subchannel.h +8 -8
  62. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  63. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  64. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +3 -4
  66. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
  67. data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -3
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -1
  70. data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
  71. data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +2 -3
  73. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  74. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  75. data/src/core/ext/filters/http/client_authority_filter.h +1 -1
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -3
  77. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  78. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  79. data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +35 -62
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +62 -89
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  87. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +130 -165
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +67 -2
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  91. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  92. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +25 -8
  93. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  94. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  95. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  96. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -10
  97. data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
  98. data/src/core/ext/transport/inproc/inproc_transport.cc +40 -74
  99. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  100. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  101. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  102. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  103. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  104. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  105. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  106. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  107. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  108. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  109. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  110. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  111. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  112. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  113. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  114. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  115. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  116. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  117. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  118. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  119. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  120. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  121. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  122. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  123. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  124. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  125. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  126. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  127. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  128. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  129. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  130. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  131. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  132. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  133. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  134. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  135. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  136. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  137. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  138. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  139. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  166. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  167. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  168. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  169. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  170. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  171. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  172. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  173. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  174. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  175. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  176. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  177. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  178. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  179. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  180. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  181. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  182. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  184. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  185. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  186. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  187. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  188. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  189. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  190. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  191. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  192. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  193. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  194. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  195. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  196. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  197. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  198. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  199. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  200. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  201. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  202. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  203. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  204. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  205. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  206. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  207. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  208. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  209. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  210. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  211. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  220. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  221. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  222. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  223. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  224. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  225. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  226. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  227. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  228. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  229. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  230. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  231. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  232. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
  233. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
  234. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
  235. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  236. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  237. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  238. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  239. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  240. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  241. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  242. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  243. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  244. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  245. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  246. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  247. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  248. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  249. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  250. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  251. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  252. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  253. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  254. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  255. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  256. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  257. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  258. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  259. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  260. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  261. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  262. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  263. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  264. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  265. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  266. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  267. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  268. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  273. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  274. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  275. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  276. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  277. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  278. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  279. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  280. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  281. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  282. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  283. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  284. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  285. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  286. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  287. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  288. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  289. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  290. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  291. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  292. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  293. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  294. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  295. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  296. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  297. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  298. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  299. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  300. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  301. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  302. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  303. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  304. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  305. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  306. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  307. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  308. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  309. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  310. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  311. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  312. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  313. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  314. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  315. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  316. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  317. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  318. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  319. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  320. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  321. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  322. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  323. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  324. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  325. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  326. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  327. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  328. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  329. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  330. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  331. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  332. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  333. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  334. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  335. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  336. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  337. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  338. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  339. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  340. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  341. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  342. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  343. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  344. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  345. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  346. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  347. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  348. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  349. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  350. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  351. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  352. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  353. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  354. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  355. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  356. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  357. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  358. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  359. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  360. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  361. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  362. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  363. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  364. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  365. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  366. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  367. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  368. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  369. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  370. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  371. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  372. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  373. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  374. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  375. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  376. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  377. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  378. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  379. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  380. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  381. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  382. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  383. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  384. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  385. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  386. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  387. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  388. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  389. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  390. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  391. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  392. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  393. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  394. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  395. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  396. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  397. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  398. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  399. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  400. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  401. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  402. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  403. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  404. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  405. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  406. data/src/core/ext/xds/upb_utils.h +0 -21
  407. data/src/core/ext/xds/xds_api.cc +53 -86
  408. data/src/core/ext/xds/xds_api.h +19 -28
  409. data/src/core/ext/xds/xds_bootstrap.cc +39 -52
  410. data/src/core/ext/xds/xds_bootstrap.h +28 -8
  411. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  412. data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
  413. data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
  414. data/src/core/ext/xds/xds_client.cc +555 -1214
  415. data/src/core/ext/xds/xds_client.h +16 -44
  416. data/src/core/ext/xds/xds_client_grpc.cc +291 -0
  417. data/src/core/ext/xds/xds_client_grpc.h +102 -0
  418. data/src/core/ext/xds/xds_cluster.cc +92 -103
  419. data/src/core/ext/xds/xds_cluster.h +6 -5
  420. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +10 -14
  421. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
  422. data/src/core/ext/xds/xds_common_types.cc +134 -110
  423. data/src/core/ext/xds/xds_common_types.h +6 -7
  424. data/src/core/ext/xds/xds_endpoint.cc +80 -80
  425. data/src/core/ext/xds/xds_endpoint.h +4 -4
  426. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
  427. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  428. data/src/core/ext/xds/xds_http_filters.h +3 -3
  429. data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
  430. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  431. data/src/core/ext/xds/xds_lb_policy_registry.cc +17 -20
  432. data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
  433. data/src/core/ext/xds/xds_listener.cc +329 -299
  434. data/src/core/ext/xds/xds_listener.h +4 -4
  435. data/src/core/ext/xds/xds_resource_type.h +13 -2
  436. data/src/core/ext/xds/xds_route_config.cc +180 -177
  437. data/src/core/ext/xds/xds_route_config.h +31 -17
  438. data/src/core/ext/xds/xds_routing.cc +3 -6
  439. data/src/core/ext/xds/xds_routing.h +7 -9
  440. data/src/core/ext/xds/xds_server_config_fetcher.cc +76 -81
  441. data/src/core/ext/xds/xds_transport.h +86 -0
  442. data/src/core/ext/xds/xds_transport_grpc.cc +349 -0
  443. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  444. data/src/core/lib/address_utils/parse_address.cc +19 -17
  445. data/src/core/lib/address_utils/parse_address.h +8 -5
  446. data/src/core/lib/avl/avl.h +47 -25
  447. data/src/core/lib/channel/call_tracer.h +1 -1
  448. data/src/core/lib/channel/channel_args.cc +88 -19
  449. data/src/core/lib/channel/channel_args.h +113 -62
  450. data/src/core/lib/channel/channel_stack.cc +0 -1
  451. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  452. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  453. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
  454. data/src/core/lib/channel/channelz.cc +27 -37
  455. data/src/core/lib/channel/channelz.h +9 -0
  456. data/src/core/lib/channel/promise_based_filter.h +0 -1
  457. data/src/core/lib/config/core_configuration.h +48 -35
  458. data/src/core/lib/debug/stats.cc +12 -15
  459. data/src/core/lib/debug/stats.h +11 -3
  460. data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
  461. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
  462. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  463. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  464. data/src/core/lib/event_engine/executor/executor.h +38 -0
  465. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  466. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  467. data/src/core/lib/event_engine/forkable.cc +98 -0
  468. data/src/core/lib/event_engine/forkable.h +61 -0
  469. data/src/core/lib/event_engine/poller.h +54 -0
  470. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
  471. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
  472. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
  473. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
  474. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
  475. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
  476. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +46 -10
  477. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +17 -8
  478. data/src/core/lib/event_engine/promise.h +11 -2
  479. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  480. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.cc → thread_pool.cc} +49 -14
  481. data/src/core/lib/event_engine/{iomgr_engine/thread_pool.h → thread_pool.h} +21 -10
  482. data/src/core/lib/event_engine/utils.cc +49 -0
  483. data/src/core/lib/event_engine/utils.h +40 -0
  484. data/src/core/lib/event_engine/windows/iocp.cc +149 -0
  485. data/src/core/lib/event_engine/windows/iocp.h +68 -0
  486. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  487. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  488. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  489. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  490. data/src/core/lib/gpr/time.cc +11 -9
  491. data/src/core/lib/gpr/useful.h +29 -0
  492. data/src/core/lib/gprpp/bitset.h +3 -13
  493. data/src/core/lib/gprpp/debug_location.h +39 -7
  494. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  495. data/src/core/lib/gprpp/no_destruct.h +94 -0
  496. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -1
  497. data/src/core/lib/gprpp/status_helper.cc +1 -0
  498. data/src/core/lib/gprpp/table.h +0 -1
  499. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
  500. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
  501. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  502. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
  503. data/src/core/lib/http/httpcli.cc +12 -24
  504. data/src/core/lib/http/httpcli_security_connector.cc +11 -11
  505. data/src/core/lib/iomgr/call_combiner.cc +0 -26
  506. data/src/core/lib/iomgr/closure.h +0 -9
  507. data/src/core/lib/iomgr/combiner.cc +0 -20
  508. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  509. data/src/core/lib/iomgr/error.cc +0 -773
  510. data/src/core/lib/iomgr/error.h +0 -145
  511. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  512. data/src/core/lib/iomgr/ev_poll_posix.cc +17 -9
  513. data/src/core/lib/iomgr/exec_ctx.cc +0 -12
  514. data/src/core/lib/iomgr/executor.cc +0 -10
  515. data/src/core/lib/iomgr/executor.h +0 -3
  516. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  517. data/src/core/lib/iomgr/port.h +3 -0
  518. data/src/core/lib/iomgr/resolve_address.h +29 -6
  519. data/src/core/lib/iomgr/resolve_address_posix.cc +38 -8
  520. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  521. data/src/core/lib/iomgr/resolve_address_windows.cc +40 -10
  522. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  523. data/src/core/lib/iomgr/socket_windows.h +0 -2
  524. data/src/core/lib/iomgr/tcp_posix.cc +118 -6
  525. data/src/core/lib/iomgr/timer_generic.cc +6 -8
  526. data/src/core/lib/json/json.h +19 -22
  527. data/src/core/lib/json/json_args.h +34 -0
  528. data/src/core/lib/json/json_object_loader.cc +233 -0
  529. data/src/core/lib/json/json_object_loader.h +618 -0
  530. data/src/core/lib/json/json_reader.cc +86 -62
  531. data/src/core/lib/json/json_util.cc +8 -36
  532. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  533. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +15 -24
  534. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  535. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.cc +49 -72
  536. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy_registry.h +27 -27
  537. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
  538. data/src/core/lib/promise/activity.h +56 -8
  539. data/src/core/lib/promise/arena_promise.h +84 -81
  540. data/src/core/lib/promise/context.h +0 -1
  541. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  542. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  543. data/src/core/lib/promise/map.h +0 -1
  544. data/src/core/lib/promise/seq.h +25 -4
  545. data/src/core/lib/promise/sleep.cc +38 -42
  546. data/src/core/lib/promise/sleep.h +27 -24
  547. data/src/core/lib/promise/try_seq.h +26 -6
  548. data/src/core/lib/resolver/resolver.cc +0 -47
  549. data/src/core/lib/resolver/resolver.h +2 -12
  550. data/src/core/lib/resolver/resolver_factory.h +2 -3
  551. data/src/core/lib/resolver/resolver_registry.cc +1 -1
  552. data/src/core/lib/resolver/resolver_registry.h +2 -3
  553. data/src/core/lib/resolver/server_address.cc +11 -15
  554. data/src/core/lib/resolver/server_address.h +4 -8
  555. data/src/core/lib/resource_quota/api.cc +1 -1
  556. data/src/core/lib/resource_quota/arena.cc +21 -1
  557. data/src/core/lib/resource_quota/arena.h +24 -2
  558. data/src/core/lib/resource_quota/memory_quota.cc +157 -17
  559. data/src/core/lib/resource_quota/memory_quota.h +98 -17
  560. data/src/core/lib/resource_quota/periodic_update.cc +79 -0
  561. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  562. data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
  563. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  564. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  565. data/src/core/lib/security/authorization/matchers.cc +13 -10
  566. data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
  567. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
  568. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
  569. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
  570. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
  571. data/src/core/lib/security/credentials/credentials.h +16 -12
  572. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -11
  573. data/src/core/lib/security/credentials/external/external_account_credentials.cc +32 -23
  574. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  575. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
  576. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
  577. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
  578. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +29 -26
  579. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
  580. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  581. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
  582. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
  583. data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
  584. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
  585. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +11 -13
  586. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  587. data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
  588. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +17 -18
  589. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  590. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
  591. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
  592. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +6 -0
  593. data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
  594. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
  595. data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
  596. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  597. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
  598. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
  599. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  600. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  601. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
  602. data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
  603. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  604. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  605. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
  606. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
  607. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
  608. data/src/core/lib/security/transport/auth_filters.h +1 -1
  609. data/src/core/lib/security/transport/client_auth_filter.cc +3 -4
  610. data/src/core/lib/security/transport/security_handshaker.cc +32 -44
  611. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  612. data/src/core/lib/service_config/service_config.h +11 -0
  613. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  614. data/src/core/lib/service_config/service_config_impl.h +11 -13
  615. data/src/core/lib/service_config/service_config_parser.cc +26 -27
  616. data/src/core/lib/service_config/service_config_parser.h +10 -22
  617. data/src/core/lib/slice/percent_encoding.cc +4 -13
  618. data/src/core/lib/slice/slice.cc +10 -4
  619. data/src/core/lib/surface/call.cc +8 -2
  620. data/src/core/lib/surface/channel.cc +6 -6
  621. data/src/core/lib/surface/channel.h +1 -1
  622. data/src/core/lib/surface/completion_queue.cc +0 -2
  623. data/src/core/lib/surface/completion_queue.h +0 -3
  624. data/src/core/lib/surface/init.cc +2 -6
  625. data/src/core/lib/surface/lame_client.cc +2 -3
  626. data/src/core/lib/surface/lame_client.h +1 -1
  627. data/src/core/lib/surface/server.cc +7 -12
  628. data/src/core/lib/surface/server.h +7 -7
  629. data/src/core/lib/surface/validate_metadata.cc +4 -14
  630. data/src/core/lib/surface/version.cc +2 -2
  631. data/src/core/lib/transport/connectivity_state.cc +0 -1
  632. data/src/core/lib/transport/connectivity_state.h +1 -1
  633. data/src/core/lib/transport/error_utils.cc +0 -36
  634. data/src/core/lib/transport/handshaker.cc +7 -9
  635. data/src/core/lib/transport/handshaker.h +4 -5
  636. data/src/core/lib/transport/handshaker_factory.h +2 -3
  637. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  638. data/src/core/lib/transport/handshaker_registry.h +2 -4
  639. data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
  640. data/src/core/lib/transport/metadata_batch.cc +5 -0
  641. data/src/core/lib/transport/metadata_batch.h +52 -7
  642. data/src/core/lib/transport/parsed_metadata.h +0 -1
  643. data/src/core/lib/transport/tcp_connect_handshaker.cc +12 -18
  644. data/src/core/lib/transport/transport.h +0 -7
  645. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  646. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  647. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
  648. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  649. data/src/core/tsi/fake_transport_security.cc +53 -30
  650. data/src/core/tsi/local_transport_security.cc +9 -5
  651. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  652. data/src/core/tsi/ssl_transport_security.cc +47 -23
  653. data/src/core/tsi/transport_security.cc +18 -6
  654. data/src/core/tsi/transport_security.h +2 -1
  655. data/src/core/tsi/transport_security_interface.h +17 -5
  656. data/src/ruby/ext/grpc/extconf.rb +2 -0
  657. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  658. data/src/ruby/lib/grpc/version.rb +1 -1
  659. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  660. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  661. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  662. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  663. data/third_party/upb/upb/arena.c +277 -0
  664. data/third_party/upb/upb/arena.h +225 -0
  665. data/third_party/upb/upb/array.c +114 -0
  666. data/third_party/upb/upb/array.h +83 -0
  667. data/third_party/upb/upb/collections.h +36 -0
  668. data/third_party/upb/upb/decode.c +161 -65
  669. data/third_party/upb/upb/decode.h +1 -0
  670. data/third_party/upb/upb/decode_fast.c +1 -1
  671. data/third_party/upb/upb/def.c +10 -2
  672. data/third_party/upb/upb/def.h +8 -1
  673. data/third_party/upb/upb/def.hpp +7 -4
  674. data/third_party/upb/upb/encode.c +29 -20
  675. data/third_party/upb/upb/encode.h +16 -6
  676. data/third_party/upb/upb/extension_registry.c +93 -0
  677. data/third_party/upb/upb/extension_registry.h +84 -0
  678. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  679. data/third_party/upb/upb/internal/table.h +385 -0
  680. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  681. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  682. data/third_party/upb/upb/json_decode.c +1512 -0
  683. data/third_party/upb/upb/json_decode.h +47 -0
  684. data/third_party/upb/upb/json_encode.c +7 -3
  685. data/third_party/upb/upb/json_encode.h +6 -3
  686. data/third_party/upb/upb/map.c +108 -0
  687. data/third_party/upb/upb/map.h +117 -0
  688. data/third_party/upb/upb/message_value.h +66 -0
  689. data/third_party/upb/upb/mini_table.c +1147 -0
  690. data/third_party/upb/upb/mini_table.h +189 -0
  691. data/third_party/upb/upb/mini_table.hpp +112 -0
  692. data/third_party/upb/upb/msg.c +2 -62
  693. data/third_party/upb/upb/msg.h +2 -45
  694. data/third_party/upb/upb/msg_internal.h +28 -22
  695. data/third_party/upb/upb/port_def.inc +2 -1
  696. data/third_party/upb/upb/port_undef.inc +1 -0
  697. data/third_party/upb/upb/reflection.c +2 -159
  698. data/third_party/upb/upb/reflection.h +2 -112
  699. data/third_party/upb/upb/status.c +86 -0
  700. data/third_party/upb/upb/status.h +66 -0
  701. data/third_party/upb/upb/table.c +2 -2
  702. data/third_party/upb/upb/table_internal.h +3 -352
  703. data/third_party/upb/upb/text_encode.c +3 -2
  704. data/third_party/upb/upb/upb.c +4 -290
  705. data/third_party/upb/upb/upb.h +7 -196
  706. metadata +90 -38
  707. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  708. data/src/core/lib/iomgr/error_internal.h +0 -66
  709. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  710. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  711. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  712. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  713. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  714. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  715. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -58,7 +58,6 @@
58
58
  // IWYU pragma: no_include <sys/socket.h>
59
59
 
60
60
  #include <inttypes.h>
61
- #include <limits.h>
62
61
  #include <stdlib.h>
63
62
  #include <string.h>
64
63
 
@@ -94,16 +93,12 @@
94
93
  #include <grpc/support/log.h>
95
94
 
96
95
  #include "src/core/ext/filters/client_channel/client_channel.h"
97
- #include "src/core/ext/filters/client_channel/lb_policy.h"
98
96
  #include "src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h"
99
97
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h"
100
98
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h"
101
99
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h"
102
100
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h"
103
- #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
104
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
105
101
  #include "src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h"
106
- #include "src/core/ext/filters/client_channel/subchannel_interface.h"
107
102
  #include "src/core/lib/address_utils/sockaddr_utils.h"
108
103
  #include "src/core/lib/backoff/backoff.h"
109
104
  #include "src/core/lib/channel/channel_args.h"
@@ -111,7 +106,7 @@
111
106
  #include "src/core/lib/channel/channelz.h"
112
107
  #include "src/core/lib/config/core_configuration.h"
113
108
  #include "src/core/lib/debug/trace.h"
114
- #include "src/core/lib/event_engine/event_engine_factory.h"
109
+ #include "src/core/lib/event_engine/default_event_engine.h"
115
110
  #include "src/core/lib/gpr/string.h"
116
111
  #include "src/core/lib/gpr/useful.h"
117
112
  #include "src/core/lib/gprpp/debug_location.h"
@@ -119,6 +114,7 @@
119
114
  #include "src/core/lib/gprpp/ref_counted.h"
120
115
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
121
116
  #include "src/core/lib/gprpp/time.h"
117
+ #include "src/core/lib/gprpp/work_serializer.h"
122
118
  #include "src/core/lib/iomgr/closure.h"
123
119
  #include "src/core/lib/iomgr/error.h"
124
120
  #include "src/core/lib/iomgr/exec_ctx.h"
@@ -127,8 +123,11 @@
127
123
  #include "src/core/lib/iomgr/sockaddr.h"
128
124
  #include "src/core/lib/iomgr/socket_utils.h"
129
125
  #include "src/core/lib/iomgr/timer.h"
130
- #include "src/core/lib/iomgr/work_serializer.h"
131
126
  #include "src/core/lib/json/json.h"
127
+ #include "src/core/lib/load_balancing/lb_policy.h"
128
+ #include "src/core/lib/load_balancing/lb_policy_factory.h"
129
+ #include "src/core/lib/load_balancing/lb_policy_registry.h"
130
+ #include "src/core/lib/load_balancing/subchannel_interface.h"
132
131
  #include "src/core/lib/resolver/resolver.h"
133
132
  #include "src/core/lib/resolver/server_address.h"
134
133
  #include "src/core/lib/security/credentials/credentials.h"
@@ -161,7 +160,7 @@ namespace {
161
160
  using ::grpc_event_engine::experimental::EventEngine;
162
161
  using ::grpc_event_engine::experimental::GetDefaultEventEngine;
163
162
 
164
- constexpr char kGrpclb[] = "grpclb";
163
+ constexpr absl::string_view kGrpclb = "grpclb";
165
164
 
166
165
  class GrpcLbConfig : public LoadBalancingPolicy::Config {
167
166
  public:
@@ -169,7 +168,8 @@ class GrpcLbConfig : public LoadBalancingPolicy::Config {
169
168
  std::string service_name)
170
169
  : child_policy_(std::move(child_policy)),
171
170
  service_name_(std::move(service_name)) {}
172
- const char* name() const override { return kGrpclb; }
171
+
172
+ absl::string_view name() const override { return kGrpclb; }
173
173
 
174
174
  RefCountedPtr<LoadBalancingPolicy::Config> child_policy() const {
175
175
  return child_policy_;
@@ -186,7 +186,7 @@ class GrpcLb : public LoadBalancingPolicy {
186
186
  public:
187
187
  explicit GrpcLb(Args args);
188
188
 
189
- const char* name() const override { return kGrpclb; }
189
+ absl::string_view name() const override { return kGrpclb; }
190
190
 
191
191
  void UpdateLocked(UpdateArgs args) override;
192
192
  void ResetBackoffLocked() override;
@@ -426,7 +426,7 @@ class GrpcLb : public LoadBalancingPolicy {
426
426
  : parent_(std::move(parent)) {}
427
427
 
428
428
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
429
- ServerAddress address, const grpc_channel_args& args) override;
429
+ ServerAddress address, const ChannelArgs& args) override;
430
430
  void UpdateState(grpc_connectivity_state state, const absl::Status& status,
431
431
  std::unique_ptr<SubchannelPicker> picker) override;
432
432
  void RequestReresolution() override;
@@ -470,12 +470,10 @@ class GrpcLb : public LoadBalancingPolicy {
470
470
  RefCountedPtr<GrpcLb> parent_;
471
471
  };
472
472
 
473
- ~GrpcLb() override;
474
-
475
473
  void ShutdownLocked() override;
476
474
 
477
475
  // Helper functions used in UpdateLocked().
478
- void UpdateBalancerChannelLocked(const grpc_channel_args& args);
476
+ void UpdateBalancerChannelLocked(const ChannelArgs& args);
479
477
 
480
478
  void CancelBalancerChannelConnectivityWatchLocked();
481
479
 
@@ -491,10 +489,10 @@ class GrpcLb : public LoadBalancingPolicy {
491
489
  void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
492
490
 
493
491
  // Methods for dealing with the child policy.
494
- grpc_channel_args* CreateChildPolicyArgsLocked(
492
+ ChannelArgs CreateChildPolicyArgsLocked(
495
493
  bool is_backend_from_grpclb_load_balancer);
496
494
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
497
- const grpc_channel_args* args);
495
+ const ChannelArgs& args);
498
496
  void CreateOrUpdateChildPolicyLocked();
499
497
 
500
498
  // Subchannel caching.
@@ -510,7 +508,7 @@ class GrpcLb : public LoadBalancingPolicy {
510
508
  RefCountedPtr<GrpcLbConfig> config_;
511
509
 
512
510
  // Current channel args from the resolver.
513
- grpc_channel_args* args_ = nullptr;
511
+ ChannelArgs args_;
514
512
 
515
513
  // Internal state.
516
514
  bool shutting_down_ = false;
@@ -674,7 +672,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
674
672
  absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
675
673
  stats);
676
674
  // Add address.
677
- addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
675
+ addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
678
676
  }
679
677
  return addresses;
680
678
  }
@@ -759,7 +757,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
759
757
  //
760
758
 
761
759
  RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
762
- ServerAddress address, const grpc_channel_args& args) {
760
+ ServerAddress address, const ChannelArgs& args) {
763
761
  if (parent_->shutting_down_) return nullptr;
764
762
  const TokenAndClientStatsAttribute* attribute =
765
763
  static_cast<const TokenAndClientStatsAttribute*>(
@@ -1343,7 +1341,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1343
1341
  // helper code for creating balancer channel
1344
1342
  //
1345
1343
 
1346
- ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
1344
+ ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
1347
1345
  const ServerAddressList* addresses =
1348
1346
  FindGrpclbBalancerAddressesInChannelArgs(args);
1349
1347
  if (addresses != nullptr) return *addresses;
@@ -1357,88 +1355,78 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
1357
1355
  * - \a response_generator: in order to propagate updates from the resolver
1358
1356
  * above the grpclb policy.
1359
1357
  * - \a args: other args inherited from the grpclb policy. */
1360
- grpc_channel_args* BuildBalancerChannelArgs(
1358
+ ChannelArgs BuildBalancerChannelArgs(
1361
1359
  FakeResolverResponseGenerator* response_generator,
1362
- const grpc_channel_args* args) {
1363
- // Channel args to remove.
1364
- static const char* args_to_remove[] = {
1360
+ const ChannelArgs& args) {
1361
+ // Create channel args for channel credentials that does not contain bearer
1362
+ // token credentials.
1363
+ auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
1364
+ GPR_ASSERT(channel_credentials != nullptr);
1365
+ RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
1366
+ channel_credentials->duplicate_without_call_credentials();
1367
+ GPR_ASSERT(creds_sans_call_creds != nullptr);
1368
+ return args
1365
1369
  // LB policy name, since we want to use the default (pick_first) in
1366
1370
  // the LB channel.
1367
- GRPC_ARG_LB_POLICY_NAME,
1371
+ .Remove(GRPC_ARG_LB_POLICY_NAME)
1368
1372
  // Strip out the service config, since we don't want the LB policy
1369
1373
  // config specified for the parent channel to affect the LB channel.
1370
- GRPC_ARG_SERVICE_CONFIG,
1374
+ .Remove(GRPC_ARG_SERVICE_CONFIG)
1371
1375
  // The channel arg for the server URI, since that will be different for
1372
1376
  // the LB channel than for the parent channel. The client channel
1373
1377
  // factory will re-add this arg with the right value.
1374
- GRPC_ARG_SERVER_URI,
1378
+ .Remove(GRPC_ARG_SERVER_URI)
1375
1379
  // The fake resolver response generator, because we are replacing it
1376
1380
  // with the one from the grpclb policy, used to propagate updates to
1377
1381
  // the LB channel.
1378
- GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
1382
+ .Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
1379
1383
  // The LB channel should use the authority indicated by the target
1380
1384
  // authority table (see \a ModifyGrpclbBalancerChannelArgs),
1381
1385
  // as opposed to the authority from the parent channel.
1382
- GRPC_ARG_DEFAULT_AUTHORITY,
1386
+ .Remove(GRPC_ARG_DEFAULT_AUTHORITY)
1383
1387
  // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
1384
1388
  // treated as a stand-alone channel and not inherit this argument from the
1385
1389
  // args of the parent channel.
1386
- GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
1390
+ .Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
1387
1391
  // Don't want to pass down channelz node from parent; the balancer
1388
1392
  // channel will get its own.
1389
- GRPC_ARG_CHANNELZ_CHANNEL_NODE,
1393
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
1390
1394
  // Remove the channel args for channel credentials and replace it
1391
1395
  // with a version that does not contain call credentials. The loadbalancer
1392
1396
  // is not necessarily trusted to handle bearer token credentials.
1393
- GRPC_ARG_CHANNEL_CREDENTIALS,
1394
- };
1395
- // Create channel args for channel credentials that does not contain bearer
1396
- // token credentials.
1397
- grpc_channel_credentials* channel_credentials =
1398
- grpc_channel_credentials_find_in_args(args);
1399
- GPR_ASSERT(channel_credentials != nullptr);
1400
- RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
1401
- channel_credentials->duplicate_without_call_credentials();
1402
- GPR_ASSERT(creds_sans_call_creds != nullptr);
1403
- // Channel args to add.
1404
- absl::InlinedVector<grpc_arg, 4> args_to_add = {
1405
- // The fake resolver response generator, which we use to inject
1406
- // address updates into the LB channel.
1407
- FakeResolverResponseGenerator::MakeChannelArg(response_generator),
1397
+ .Remove(GRPC_ARG_CHANNEL_CREDENTIALS)
1408
1398
  // A channel arg indicating the target is a grpclb load balancer.
1409
- grpc_channel_arg_integer_create(
1410
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER), 1),
1399
+ .Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
1411
1400
  // Tells channelz that this is an internal channel.
1412
- grpc_channel_arg_integer_create(
1413
- const_cast<char*>(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL), 1),
1401
+ .Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
1414
1402
  // A channel args for new channel credentials that does not contain bearer
1415
1403
  // tokens.
1416
- grpc_channel_credentials_to_arg(creds_sans_call_creds.get()),
1417
- };
1418
- return grpc_channel_args_copy_and_add_and_remove(
1419
- args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), args_to_add.data(),
1420
- args_to_add.size());
1404
+ .SetObject(creds_sans_call_creds)
1405
+ // The fake resolver response generator, which we use to inject
1406
+ // address updates into the LB channel.
1407
+ .SetObject(response_generator->Ref());
1421
1408
  }
1422
1409
 
1423
1410
  //
1424
1411
  // ctor and dtor
1425
1412
  //
1426
1413
 
1427
- std::string GetServerNameFromChannelArgs(const grpc_channel_args* args) {
1428
- const char* server_uri =
1429
- grpc_channel_args_find_string(args, GRPC_ARG_SERVER_URI);
1430
- GPR_ASSERT(server_uri != nullptr);
1431
- absl::StatusOr<URI> uri = URI::Parse(server_uri);
1414
+ std::string GetServerNameFromChannelArgs(const ChannelArgs& args) {
1415
+ absl::StatusOr<URI> uri =
1416
+ URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
1432
1417
  GPR_ASSERT(uri.ok() && !uri->path().empty());
1433
1418
  return std::string(absl::StripPrefix(uri->path(), "/"));
1434
1419
  }
1435
1420
 
1436
1421
  GrpcLb::GrpcLb(Args args)
1437
1422
  : LoadBalancingPolicy(std::move(args)),
1438
- server_name_(GetServerNameFromChannelArgs(args.args)),
1423
+ server_name_(GetServerNameFromChannelArgs(channel_args())),
1439
1424
  response_generator_(MakeRefCounted<FakeResolverResponseGenerator>()),
1440
- lb_call_timeout_(Duration::Milliseconds(grpc_channel_args_find_integer(
1441
- args.args, GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS, {0, 0, INT_MAX}))),
1425
+ lb_call_timeout_(std::max(
1426
+ Duration::Zero(),
1427
+ channel_args()
1428
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
1429
+ .value_or(Duration::Zero()))),
1442
1430
  lb_call_backoff_(
1443
1431
  BackOff::Options()
1444
1432
  .set_initial_backoff(Duration::Seconds(
@@ -1447,15 +1435,19 @@ GrpcLb::GrpcLb(Args args)
1447
1435
  .set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
1448
1436
  .set_max_backoff(Duration::Seconds(
1449
1437
  GRPC_GRPCLB_RECONNECT_MAX_BACKOFF_SECONDS))),
1450
- fallback_at_startup_timeout_(
1451
- Duration::Milliseconds(grpc_channel_args_find_integer(
1452
- args.args, GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS,
1453
- {GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS, 0, INT_MAX}))),
1454
- subchannel_cache_interval_(
1455
- Duration::Milliseconds(grpc_channel_args_find_integer(
1456
- args.args, GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS,
1457
- {GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS, 0,
1458
- INT_MAX}))) {
1438
+ fallback_at_startup_timeout_(std::max(
1439
+ Duration::Zero(),
1440
+ channel_args()
1441
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
1442
+ .value_or(Duration::Milliseconds(
1443
+ GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
1444
+ subchannel_cache_interval_(std::max(
1445
+ Duration::Zero(),
1446
+ channel_args()
1447
+ .GetDurationFromIntMillis(
1448
+ GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
1449
+ .value_or(Duration::Milliseconds(
1450
+ GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
1459
1451
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1460
1452
  gpr_log(GPR_INFO,
1461
1453
  "[grpclb %p] Will use '%s' as the server name for LB request.",
@@ -1470,8 +1462,6 @@ GrpcLb::GrpcLb(Args args)
1470
1462
  nullptr);
1471
1463
  }
1472
1464
 
1473
- GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
1474
-
1475
1465
  void GrpcLb::ShutdownLocked() {
1476
1466
  shutting_down_ = true;
1477
1467
  lb_calld_.reset();
@@ -1538,7 +1528,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1538
1528
  }
1539
1529
  resolution_note_ = std::move(args.resolution_note);
1540
1530
  // Update balancer channel.
1541
- UpdateBalancerChannelLocked(*args.args);
1531
+ UpdateBalancerChannelLocked(args.args);
1542
1532
  // Update the existing child policy, if any.
1543
1533
  if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
1544
1534
  // If this is the initial update, start the fallback-at-startup checks
@@ -1569,37 +1559,28 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1569
1559
  // helpers for UpdateLocked()
1570
1560
  //
1571
1561
 
1572
- void GrpcLb::UpdateBalancerChannelLocked(const grpc_channel_args& args) {
1562
+ void GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
1573
1563
  // Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
1574
1564
  // since we use this to trigger the client_load_reporting filter.
1575
- static const char* args_to_remove[] = {GRPC_ARG_LB_POLICY_NAME};
1576
- grpc_arg new_arg = grpc_channel_arg_string_create(
1577
- const_cast<char*>(GRPC_ARG_LB_POLICY_NAME), const_cast<char*>("grpclb"));
1578
- grpc_channel_args_destroy(args_);
1579
- args_ = grpc_channel_args_copy_and_add_and_remove(
1580
- &args, args_to_remove, GPR_ARRAY_SIZE(args_to_remove), &new_arg, 1);
1565
+ args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
1581
1566
  // Construct args for balancer channel.
1582
1567
  ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
1583
- grpc_channel_args* lb_channel_args =
1584
- BuildBalancerChannelArgs(response_generator_.get(), &args);
1568
+ ChannelArgs lb_channel_args =
1569
+ BuildBalancerChannelArgs(response_generator_.get(), args);
1585
1570
  // Create balancer channel if needed.
1586
1571
  if (lb_channel_ == nullptr) {
1587
1572
  std::string uri_str = absl::StrCat("fake:///", server_name_);
1588
- grpc_channel_credentials* creds =
1589
- grpc_channel_credentials_find_in_args(lb_channel_args);
1573
+ auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
1590
1574
  GPR_ASSERT(creds != nullptr);
1591
- const char* arg_to_remove = GRPC_ARG_CHANNEL_CREDENTIALS;
1592
- grpc_channel_args* new_args =
1593
- grpc_channel_args_copy_and_remove(lb_channel_args, &arg_to_remove, 1);
1594
- lb_channel_ = grpc_channel_create(uri_str.c_str(), creds, new_args);
1575
+ lb_channel_ = grpc_channel_create(
1576
+ uri_str.c_str(), creds,
1577
+ lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
1595
1578
  GPR_ASSERT(lb_channel_ != nullptr);
1596
- grpc_channel_args_destroy(new_args);
1597
1579
  // Set up channelz linkage.
1598
1580
  channelz::ChannelNode* child_channelz_node =
1599
1581
  grpc_channel_get_channelz_node(lb_channel_);
1600
1582
  channelz::ChannelNode* parent_channelz_node =
1601
- grpc_channel_args_find_pointer<channelz::ChannelNode>(
1602
- &args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
1583
+ args.GetObject<channelz::ChannelNode>();
1603
1584
  if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
1604
1585
  parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
1605
1586
  parent_channelz_node_ = parent_channelz_node->Ref();
@@ -1734,22 +1715,19 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1734
1715
  // code for interacting with the child policy
1735
1716
  //
1736
1717
 
1737
- grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
1718
+ ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
1738
1719
  bool is_backend_from_grpclb_load_balancer) {
1739
- absl::InlinedVector<grpc_arg, 2> args_to_add;
1740
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
1741
- const_cast<char*>(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
1742
- is_backend_from_grpclb_load_balancer));
1720
+ ChannelArgs r =
1721
+ args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
1722
+ is_backend_from_grpclb_load_balancer);
1743
1723
  if (is_backend_from_grpclb_load_balancer) {
1744
- args_to_add.emplace_back(grpc_channel_arg_integer_create(
1745
- const_cast<char*>(GRPC_ARG_INHIBIT_HEALTH_CHECKING), 1));
1724
+ r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
1746
1725
  }
1747
- return grpc_channel_args_copy_and_add(args_, args_to_add.data(),
1748
- args_to_add.size());
1726
+ return r;
1749
1727
  }
1750
1728
 
1751
1729
  OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
1752
- const grpc_channel_args* args) {
1730
+ const ChannelArgs& args) {
1753
1731
  LoadBalancingPolicy::Args lb_policy_args;
1754
1732
  lb_policy_args.work_serializer = work_serializer();
1755
1733
  lb_policy_args.args = args;
@@ -1793,7 +1771,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1793
1771
  }
1794
1772
  update_args.args =
1795
1773
  CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
1796
- GPR_ASSERT(update_args.args != nullptr);
1774
+ GPR_ASSERT(update_args.args != ChannelArgs());
1797
1775
  update_args.config = config_->child_policy();
1798
1776
  // Create child policy if needed.
1799
1777
  if (child_policy_ == nullptr) {
@@ -1868,28 +1846,27 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1868
1846
  return MakeOrphanable<GrpcLb>(std::move(args));
1869
1847
  }
1870
1848
 
1871
- const char* name() const override { return kGrpclb; }
1849
+ absl::string_view name() const override { return kGrpclb; }
1872
1850
 
1873
- RefCountedPtr<LoadBalancingPolicy::Config> ParseLoadBalancingConfig(
1874
- const Json& json, grpc_error_handle* error) const override {
1875
- GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
1851
+ absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
1852
+ ParseLoadBalancingConfig(const Json& json) const override {
1876
1853
  if (json.type() == Json::Type::JSON_NULL) {
1877
1854
  return MakeRefCounted<GrpcLbConfig>(nullptr, "");
1878
1855
  }
1879
- std::vector<grpc_error_handle> error_list;
1880
- Json child_policy_config_json_tmp;
1881
- const Json* child_policy_config_json;
1856
+ std::vector<std::string> error_list;
1882
1857
  std::string service_name;
1883
1858
  auto it = json.object_value().find("serviceName");
1884
1859
  if (it != json.object_value().end()) {
1885
1860
  const Json& service_name_json = it->second;
1886
1861
  if (service_name_json.type() != Json::Type::STRING) {
1887
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1888
- "field:serviceName error:type should be string"));
1862
+ error_list.emplace_back(
1863
+ "field:serviceName error:type should be string");
1889
1864
  } else {
1890
1865
  service_name = service_name_json.string_value();
1891
1866
  }
1892
1867
  }
1868
+ Json child_policy_config_json_tmp;
1869
+ const Json* child_policy_config_json;
1893
1870
  it = json.object_value().find("childPolicy");
1894
1871
  if (it == json.object_value().end()) {
1895
1872
  child_policy_config_json_tmp = Json::Array{Json::Object{
@@ -1899,22 +1876,21 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1899
1876
  } else {
1900
1877
  child_policy_config_json = &it->second;
1901
1878
  }
1902
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
1903
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
1879
+ auto child_policy_config =
1904
1880
  LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1905
- *child_policy_config_json, &parse_error);
1906
- if (!GRPC_ERROR_IS_NONE(parse_error)) {
1907
- std::vector<grpc_error_handle> child_errors;
1908
- child_errors.push_back(parse_error);
1909
- error_list.push_back(
1910
- GRPC_ERROR_CREATE_FROM_VECTOR("field:childPolicy", &child_errors));
1881
+ *child_policy_config_json);
1882
+ if (!child_policy_config.ok()) {
1883
+ error_list.emplace_back(
1884
+ absl::StrCat("error parsing childPolicy field: ",
1885
+ child_policy_config.status().message()));
1911
1886
  }
1912
1887
  if (error_list.empty()) {
1913
- return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
1888
+ return MakeRefCounted<GrpcLbConfig>(std::move(*child_policy_config),
1914
1889
  std::move(service_name));
1915
1890
  } else {
1916
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
1917
- return nullptr;
1891
+ return absl::InvalidArgumentError(
1892
+ absl::StrCat("errors parsing grpclb LB policy config: [",
1893
+ absl::StrJoin(error_list, "; "), "]"));
1918
1894
  }
1919
1895
  }
1920
1896
  };
@@ -21,6 +21,7 @@
21
21
  #include <stddef.h>
22
22
 
23
23
  #include <memory>
24
+ #include <utility>
24
25
 
25
26
  #include "src/core/lib/channel/channel_args.h"
26
27
  #include "src/core/lib/gpr/useful.h"
@@ -72,9 +73,17 @@ grpc_arg CreateGrpclbBalancerAddressesArg(
72
73
  }
73
74
 
74
75
  const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
75
- const grpc_channel_args& args) {
76
- return grpc_channel_args_find_pointer<const ServerAddressList>(
77
- &args, const_cast<char*>(GRPC_ARG_GRPCLB_BALANCER_ADDRESSES));
76
+ const ChannelArgs& args) {
77
+ return args.GetPointer<const ServerAddressList>(
78
+ GRPC_ARG_GRPCLB_BALANCER_ADDRESSES);
79
+ }
80
+
81
+ ChannelArgs SetGrpcLbBalancerAddresses(const ChannelArgs& args,
82
+ ServerAddressList address_list) {
83
+ return args.Set(
84
+ GRPC_ARG_GRPCLB_BALANCER_ADDRESSES,
85
+ ChannelArgs::Pointer(new ServerAddressList(std::move(address_list)),
86
+ &kBalancerAddressesArgVtable));
78
87
  }
79
88
 
80
89
  } // namespace grpc_core
@@ -21,14 +21,18 @@
21
21
 
22
22
  #include <grpc/impl/codegen/grpc_types.h>
23
23
 
24
+ #include "src/core/lib/channel/channel_args.h"
24
25
  #include "src/core/lib/resolver/server_address.h"
25
26
 
26
27
  namespace grpc_core {
27
28
 
28
29
  grpc_arg CreateGrpclbBalancerAddressesArg(
29
30
  const ServerAddressList* address_list);
31
+ GRPC_MUST_USE_RESULT
32
+ ChannelArgs SetGrpcLbBalancerAddresses(const ChannelArgs& args,
33
+ ServerAddressList address_list);
30
34
  const ServerAddressList* FindGrpclbBalancerAddressesInChannelArgs(
31
- const grpc_channel_args& args);
35
+ const ChannelArgs& args);
32
36
 
33
37
  } // namespace grpc_core
34
38
 
@@ -26,6 +26,7 @@
26
26
 
27
27
  #include "google/protobuf/duration.upb.h"
28
28
  #include "google/protobuf/timestamp.upb.h"
29
+ #include "upb/upb.h"
29
30
 
30
31
  #include <grpc/impl/codegen/gpr_types.h>
31
32
  #include <grpc/support/log.h>
@@ -18,14 +18,13 @@
18
18
 
19
19
  #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
20
20
  #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_GRPCLB_LOAD_BALANCER_API_H
21
-
22
21
  #include <grpc/support/port_platform.h>
23
22
 
24
23
  #include <stdint.h>
25
24
 
26
25
  #include <vector>
27
26
 
28
- #include "upb/upb.h"
27
+ #include "upb/arena.h"
29
28
 
30
29
  #include <grpc/slice.h>
31
30
 
@@ -22,8 +22,8 @@
22
22
  #include <memory>
23
23
 
24
24
  #include "src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h"
25
- #include "src/core/ext/filters/client_channel/subchannel_interface.h"
26
25
  #include "src/core/lib/gprpp/time.h"
26
+ #include "src/core/lib/load_balancing/subchannel_interface.h"
27
27
 
28
28
  namespace grpc_core {
29
29