grpc 1.48.0-x86_64-linux → 1.49.0.pre1-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 +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/2.5/grpc_c.so +0 -0
  659. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  660. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  661. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  662. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  663. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  664. data/src/ruby/lib/grpc/version.rb +1 -1
  665. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  666. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  667. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  668. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  669. data/third_party/upb/upb/arena.c +277 -0
  670. data/third_party/upb/upb/arena.h +225 -0
  671. data/third_party/upb/upb/array.c +114 -0
  672. data/third_party/upb/upb/array.h +83 -0
  673. data/third_party/upb/upb/collections.h +36 -0
  674. data/third_party/upb/upb/decode.c +161 -65
  675. data/third_party/upb/upb/decode.h +1 -0
  676. data/third_party/upb/upb/decode_fast.c +1 -1
  677. data/third_party/upb/upb/def.c +10 -2
  678. data/third_party/upb/upb/def.h +8 -1
  679. data/third_party/upb/upb/def.hpp +7 -4
  680. data/third_party/upb/upb/encode.c +29 -20
  681. data/third_party/upb/upb/encode.h +16 -6
  682. data/third_party/upb/upb/extension_registry.c +93 -0
  683. data/third_party/upb/upb/extension_registry.h +84 -0
  684. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  685. data/third_party/upb/upb/internal/table.h +385 -0
  686. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  687. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  688. data/third_party/upb/upb/json_decode.c +1512 -0
  689. data/third_party/upb/upb/json_decode.h +47 -0
  690. data/third_party/upb/upb/json_encode.c +7 -3
  691. data/third_party/upb/upb/json_encode.h +6 -3
  692. data/third_party/upb/upb/map.c +108 -0
  693. data/third_party/upb/upb/map.h +117 -0
  694. data/third_party/upb/upb/message_value.h +66 -0
  695. data/third_party/upb/upb/mini_table.c +1147 -0
  696. data/third_party/upb/upb/mini_table.h +189 -0
  697. data/third_party/upb/upb/mini_table.hpp +112 -0
  698. data/third_party/upb/upb/msg.c +2 -62
  699. data/third_party/upb/upb/msg.h +2 -45
  700. data/third_party/upb/upb/msg_internal.h +28 -22
  701. data/third_party/upb/upb/port_def.inc +2 -1
  702. data/third_party/upb/upb/port_undef.inc +1 -0
  703. data/third_party/upb/upb/reflection.c +2 -159
  704. data/third_party/upb/upb/reflection.h +2 -112
  705. data/third_party/upb/upb/status.c +86 -0
  706. data/third_party/upb/upb/status.h +66 -0
  707. data/third_party/upb/upb/table.c +2 -2
  708. data/third_party/upb/upb/table_internal.h +3 -352
  709. data/third_party/upb/upb/text_encode.c +3 -2
  710. data/third_party/upb/upb/upb.c +4 -290
  711. data/third_party/upb/upb/upb.h +7 -196
  712. metadata +90 -38
  713. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  714. data/src/core/lib/iomgr/error_internal.h +0 -66
  715. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  716. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  717. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  718. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  719. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  720. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  721. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -19,7 +19,6 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <stddef.h>
23
22
  #include <stdint.h>
24
23
 
25
24
  #include <algorithm>
@@ -37,13 +36,12 @@
37
36
  #include "re2/re2.h"
38
37
  #include "upb/def.h"
39
38
 
40
- #include "src/core/ext/xds/upb_utils.h"
41
39
  #include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
42
40
  #include "src/core/ext/xds/xds_http_filters.h"
41
+ #include "src/core/ext/xds/xds_resource_type.h"
43
42
  #include "src/core/ext/xds/xds_resource_type_impl.h"
44
43
  #include "src/core/lib/channel/status_util.h"
45
44
  #include "src/core/lib/gprpp/time.h"
46
- #include "src/core/lib/iomgr/error.h"
47
45
  #include "src/core/lib/matchers/matchers.h"
48
46
 
