grpc 1.48.0-x86_64-linux → 1.49.1-x86_64-linux

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 (721) 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 +125 -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 +102 -131
  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 +63 -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 +38 -17
  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 +101 -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 +42 -8
  520. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  521. data/src/core/lib/iomgr/resolve_address_windows.cc +44 -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/2.6/grpc_c.so +0 -0
  659. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  660. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  661. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  662. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  663. data/src/ruby/lib/grpc/version.rb +1 -1
  664. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  665. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  666. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  667. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  668. data/third_party/upb/upb/arena.c +277 -0
  669. data/third_party/upb/upb/arena.h +225 -0
  670. data/third_party/upb/upb/array.c +114 -0
  671. data/third_party/upb/upb/array.h +83 -0
  672. data/third_party/upb/upb/collections.h +36 -0
  673. data/third_party/upb/upb/decode.c +161 -65
  674. data/third_party/upb/upb/decode.h +1 -0
  675. data/third_party/upb/upb/decode_fast.c +1 -1
  676. data/third_party/upb/upb/def.c +10 -2
  677. data/third_party/upb/upb/def.h +8 -1
  678. data/third_party/upb/upb/def.hpp +7 -4
  679. data/third_party/upb/upb/encode.c +29 -20
  680. data/third_party/upb/upb/encode.h +16 -6
  681. data/third_party/upb/upb/extension_registry.c +93 -0
  682. data/third_party/upb/upb/extension_registry.h +84 -0
  683. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  684. data/third_party/upb/upb/internal/table.h +385 -0
  685. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  686. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  687. data/third_party/upb/upb/json_decode.c +1512 -0
  688. data/third_party/upb/upb/json_decode.h +47 -0
  689. data/third_party/upb/upb/json_encode.c +7 -3
  690. data/third_party/upb/upb/json_encode.h +6 -3
  691. data/third_party/upb/upb/map.c +108 -0
  692. data/third_party/upb/upb/map.h +117 -0
  693. data/third_party/upb/upb/message_value.h +66 -0
  694. data/third_party/upb/upb/mini_table.c +1147 -0
  695. data/third_party/upb/upb/mini_table.h +189 -0
  696. data/third_party/upb/upb/mini_table.hpp +112 -0
  697. data/third_party/upb/upb/msg.c +2 -62
  698. data/third_party/upb/upb/msg.h +2 -45
  699. data/third_party/upb/upb/msg_internal.h +28 -22
  700. data/third_party/upb/upb/port_def.inc +2 -1
  701. data/third_party/upb/upb/port_undef.inc +1 -0
  702. data/third_party/upb/upb/reflection.c +2 -159
  703. data/third_party/upb/upb/reflection.h +2 -112
  704. data/third_party/upb/upb/status.c +86 -0
  705. data/third_party/upb/upb/status.h +66 -0
  706. data/third_party/upb/upb/table.c +2 -2
  707. data/third_party/upb/upb/table_internal.h +3 -352
  708. data/third_party/upb/upb/text_encode.c +3 -2
  709. data/third_party/upb/upb/upb.c +4 -290
  710. data/third_party/upb/upb/upb.h +7 -196
  711. metadata +89 -38
  712. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  713. data/src/core/lib/iomgr/error_internal.h +0 -66
  714. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  715. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  716. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  717. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  718. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  719. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  720. data/src/core/lib/promise/detail/switch.h +0 -1455
  721. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
@@ -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;
@@ -219,7 +219,6 @@ class GrpcLb : public LoadBalancingPolicy {
219
219
  void SendClientLoadReportLocked();
220
220
 
221
221
  // EventEngine callbacks
222
- void MaybeSendClientLoadReport();
223
222
  void MaybeSendClientLoadReportLocked();
224
223
 
225
224
  static void ClientLoadReportDone(void* arg, grpc_error_handle error);
@@ -426,7 +425,7 @@ class GrpcLb : public LoadBalancingPolicy {
426
425
  : parent_(std::move(parent)) {}
427
426
 
428
427
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
429
- ServerAddress address, const grpc_channel_args& args) override;
428
+ ServerAddress address, const ChannelArgs& args) override;
430
429
  void UpdateState(grpc_connectivity_state state, const absl::Status& status,
431
430
  std::unique_ptr<SubchannelPicker> picker) override;