49
47
  namespace grpc_core {
@@ -54,6 +52,10 @@ struct XdsRouteConfigResource {
54
52
  using TypedPerFilterConfig =
55
53
  std::map<std::string, XdsHttpFilterImpl::FilterConfig>;
56
54
 
55
+ using ClusterSpecifierPluginMap =
56
+ std::map<std::string /*cluster_specifier_plugin_name*/,
57
+ std::string /*LB policy config*/>;
58
+
57
59
  struct RetryPolicy {
58
60
  internal::StatusCodeSet retry_on;
59
61
  uint32_t num_retries;
@@ -122,6 +124,14 @@ struct XdsRouteConfigResource {
122
124
  std::string ToString() const;
123
125
  };
124
126
 
127
+ struct ClusterName {
128
+ std::string cluster_name;
129
+
130
+ bool operator==(const ClusterName& other) const {
131
+ return cluster_name == other.cluster_name;
132
+ }
133
+ };
134
+
125
135
  struct ClusterWeight {
126
136
  std::string name;
127
137
  uint32_t weight;
@@ -134,14 +144,21 @@ struct XdsRouteConfigResource {
134
144
  std::string ToString() const;
135
145
  };
136
146
 
147
+ struct ClusterSpecifierPluginName {
148
+ std::string cluster_specifier_plugin_name;
149
+
150
+ bool operator==(const ClusterSpecifierPluginName& other) const {
151
+ return cluster_specifier_plugin_name ==
152
+ other.cluster_specifier_plugin_name;
153
+ }
154
+ };
155
+
137
156
  std::vector<HashPolicy> hash_policies;
138
157
  absl::optional<RetryPolicy> retry_policy;
139
158
 
140
159
  // Action for this route.
141
- static constexpr size_t kClusterIndex = 0;
142
- static constexpr size_t kWeightedClustersIndex = 1;
143
- static constexpr size_t kClusterSpecifierPluginIndex = 2;
144
- absl::variant<std::string, std::vector<ClusterWeight>, std::string>
160
+ absl::variant<ClusterName, std::vector<ClusterWeight>,
161
+ ClusterSpecifierPluginName>
145
162
  action;
146
163
  // Storing the timeout duration from route action:
147
164
  // RouteAction.max_stream_duration.grpc_timeout_header_max or
@@ -185,9 +202,7 @@ struct XdsRouteConfigResource {
185
202
  };
186
203
 
187
204
  std::vector<VirtualHost> virtual_hosts;
188
- std::map<std::string /*cluster_specifier_plugin_name*/,
189
- std::string /*LB policy config*/>
190
- cluster_specifier_plugin_map;
205
+ ClusterSpecifierPluginMap cluster_specifier_plugin_map;
191
206
 
192
207
  bool operator==(const XdsRouteConfigResource& other) const {
193
208
  return virtual_hosts == other.virtual_hosts &&
@@ -195,10 +210,9 @@ struct XdsRouteConfigResource {
195
210
  }
196
211
  std::string ToString() const;
197
212
 
198
- static grpc_error_handle Parse(
199
- const XdsEncodingContext& context,
200
- const envoy_config_route_v3_RouteConfiguration* route_config,
201
- XdsRouteConfigResource* rds_update);
213
+ static absl::StatusOr<XdsRouteConfigResource> Parse(
214
+ const XdsResourceType::DecodeContext& context,
215
+ const envoy_config_route_v3_RouteConfiguration* route_config);
202
216
  };
203
217
 
204
218
  class XdsRouteConfigResourceType
@@ -212,9 +226,9 @@ class XdsRouteConfigResourceType
212
226
  return "envoy.api.v2.RouteConfiguration";
213
227
  }
214
228
 
215
- absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
216
- absl::string_view serialized_resource,
217
- bool /*is_v2*/) const override;
229
+ absl::StatusOr<DecodeResult> Decode(
230
+ const XdsResourceType::DecodeContext& context,
231
+ absl::string_view serialized_resource, bool /*is_v2*/) const override;
218
232
 
219
233
  void InitUpbSymtab(upb_DefPool* symtab) const override {
220
234
  envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab);
@@ -218,7 +218,7 @@ const XdsHttpFilterImpl::FilterConfig* FindFilterConfigOverride(
218
218
 
219
219
  } // namespace
220
220
 
221
- XdsRouting::GeneratePerHttpFilterConfigsResult
221
+ absl::StatusOr<XdsRouting::GeneratePerHttpFilterConfigsResult>
222
222
  XdsRouting::GeneratePerHTTPFilterConfigs(
223
223
  const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
224
224
  http_filters,
@@ -226,7 +226,7 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
226
226
  const XdsRouteConfigResource::Route& route,
227
227
  const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
228
228
  cluster_weight,
229
- grpc_channel_args* args) {
229
+ const ChannelArgs& args) {
230
230
  GeneratePerHttpFilterConfigsResult result;
231
231
  result.args = args;
232
232
  for (const auto& http_filter : http_filters) {
@@ -250,12 +250,9 @@ XdsRouting::GeneratePerHTTPFilterConfigs(
250
250
  auto method_config_field =
251
251
  filter_impl->GenerateServiceConfig(http_filter.config, config_override);
252
252
  if (!method_config_field.ok()) {
253
- grpc_channel_args_destroy(result.args);
254
- result.args = nullptr;
255
- result.error = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
253
+ return absl::FailedPreconditionError(absl::StrCat(
256
254
  "failed to generate method config for HTTP filter ", http_filter.name,
257
255
  ": ", method_config_field.status().ToString()));
258
- break;
259
256
  }
260
257
  result.per_filter_configs[method_config_field->service_config_field_name]
261
258
  .push_back(method_config_field->element);
@@ -27,14 +27,13 @@
27
27
  #include <string>
28
28
  #include <vector>
29
29
 
30
+ #include "absl/status/statusor.h"
30
31
  #include "absl/strings/string_view.h"
31
32
  #include "absl/types/optional.h"
32
33
 
33
- #include <grpc/impl/codegen/grpc_types.h>
34
-
35
34
  #include "src/core/ext/xds/xds_listener.h"
36
35
  #include "src/core/ext/xds/xds_route_config.h"
37
- #include "src/core/lib/iomgr/error.h"
36
+ #include "src/core/lib/channel/channel_args.h"
38
37
  #include "src/core/lib/transport/metadata_batch.h"
39
38
 
40
39
  namespace grpc_core {
@@ -83,22 +82,21 @@ class XdsRouting {
83
82
  std::string* concatenated_value);
84
83
 
85
84
  struct GeneratePerHttpFilterConfigsResult {
86
- // Map of field name to list of elements for that field
85
+ // Map of service config field name to list of elements for that field.
87
86
  std::map<std::string, std::vector<std::string>> per_filter_configs;
88
- grpc_error_handle error = GRPC_ERROR_NONE;
89
- // Guaranteed to be nullptr if error is GRPC_ERROR_NONE
90
- grpc_channel_args* args = nullptr;
87
+ ChannelArgs args;
91
88
  };
92
89
 
93
90
  // Generates a map of per_filter_configs. \a args is consumed.
94
- static GeneratePerHttpFilterConfigsResult GeneratePerHTTPFilterConfigs(
91
+ static absl::StatusOr<GeneratePerHttpFilterConfigsResult>
92
+ GeneratePerHTTPFilterConfigs(
95
93
  const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
96
94
  http_filters,
97
95
  const XdsRouteConfigResource::VirtualHost& vhost,
98
96
  const XdsRouteConfigResource::Route& route,
99
97
  const XdsRouteConfigResource::Route::RouteAction::ClusterWeight*
100
98
  cluster_weight,
101
- grpc_channel_args* args);
99
+ const ChannelArgs& args);
102
100
  };
103
101
 
104
102
  } // namespace grpc_core
@@ -30,7 +30,6 @@
30
30
  #include <vector>
31
31
 
32
32
  #include "absl/base/thread_annotations.h"
33
- #include "absl/container/inlined_vector.h"
34
33
  #include "absl/status/status.h"
35
34
  #include "absl/status/statusor.h"
36
35
  #include "absl/strings/match.h"
@@ -55,7 +54,7 @@
55
54
  #include "src/core/ext/xds/xds_bootstrap.h"
56
55
  #include "src/core/ext/xds/xds_certificate_provider.h"
57
56
  #include "src/core/ext/xds/xds_channel_stack_modifier.h"
58
- #include "src/core/ext/xds/xds_client.h"
57
+ #include "src/core/ext/xds/xds_client_grpc.h"
59
58
  #include "src/core/ext/xds/xds_common_types.h"
60
59
  #include "src/core/ext/xds/xds_http_filters.h"
61
60
  #include "src/core/ext/xds/xds_listener.h"
@@ -69,6 +68,7 @@
69
68
  #include "src/core/lib/channel/channel_fwd.h"
70
69
  #include "src/core/lib/config/core_configuration.h"
71
70
  #include "src/core/lib/debug/trace.h"
71
+ #include "src/core/lib/gprpp/debug_location.h"
72
72
  #include "src/core/lib/gprpp/host_port.h"
73
73
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
74
74
  #include "src/core/lib/gprpp/sync.h"
@@ -88,7 +88,6 @@
88
88
  #include "src/core/lib/service_config/service_config_impl.h"
89
89
  #include "src/core/lib/surface/api_trace.h"
90
90
  #include "src/core/lib/surface/server.h"
91
- #include "src/core/lib/transport/error_utils.h"
92
91
  #include "src/core/lib/transport/metadata_batch.h"
93
92
  #include "src/core/lib/uri/uri_parser.h"
94
93
 
@@ -102,9 +101,13 @@ TraceFlag grpc_xds_server_config_fetcher_trace(false,
102
101
  // listeners from the xDS control plane.
103
102
  class XdsServerConfigFetcher : public grpc_server_config_fetcher {
104
103
  public:
105
- XdsServerConfigFetcher(RefCountedPtr<XdsClient> xds_client,
104
+ XdsServerConfigFetcher(RefCountedPtr<GrpcXdsClient> xds_client,
106
105
  grpc_server_xds_status_notifier notifier);
107
106
 
107
+ ~XdsServerConfigFetcher() override {
108
+ xds_client_.reset(DEBUG_LOCATION, "XdsServerConfigFetcher");
109
+ }
110
+
108
111
  void StartWatch(std::string listening_address,
109
112
  std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
110
113
  watcher) override;
@@ -120,7 +123,7 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
120
123
  private:
121
124
  class ListenerWatcher;
122
125
 
123
- const RefCountedPtr<XdsClient> xds_client_;
126
+ RefCountedPtr<GrpcXdsClient> xds_client_;
124
127
  const grpc_server_xds_status_notifier serving_status_notifier_;
125
128
  Mutex mu_;
126
129
  std::map<grpc_server_config_fetcher::WatcherInterface*, ListenerWatcher*>
@@ -140,12 +143,16 @@ class XdsServerConfigFetcher : public grpc_server_config_fetcher {
140
143
  class XdsServerConfigFetcher::ListenerWatcher
141
144
  : public XdsListenerResourceType::WatcherInterface {
142
145
  public:
143
- ListenerWatcher(RefCountedPtr<XdsClient> xds_client,
146
+ ListenerWatcher(RefCountedPtr<GrpcXdsClient> xds_client,
144
147
  std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
145
148
  server_config_watcher,
146
149
  grpc_server_xds_status_notifier serving_status_notifier,
147
150
  std::string listening_address);
148
151
 
152
+ ~ListenerWatcher() override {
153
+ xds_client_.reset(DEBUG_LOCATION, "ListenerWatcher");
154
+ }
155
+
149
156
  void OnResourceChanged(XdsListenerResource listener) override;
150
157
 
151
158
  void OnError(absl::Status status) override;
@@ -172,7 +179,7 @@ class XdsServerConfigFetcher::ListenerWatcher
172
179
  FilterChainMatchManager* filter_chain_match_manager)
173
180
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
174
181
 
175
- const RefCountedPtr<XdsClient> xds_client_;
182
+ RefCountedPtr<GrpcXdsClient> xds_client_;
176
183
  const std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
177
184
  server_config_watcher_;
178
185
  const grpc_server_xds_status_notifier serving_status_notifier_;
@@ -192,13 +199,17 @@ class XdsServerConfigFetcher::ListenerWatcher
192
199
  class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
193
200
  : public grpc_server_config_fetcher::ConnectionManager {
194
201
  public:
195
- FilterChainMatchManager(RefCountedPtr<XdsClient> xds_client,
202
+ FilterChainMatchManager(RefCountedPtr<GrpcXdsClient> xds_client,
196
203
  XdsListenerResource::FilterChainMap filter_chain_map,
197
204
  absl::optional<XdsListenerResource::FilterChainData>
198
205
  default_filter_chain);
199
206
 
200
- absl::StatusOr<grpc_channel_args*> UpdateChannelArgsForConnection(
201
- grpc_channel_args* args, grpc_endpoint* tcp) override;
207
+ ~FilterChainMatchManager() override {
208
+ xds_client_.reset(DEBUG_LOCATION, "FilterChainMatchManager");
209
+ }
210
+
211
+ absl::StatusOr<ChannelArgs> UpdateChannelArgsForConnection(
212
+ const ChannelArgs& args, grpc_endpoint* tcp) override;
202
213
 
203
214
  void Orphan() override;
204
215
 
@@ -246,7 +257,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
246
257
  void OnError(const std::string& resource_name, absl::Status status);
247
258
  void OnResourceDoesNotExist(const std::string& resource_name);
248
259
 
249
- RefCountedPtr<XdsClient> xds_client_;
260
+ RefCountedPtr<GrpcXdsClient> xds_client_;
250
261
  // This ref is only kept around till the FilterChainMatchManager becomes
251
262
  // ready.
252
263
  RefCountedPtr<ListenerWatcher> listener_watcher_;
@@ -402,11 +413,15 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
402
413
  : public ServerConfigSelectorProvider {
403
414
  public:
404
415
  DynamicXdsServerConfigSelectorProvider(
405
- RefCountedPtr<XdsClient> xds_client, std::string resource_name,
416
+ RefCountedPtr<GrpcXdsClient> xds_client, std::string resource_name,
406
417
  absl::StatusOr<XdsRouteConfigResource> initial_resource,
407
418
  std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
408
419
  http_filters);
409
420
 
421
+ ~DynamicXdsServerConfigSelectorProvider() override {
422
+ xds_client_.reset(DEBUG_LOCATION, "DynamicXdsServerConfigSelectorProvider");
423
+ }
424
+
410
425
  void Orphan() override;
411
426
 
412
427
  absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
@@ -421,7 +436,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
421
436
  void OnError(absl::Status status);
422
437
  void OnResourceDoesNotExist();
423
438
 
424
- RefCountedPtr<XdsClient> xds_client_;
439
+ RefCountedPtr<GrpcXdsClient> xds_client_;
425
440
  std::string resource_name_;
426
441
  std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
427
442
  http_filters_;
@@ -459,7 +474,7 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
459
474
  //
460
475
 
461
476
  XdsServerConfigFetcher::XdsServerConfigFetcher(
462
- RefCountedPtr<XdsClient> xds_client,
477
+ RefCountedPtr<GrpcXdsClient> xds_client,
463
478
  grpc_server_xds_status_notifier notifier)
464
479
  : xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) {
465
480
  GPR_ASSERT(xds_client_ != nullptr);
@@ -481,8 +496,8 @@ void XdsServerConfigFetcher::StartWatch(
481
496
  std::unique_ptr<grpc_server_config_fetcher::WatcherInterface> watcher) {
482
497
  grpc_server_config_fetcher::WatcherInterface* watcher_ptr = watcher.get();
483
498
  auto listener_watcher = MakeRefCounted<ListenerWatcher>(
484
- xds_client_, std::move(watcher), serving_status_notifier_,
485
- listening_address);
499
+ xds_client_->Ref(DEBUG_LOCATION, "ListenerWatcher"), std::move(watcher),
500
+ serving_status_notifier_, listening_address);
486
501
  auto* listener_watcher_ptr = listener_watcher.get();
487
502
  XdsListenerResourceType::StartWatch(
488
503
  xds_client_.get(),
@@ -515,7 +530,7 @@ void XdsServerConfigFetcher::CancelWatch(
515
530
  //
516
531
 
517
532
  XdsServerConfigFetcher::ListenerWatcher::ListenerWatcher(
518
- RefCountedPtr<XdsClient> xds_client,
533
+ RefCountedPtr<GrpcXdsClient> xds_client,
519
534
  std::unique_ptr<grpc_server_config_fetcher::WatcherInterface>
520
535
  server_config_watcher,
521
536
  grpc_server_xds_status_notifier serving_status_notifier,
@@ -539,7 +554,8 @@ void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
539
554
  return;
540
555
  }
541
556
  auto new_filter_chain_match_manager = MakeRefCounted<FilterChainMatchManager>(
542
- xds_client_, std::move(listener.filter_chain_map),
557
+ xds_client_->Ref(DEBUG_LOCATION, "FilterChainMatchManager"),
558
+ std::move(listener.filter_chain_map),
543
559
  std::move(listener.default_filter_chain));
544
560
  MutexLock lock(&mu_);
545
561
  if (filter_chain_match_manager_ == nullptr ||
@@ -642,7 +658,7 @@ void XdsServerConfigFetcher::ListenerWatcher::
642
658
 
643
659
  XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
644
660
  FilterChainMatchManager(
645
- RefCountedPtr<XdsClient> xds_client,
661
+ RefCountedPtr<GrpcXdsClient> xds_client,
646
662
  XdsListenerResource::FilterChainMap filter_chain_map,
647
663
  absl::optional<XdsListenerResource::FilterChainData>
648
664
  default_filter_chain)
@@ -945,13 +961,10 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForSourceType(
945
961
  if (!SplitHostPort(source_uri->path(), &host, &port)) {
946
962
  return nullptr;
947
963
  }
948
- grpc_resolved_address source_addr;
949
- grpc_error_handle error = grpc_string_to_sockaddr(
950
- &source_addr, host.c_str(), 0 /* port doesn't matter here */);
951
- if (!GRPC_ERROR_IS_NONE(error)) {
952
- gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
953
- host.c_str());
954
- GRPC_ERROR_UNREF(error);
964
+ auto source_addr = StringToSockaddr(host, 0); // Port doesn't matter here.
965
+ if (!source_addr.ok()) {
966
+ gpr_log(GPR_DEBUG, "Could not parse \"%s\" as socket address: %s",
967
+ host.c_str(), source_addr.status().ToString().c_str());
955
968
  return nullptr;
956
969
  }
957
970
  // Use kAny only if kSameIporLoopback and kExternal are empty
@@ -965,20 +978,20 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForSourceType(
965
978
  return FindFilterChainDataForSourceIp(
966
979
  source_types_array[static_cast<int>(
967
980
  XdsListenerResource::FilterChainMap::ConnectionSourceType::kAny)],
968
- &source_addr, port);
981
+ &*source_addr, port);
969
982
  }
970
- if (IsLoopbackIp(&source_addr) || host == destination_ip) {
983
+ if (IsLoopbackIp(&*source_addr) || host == destination_ip) {
971
984
  return FindFilterChainDataForSourceIp(
972
985
  source_types_array[static_cast<int>(
973
986
  XdsListenerResource::FilterChainMap::ConnectionSourceType::
974
987
  kSameIpOrLoopback)],
975
- &source_addr, port);
988
+ &*source_addr, port);
976
989
  } else {
977
990
  return FindFilterChainDataForSourceIp(
978
991
  source_types_array[static_cast<int>(
979
992
  XdsListenerResource::FilterChainMap::ConnectionSourceType::
980
993
  kExternal)],
981
- &source_addr, port);
994
+ &*source_addr, port);
982
995
  }
983
996
  }
984
997
 
@@ -996,13 +1009,11 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
996
1009
  if (!SplitHostPort(destination_uri->path(), &host, &port)) {
997
1010
  return nullptr;
998
1011
  }
999
- grpc_resolved_address destination_addr;
1000
- grpc_error_handle error = grpc_string_to_sockaddr(
1001
- &destination_addr, host.c_str(), 0 /* port doesn't matter here */);
1002
- if (!GRPC_ERROR_IS_NONE(error)) {
1003
- gpr_log(GPR_DEBUG, "Could not parse string to socket address: %s",
1004
- host.c_str());
1005
- GRPC_ERROR_UNREF(error);
1012
+ auto destination_addr =
1013
+ StringToSockaddr(host, 0); // Port doesn't matter here.
1014
+ if (!destination_addr.ok()) {
1015
+ gpr_log(GPR_DEBUG, "Could not parse \"%s\" as socket address: %s",
1016
+ host.c_str(), destination_addr.status().ToString().c_str());
1006
1017
  return nullptr;
1007
1018
  }
1008
1019
  const XdsListenerResource::FilterChainMap::DestinationIp* best_match =
@@ -1020,7 +1031,7 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
1020
1031
  entry.prefix_range->prefix_len) {
1021
1032
  continue;
1022
1033
  }
1023
- if (grpc_sockaddr_match_subnet(&destination_addr,
1034
+ if (grpc_sockaddr_match_subnet(&*destination_addr,
1024
1035
  &entry.prefix_range->address,
1025
1036
  entry.prefix_range->prefix_len)) {
1026
1037
  best_match = &entry;
@@ -1031,19 +1042,18 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
1031
1042
  host);
1032
1043
  }
1033
1044
 
1034
- absl::StatusOr<grpc_channel_args*> XdsServerConfigFetcher::ListenerWatcher::
1045
+ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
1035
1046
  FilterChainMatchManager::UpdateChannelArgsForConnection(
1036
- grpc_channel_args* args, grpc_endpoint* tcp) {
1047
+ const ChannelArgs& input_args, grpc_endpoint* tcp) {
1048
+ ChannelArgs args = input_args;
1037
1049
  const auto* filter_chain = FindFilterChainDataForDestinationIp(
1038
1050
  filter_chain_map_.destination_ip_vector, tcp);
1039
1051
  if (filter_chain == nullptr && default_filter_chain_.has_value()) {
1040
1052
  filter_chain = &default_filter_chain_.value();
1041
1053
  }
1042
1054
  if (filter_chain == nullptr) {
1043
- grpc_channel_args_destroy(args);
1044
1055
  return absl::UnavailableError("No matching filter chain found");
1045
1056
  }
1046
- absl::InlinedVector<grpc_arg, 3> args_to_add;
1047
1057
  RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider;
1048
1058
  RefCountedPtr<XdsChannelStackModifier> channel_stack_modifier;
1049
1059
  RefCountedPtr<XdsCertificateProvider> xds_certificate_provider;
@@ -1084,34 +1094,27 @@ absl::StatusOr<grpc_channel_args*> XdsServerConfigFetcher::ListenerWatcher::
1084
1094
  }
1085
1095
  server_config_selector_provider =
1086
1096
  MakeRefCounted<DynamicXdsServerConfigSelectorProvider>(
1087
- xds_client_,
1097
+ xds_client_->Ref(DEBUG_LOCATION,
1098
+ "DynamicXdsServerConfigSelectorProvider"),
1088
1099
  filter_chain->http_connection_manager.route_config_name,
1089
1100
  std::move(initial_resource),
1090
1101
  filter_chain->http_connection_manager.http_filters);
1091
1102
  }
1092
- args_to_add.emplace_back(server_config_selector_provider->MakeChannelArg());
1093
- args_to_add.emplace_back(channel_stack_modifier->MakeChannelArg());
1103
+ args = args.SetObject(server_config_selector_provider)
1104
+ .SetObject(channel_stack_modifier);
1094
1105
  }
1095
1106
  // Add XdsCertificateProvider if credentials are xDS.
1096
- grpc_server_credentials* server_creds =
1097
- grpc_find_server_credentials_in_args(args);
1107
+ auto* server_creds = args.GetObject<grpc_server_credentials>();
1098
1108
  if (server_creds != nullptr &&
1099
1109
  server_creds->type() == XdsServerCredentials::Type()) {
1100
1110
  absl::StatusOr<RefCountedPtr<XdsCertificateProvider>> result =
1101
1111
  CreateOrGetXdsCertificateProviderFromFilterChainData(filter_chain);
1102
1112
  if (!result.ok()) {
1103
- grpc_channel_args_destroy(args);
1104
1113
  return result.status();
1105
1114
  }
1106
1115
  xds_certificate_provider = std::move(*result);
1107
1116
  GPR_ASSERT(xds_certificate_provider != nullptr);
1108
- args_to_add.emplace_back(xds_certificate_provider->MakeChannelArg());
1109
- }
1110
- if (!args_to_add.empty()) {
1111
- grpc_channel_args* updated_args = grpc_channel_args_copy_and_add(
1112
- args, args_to_add.data(), args_to_add.size());
1113
- grpc_channel_args_destroy(args);
1114
- args = updated_args;
1117
+ args = args.SetObject(xds_certificate_provider);
1115
1118
  }
1116
1119
  return args;
1117
1120
  }
@@ -1141,15 +1144,12 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1141
1144
  config_selector_route.unsupported_action =
1142
1145
  absl::get_if<XdsRouteConfigResource::Route::NonForwardingAction>(
1143
1146
  &route.action) == nullptr;
1144
- XdsRouting::GeneratePerHttpFilterConfigsResult result =
1145
- XdsRouting::GeneratePerHTTPFilterConfigs(http_filters, vhost, route,
1146
- nullptr, nullptr);
1147
- if (!GRPC_ERROR_IS_NONE(result.error)) {
1148
- return grpc_error_to_absl_status(result.error);
1149
- }
1147
+ auto result = XdsRouting::GeneratePerHTTPFilterConfigs(
1148
+ http_filters, vhost, route, nullptr, ChannelArgs());
1149
+ if (!result.ok()) return result.status();
1150
1150
  std::vector<std::string> fields;
1151
- fields.reserve(result.per_filter_configs.size());
1152
- for (const auto& p : result.per_filter_configs) {
1151
+ fields.reserve(result->per_filter_configs.size());
1152
+ for (const auto& p : result->per_filter_configs) {
1153
1153
  fields.emplace_back(absl::StrCat(" \"", p.first, "\": [\n",
1154
1154
  absl::StrJoin(p.second, ",\n"),
1155
1155
  "\n ]"));
@@ -1165,12 +1165,9 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1165
1165
  absl::StrJoin(fields, ",\n"),
1166
1166
  "\n } ]\n"
1167
1167
  "}");
1168
- grpc_error_handle error = GRPC_ERROR_NONE;
1169
1168
  config_selector_route.method_config =
1170
- ServiceConfigImpl::Create(result.args, json.c_str(), &error);
1171
- GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
1169
+ ServiceConfigImpl::Create(result->args, json.c_str()).value();
1172
1170
  }
1173
- grpc_channel_args_destroy(result.args);
1174
1171
  }
1175
1172
  }
1176
1173
  return config_selector;
@@ -1236,7 +1233,7 @@ ServerConfigSelector::CallConfig XdsServerConfigFetcher::ListenerWatcher::
1236
1233
  XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1237
1234
  DynamicXdsServerConfigSelectorProvider::
1238
1235
  DynamicXdsServerConfigSelectorProvider(
1239
- RefCountedPtr<XdsClient> xds_client, std::string resource_name,
1236
+ RefCountedPtr<GrpcXdsClient> xds_client, std::string resource_name,
1240
1237
  absl::StatusOr<XdsRouteConfigResource> initial_resource,
1241
1238
  std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
1242
1239
  http_filters)
@@ -1333,25 +1330,22 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
1333
1330
  grpc_server_xds_status_notifier notifier, const grpc_channel_args* args) {
1334
1331
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1335
1332
  grpc_core::ExecCtx exec_ctx;
1336
- args = grpc_core::CoreConfiguration::Get()
1337
- .channel_args_preconditioning()
1338
- .PreconditionChannelArgs(args)
1339
- .ToC();
1333
+ grpc_core::ChannelArgs channel_args = grpc_core::CoreConfiguration::Get()
1334
+ .channel_args_preconditioning()
1335
+ .PreconditionChannelArgs(args);
1340
1336
  GRPC_API_TRACE(
1341
1337
  "grpc_server_config_fetcher_xds_create(notifier={on_serving_status_"
1342
1338
  "update=%p, user_data=%p}, args=%p)",
1343
1339
  3, (notifier.on_serving_status_update, notifier.user_data, args));
1344
- grpc_error_handle error = GRPC_ERROR_NONE;
1345
- grpc_core::RefCountedPtr<grpc_core::XdsClient> xds_client =
1346
- grpc_core::XdsClient::GetOrCreate(args, &error);
1347
- grpc_channel_args_destroy(args);
1348
- if (!GRPC_ERROR_IS_NONE(error)) {
1340
+ auto xds_client = grpc_core::GrpcXdsClient::GetOrCreate(
1341
+ channel_args, "XdsServerConfigFetcher");
1342
+ if (!xds_client.ok()) {
1349
1343
  gpr_log(GPR_ERROR, "Failed to create xds client: %s",
1350
- grpc_error_std_string(error).c_str());
1351
- GRPC_ERROR_UNREF(error);
1344
+ xds_client.status().ToString().c_str());
1352
1345
  return nullptr;
1353
1346
  }
1354
- if (xds_client->bootstrap()
1347
+ if ((*xds_client)
1348
+ ->bootstrap()
1355
1349
  .server_listener_resource_name_template()
1356
1350
  .empty()) {
1357
1351
  gpr_log(GPR_ERROR,
@@ -1359,5 +1353,6 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
1359
1353
  "file.");
1360
1354
  return nullptr;
1361
1355
  }
1362
- return new grpc_core::XdsServerConfigFetcher(std::move(xds_client), notifier);
1356
+ return new grpc_core::XdsServerConfigFetcher(std::move(*xds_client),
1357
+ notifier);
1363
1358
  }