432
431
  void RequestReresolution() override;
@@ -470,12 +469,10 @@ class GrpcLb : public LoadBalancingPolicy {
470
469
  RefCountedPtr<GrpcLb> parent_;
471
470
  };
472
471
 
473
- ~GrpcLb() override;
474
-
475
472
  void ShutdownLocked() override;
476
473
 
477
474
  // Helper functions used in UpdateLocked().
478
- void UpdateBalancerChannelLocked(const grpc_channel_args& args);
475
+ void UpdateBalancerChannelLocked(const ChannelArgs& args);
479
476
 
480
477
  void CancelBalancerChannelConnectivityWatchLocked();
481
478
 
@@ -491,10 +488,10 @@ class GrpcLb : public LoadBalancingPolicy {
491
488
  void OnBalancerCallRetryTimerLocked(grpc_error_handle error);
492
489
 
493
490
  // Methods for dealing with the child policy.
494
- grpc_channel_args* CreateChildPolicyArgsLocked(
491
+ ChannelArgs CreateChildPolicyArgsLocked(
495
492
  bool is_backend_from_grpclb_load_balancer);
496
493
  OrphanablePtr<LoadBalancingPolicy> CreateChildPolicyLocked(
497
- const grpc_channel_args* args);
494
+ const ChannelArgs& args);
498
495
  void CreateOrUpdateChildPolicyLocked();
499
496
 
500
497
  // Subchannel caching.
@@ -510,7 +507,7 @@ class GrpcLb : public LoadBalancingPolicy {
510
507
  RefCountedPtr<GrpcLbConfig> config_;
511
508
 
512
509
  // Current channel args from the resolver.
513
- grpc_channel_args* args_ = nullptr;
510
+ ChannelArgs args_;
514
511
 
515
512
  // Internal state.
516
513
  bool shutting_down_ = false;
@@ -674,7 +671,7 @@ ServerAddressList GrpcLb::Serverlist::GetServerAddressList(
674
671
  absl::make_unique<TokenAndClientStatsAttribute>(std::move(lb_token),
675
672
  stats);
676
673
  // Add address.
677
- addresses.emplace_back(addr, /*args=*/nullptr, std::move(attributes));
674
+ addresses.emplace_back(addr, ChannelArgs(), std::move(attributes));
678
675
  }
679
676
  return addresses;
680
677
  }
@@ -759,7 +756,7 @@ GrpcLb::PickResult GrpcLb::Picker::Pick(PickArgs args) {
759
756
  //
760
757
 
761
758
  RefCountedPtr<SubchannelInterface> GrpcLb::Helper::CreateSubchannel(
762
- ServerAddress address, const grpc_channel_args& args) {
759
+ ServerAddress address, const ChannelArgs& args) {
763
760
  if (parent_->shutting_down_) return nullptr;
764
761
  const TokenAndClientStatsAttribute* attribute =
765
762
  static_cast<const TokenAndClientStatsAttribute*>(
@@ -998,15 +995,11 @@ void GrpcLb::BalancerCallState::ScheduleNextClientLoadReportLocked() {
998
995
  GetDefaultEventEngine()->RunAfter(client_stats_report_interval_, [this] {
999
996
  ApplicationCallbackExecCtx callback_exec_ctx;
1000
997
  ExecCtx exec_ctx;
1001
- MaybeSendClientLoadReport();
998
+ grpclb_policy()->work_serializer()->Run(
999
+ [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
1002
1000
  });
1003
1001
  }
1004
1002
 
1005
- void GrpcLb::BalancerCallState::MaybeSendClientLoadReport() {
1006
- grpclb_policy()->work_serializer()->Run(
1007
- [this] { MaybeSendClientLoadReportLocked(); }, DEBUG_LOCATION);
1008
- }
1009
-
1010
1003
  void GrpcLb::BalancerCallState::MaybeSendClientLoadReportLocked() {
1011
1004
  client_load_report_handle_.reset();
1012
1005
  if (this != grpclb_policy()->lb_calld_.get()) {
@@ -1343,7 +1336,7 @@ void GrpcLb::BalancerCallState::OnBalancerStatusReceivedLocked(
1343
1336
  // helper code for creating balancer channel
1344
1337
  //
1345
1338
 
1346
- ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
1339
+ ServerAddressList ExtractBalancerAddresses(const ChannelArgs& args) {
1347
1340
  const ServerAddressList* addresses =
1348
1341
  FindGrpclbBalancerAddressesInChannelArgs(args);
1349
1342
  if (addresses != nullptr) return *addresses;
@@ -1357,88 +1350,78 @@ ServerAddressList ExtractBalancerAddresses(const grpc_channel_args& args) {
1357
1350
  * - \a response_generator: in order to propagate updates from the resolver
1358
1351
  * above the grpclb policy.
1359
1352
  * - \a args: other args inherited from the grpclb policy. */
1360
- grpc_channel_args* BuildBalancerChannelArgs(
1353
+ ChannelArgs BuildBalancerChannelArgs(
1361
1354
  FakeResolverResponseGenerator* response_generator,
1362
- const grpc_channel_args* args) {
1363
- // Channel args to remove.
1364
- static const char* args_to_remove[] = {
1355
+ const ChannelArgs& args) {
1356
+ // Create channel args for channel credentials that does not contain bearer
1357
+ // token credentials.
1358
+ auto* channel_credentials = args.GetObject<grpc_channel_credentials>();
1359
+ GPR_ASSERT(channel_credentials != nullptr);
1360
+ RefCountedPtr<grpc_channel_credentials> creds_sans_call_creds =
1361
+ channel_credentials->duplicate_without_call_credentials();
1362
+ GPR_ASSERT(creds_sans_call_creds != nullptr);
1363
+ return args
1365
1364
  // LB policy name, since we want to use the default (pick_first) in
1366
1365
  // the LB channel.
1367
- GRPC_ARG_LB_POLICY_NAME,
1366
+ .Remove(GRPC_ARG_LB_POLICY_NAME)
1368
1367
  // Strip out the service config, since we don't want the LB policy
1369
1368
  // config specified for the parent channel to affect the LB channel.
1370
- GRPC_ARG_SERVICE_CONFIG,
1369
+ .Remove(GRPC_ARG_SERVICE_CONFIG)
1371
1370
  // The channel arg for the server URI, since that will be different for
1372
1371
  // the LB channel than for the parent channel. The client channel
1373
1372
  // factory will re-add this arg with the right value.
1374
- GRPC_ARG_SERVER_URI,
1373
+ .Remove(GRPC_ARG_SERVER_URI)
1375
1374
  // The fake resolver response generator, because we are replacing it
1376
1375
  // with the one from the grpclb policy, used to propagate updates to
1377
1376
  // the LB channel.
1378
- GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR,
1377
+ .Remove(GRPC_ARG_FAKE_RESOLVER_RESPONSE_GENERATOR)
1379
1378
  // The LB channel should use the authority indicated by the target
1380
1379
  // authority table (see \a ModifyGrpclbBalancerChannelArgs),
1381
1380
  // as opposed to the authority from the parent channel.
1382
- GRPC_ARG_DEFAULT_AUTHORITY,
1381
+ .Remove(GRPC_ARG_DEFAULT_AUTHORITY)
1383
1382
  // Just as for \a GRPC_ARG_DEFAULT_AUTHORITY, the LB channel should be
1384
1383
  // treated as a stand-alone channel and not inherit this argument from the
1385
1384
  // args of the parent channel.
1386
- GRPC_SSL_TARGET_NAME_OVERRIDE_ARG,
1385
+ .Remove(GRPC_SSL_TARGET_NAME_OVERRIDE_ARG)
1387
1386
  // Don't want to pass down channelz node from parent; the balancer
1388
1387
  // channel will get its own.
1389
- GRPC_ARG_CHANNELZ_CHANNEL_NODE,
1388
+ .Remove(GRPC_ARG_CHANNELZ_CHANNEL_NODE)
1390
1389
  // Remove the channel args for channel credentials and replace it
1391
1390
  // with a version that does not contain call credentials. The loadbalancer
1392
1391
  // 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),
1392
+ .Remove(GRPC_ARG_CHANNEL_CREDENTIALS)
1408
1393
  // 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),
1394
+ .Set(GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, 1)
1411
1395
  // 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),
1396
+ .Set(GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL, 1)
1414
1397
  // A channel args for new channel credentials that does not contain bearer
1415
1398
  // 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());
1399
+ .SetObject(creds_sans_call_creds)
1400
+ // The fake resolver response generator, which we use to inject
1401
+ // address updates into the LB channel.
1402
+ .SetObject(response_generator->Ref());
1421
1403
  }
1422
1404
 
1423
1405
  //
1424
1406
  // ctor and dtor
1425
1407
  //
1426
1408
 
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);
1409
+ std::string GetServerNameFromChannelArgs(const ChannelArgs& args) {
1410
+ absl::StatusOr<URI> uri =
1411
+ URI::Parse(args.GetString(GRPC_ARG_SERVER_URI).value());
1432
1412
  GPR_ASSERT(uri.ok() && !uri->path().empty());
1433
1413
  return std::string(absl::StripPrefix(uri->path(), "/"));
1434
1414
  }
1435
1415
 
1436
1416
  GrpcLb::GrpcLb(Args args)
1437
1417
  : LoadBalancingPolicy(std::move(args)),
1438
- server_name_(GetServerNameFromChannelArgs(args.args)),
1418
+ server_name_(GetServerNameFromChannelArgs(channel_args())),
1439
1419
  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}))),
1420
+ lb_call_timeout_(std::max(
1421
+ Duration::Zero(),
1422
+ channel_args()
1423
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_CALL_TIMEOUT_MS)
1424
+ .value_or(Duration::Zero()))),
1442
1425
  lb_call_backoff_(
1443
1426
  BackOff::Options()
1444
1427
  .set_initial_backoff(Duration::Seconds(
@@ -1447,15 +1430,19 @@ GrpcLb::GrpcLb(Args args)
1447
1430
  .set_jitter(GRPC_GRPCLB_RECONNECT_JITTER)
1448
1431
  .set_max_backoff(Duration::Seconds(
1449
1432
  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}))) {
1433
+ fallback_at_startup_timeout_(std::max(
1434
+ Duration::Zero(),
1435
+ channel_args()
1436
+ .GetDurationFromIntMillis(GRPC_ARG_GRPCLB_FALLBACK_TIMEOUT_MS)
1437
+ .value_or(Duration::Milliseconds(
1438
+ GRPC_GRPCLB_DEFAULT_FALLBACK_TIMEOUT_MS)))),
1439
+ subchannel_cache_interval_(std::max(
1440
+ Duration::Zero(),
1441
+ channel_args()
1442
+ .GetDurationFromIntMillis(
1443
+ GRPC_ARG_GRPCLB_SUBCHANNEL_CACHE_INTERVAL_MS)
1444
+ .value_or(Duration::Milliseconds(
1445
+ GRPC_GRPCLB_DEFAULT_SUBCHANNEL_DELETION_DELAY_MS)))) {
1459
1446
  if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_glb_trace)) {
1460
1447
  gpr_log(GPR_INFO,
1461
1448
  "[grpclb %p] Will use '%s' as the server name for LB request.",
@@ -1470,8 +1457,6 @@ GrpcLb::GrpcLb(Args args)
1470
1457
  nullptr);
1471
1458
  }
1472
1459
 
1473
- GrpcLb::~GrpcLb() { grpc_channel_args_destroy(args_); }
1474
-
1475
1460
  void GrpcLb::ShutdownLocked() {
1476
1461
  shutting_down_ = true;
1477
1462
  lb_calld_.reset();
@@ -1538,7 +1523,7 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1538
1523
  }
1539
1524
  resolution_note_ = std::move(args.resolution_note);
1540
1525
  // Update balancer channel.
1541
- UpdateBalancerChannelLocked(*args.args);
1526
+ UpdateBalancerChannelLocked(args.args);
1542
1527
  // Update the existing child policy, if any.
1543
1528
  if (child_policy_ != nullptr) CreateOrUpdateChildPolicyLocked();
1544
1529
  // If this is the initial update, start the fallback-at-startup checks
@@ -1569,37 +1554,28 @@ void GrpcLb::UpdateLocked(UpdateArgs args) {
1569
1554
  // helpers for UpdateLocked()
1570
1555
  //
1571
1556
 
1572
- void GrpcLb::UpdateBalancerChannelLocked(const grpc_channel_args& args) {
1557
+ void GrpcLb::UpdateBalancerChannelLocked(const ChannelArgs& args) {
1573
1558
  // Make sure that GRPC_ARG_LB_POLICY_NAME is set in channel args,
1574
1559
  // 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);
1560
+ args_ = args.Set(GRPC_ARG_LB_POLICY_NAME, "grpclb");
1581
1561
  // Construct args for balancer channel.
1582
1562
  ServerAddressList balancer_addresses = ExtractBalancerAddresses(args);
1583
- grpc_channel_args* lb_channel_args =
1584
- BuildBalancerChannelArgs(response_generator_.get(), &args);
1563
+ ChannelArgs lb_channel_args =
1564
+ BuildBalancerChannelArgs(response_generator_.get(), args);
1585
1565
  // Create balancer channel if needed.
1586
1566
  if (lb_channel_ == nullptr) {
1587
1567
  std::string uri_str = absl::StrCat("fake:///", server_name_);
1588
- grpc_channel_credentials* creds =
1589
- grpc_channel_credentials_find_in_args(lb_channel_args);
1568
+ auto* creds = lb_channel_args.GetObject<grpc_channel_credentials>();
1590
1569
  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);
1570
+ lb_channel_ = grpc_channel_create(
1571
+ uri_str.c_str(), creds,
1572
+ lb_channel_args.Remove(GRPC_ARG_CHANNEL_CREDENTIALS).ToC().get());
1595
1573
  GPR_ASSERT(lb_channel_ != nullptr);
1596
- grpc_channel_args_destroy(new_args);
1597
1574
  // Set up channelz linkage.
1598
1575
  channelz::ChannelNode* child_channelz_node =
1599
1576
  grpc_channel_get_channelz_node(lb_channel_);
1600
1577
  channelz::ChannelNode* parent_channelz_node =
1601
- grpc_channel_args_find_pointer<channelz::ChannelNode>(
1602
- &args, GRPC_ARG_CHANNELZ_CHANNEL_NODE);
1578
+ args.GetObject<channelz::ChannelNode>();
1603
1579
  if (child_channelz_node != nullptr && parent_channelz_node != nullptr) {
1604
1580
  parent_channelz_node->AddChildChannel(child_channelz_node->uuid());
1605
1581
  parent_channelz_node_ = parent_channelz_node->Ref();
@@ -1734,22 +1710,19 @@ void GrpcLb::OnFallbackTimerLocked(grpc_error_handle error) {
1734
1710
  // code for interacting with the child policy
1735
1711
  //
1736
1712
 
1737
- grpc_channel_args* GrpcLb::CreateChildPolicyArgsLocked(
1713
+ ChannelArgs GrpcLb::CreateChildPolicyArgsLocked(
1738
1714
  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));
1715
+ ChannelArgs r =
1716
+ args_.Set(GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER,
1717
+ is_backend_from_grpclb_load_balancer);
1743
1718
  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));
1719
+ r = r.Set(GRPC_ARG_INHIBIT_HEALTH_CHECKING, 1);
1746
1720
  }
1747
- return grpc_channel_args_copy_and_add(args_, args_to_add.data(),
1748
- args_to_add.size());
1721
+ return r;
1749
1722
  }
1750
1723
 
1751
1724
  OrphanablePtr<LoadBalancingPolicy> GrpcLb::CreateChildPolicyLocked(
1752
- const grpc_channel_args* args) {
1725
+ const ChannelArgs& args) {
1753
1726
  LoadBalancingPolicy::Args lb_policy_args;
1754
1727
  lb_policy_args.work_serializer = work_serializer();
1755
1728
  lb_policy_args.args = args;
@@ -1793,7 +1766,7 @@ void GrpcLb::CreateOrUpdateChildPolicyLocked() {
1793
1766
  }
1794
1767
  update_args.args =
1795
1768
  CreateChildPolicyArgsLocked(is_backend_from_grpclb_load_balancer);
1796
- GPR_ASSERT(update_args.args != nullptr);
1769
+ GPR_ASSERT(update_args.args != ChannelArgs());
1797
1770
  update_args.config = config_->child_policy();
1798
1771
  // Create child policy if needed.
1799
1772
  if (child_policy_ == nullptr) {
@@ -1868,28 +1841,27 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1868
1841
  return MakeOrphanable<GrpcLb>(std::move(args));
1869
1842
  }
1870
1843
 
1871
- const char* name() const override { return kGrpclb; }
1844
+ absl::string_view name() const override { return kGrpclb; }
1872
1845
 
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));
1846
+ absl::StatusOr<RefCountedPtr<LoadBalancingPolicy::Config>>
1847
+ ParseLoadBalancingConfig(const Json& json) const override {
1876
1848
  if (json.type() == Json::Type::JSON_NULL) {
1877
1849
  return MakeRefCounted<GrpcLbConfig>(nullptr, "");
1878
1850
  }
1879
- std::vector<grpc_error_handle> error_list;
1880
- Json child_policy_config_json_tmp;
1881
- const Json* child_policy_config_json;
1851
+ std::vector<std::string> error_list;
1882
1852
  std::string service_name;
1883
1853
  auto it = json.object_value().find("serviceName");
1884
1854
  if (it != json.object_value().end()) {
1885
1855
  const Json& service_name_json = it->second;
1886
1856
  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"));
1857
+ error_list.emplace_back(
1858
+ "field:serviceName error:type should be string");
1889
1859
  } else {
1890
1860
  service_name = service_name_json.string_value();
1891
1861
  }
1892
1862
  }
1863
+ Json child_policy_config_json_tmp;
1864
+ const Json* child_policy_config_json;
1893
1865
  it = json.object_value().find("childPolicy");
1894
1866
  if (it == json.object_value().end()) {
1895
1867
  child_policy_config_json_tmp = Json::Array{Json::Object{
@@ -1899,22 +1871,21 @@ class GrpcLbFactory : public LoadBalancingPolicyFactory {
1899
1871
  } else {
1900
1872
  child_policy_config_json = &it->second;
1901
1873
  }
1902
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
1903
- RefCountedPtr<LoadBalancingPolicy::Config> child_policy_config =
1874
+ auto child_policy_config =
1904
1875
  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));
1876
+ *child_policy_config_json);
1877
+ if (!child_policy_config.ok()) {
1878
+ error_list.emplace_back(
1879
+ absl::StrCat("error parsing childPolicy field: ",
1880
+ child_policy_config.status().message()));
1911
1881
  }
1912
1882
  if (error_list.empty()) {
1913
- return MakeRefCounted<GrpcLbConfig>(std::move(child_policy_config),
1883
+ return MakeRefCounted<GrpcLbConfig>(std::move(*child_policy_config),
1914
1884
  std::move(service_name));
1915
1885
  } else {
1916
- *error = GRPC_ERROR_CREATE_FROM_VECTOR("GrpcLb Parser", &error_list);
1917
- return nullptr;
1886
+ return absl::InvalidArgumentError(
1887
+ absl::StrCat("errors parsing grpclb LB policy config: [",
1888
+ absl::StrJoin(error_list, "; "), "]"));
1918
1889
  }
1919
1890
  }
1920
1891
  };
@@ -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