grpc 1.48.0 → 1.49.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (715) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +104 -41
  3. data/include/grpc/event_engine/event_engine.h +19 -16
  4. data/include/grpc/impl/codegen/grpc_types.h +3 -8
  5. data/include/grpc/impl/codegen/port_platform.h +0 -8
  6. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +3 -3
  7. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  8. data/src/core/ext/filters/client_channel/client_channel.cc +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/version.rb +1 -1
  659. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  660. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  661. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  662. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  663. data/third_party/upb/upb/arena.c +277 -0
  664. data/third_party/upb/upb/arena.h +225 -0
  665. data/third_party/upb/upb/array.c +114 -0
  666. data/third_party/upb/upb/array.h +83 -0
  667. data/third_party/upb/upb/collections.h +36 -0
  668. data/third_party/upb/upb/decode.c +161 -65
  669. data/third_party/upb/upb/decode.h +1 -0
  670. data/third_party/upb/upb/decode_fast.c +1 -1
  671. data/third_party/upb/upb/def.c +10 -2
  672. data/third_party/upb/upb/def.h +8 -1
  673. data/third_party/upb/upb/def.hpp +7 -4
  674. data/third_party/upb/upb/encode.c +29 -20
  675. data/third_party/upb/upb/encode.h +16 -6
  676. data/third_party/upb/upb/extension_registry.c +93 -0
  677. data/third_party/upb/upb/extension_registry.h +84 -0
  678. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  679. data/third_party/upb/upb/internal/table.h +385 -0
  680. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  681. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  682. data/third_party/upb/upb/json_decode.c +1512 -0
  683. data/third_party/upb/upb/json_decode.h +47 -0
  684. data/third_party/upb/upb/json_encode.c +7 -3
  685. data/third_party/upb/upb/json_encode.h +6 -3
  686. data/third_party/upb/upb/map.c +108 -0
  687. data/third_party/upb/upb/map.h +117 -0
  688. data/third_party/upb/upb/message_value.h +66 -0
  689. data/third_party/upb/upb/mini_table.c +1147 -0
  690. data/third_party/upb/upb/mini_table.h +189 -0
  691. data/third_party/upb/upb/mini_table.hpp +112 -0
  692. data/third_party/upb/upb/msg.c +2 -62
  693. data/third_party/upb/upb/msg.h +2 -45
  694. data/third_party/upb/upb/msg_internal.h +28 -22
  695. data/third_party/upb/upb/port_def.inc +2 -1
  696. data/third_party/upb/upb/port_undef.inc +1 -0
  697. data/third_party/upb/upb/reflection.c +2 -159
  698. data/third_party/upb/upb/reflection.h +2 -112
  699. data/third_party/upb/upb/status.c +86 -0
  700. data/third_party/upb/upb/status.h +66 -0
  701. data/third_party/upb/upb/table.c +2 -2
  702. data/third_party/upb/upb/table_internal.h +3 -352
  703. data/third_party/upb/upb/text_encode.c +3 -2
  704. data/third_party/upb/upb/upb.c +4 -290
  705. data/third_party/upb/upb/upb.h +7 -196
  706. metadata +88 -36
  707. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  708. data/src/core/lib/iomgr/error_internal.h +0 -66
  709. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  710. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  711. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  712. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  713. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  714. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  715. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -28,7 +28,6 @@
28
28
 
29
29
  #include "absl/strings/str_cat.h"
30
30
  #include "absl/strings/strip.h"
31
- #include "envoy/admin/v3/config_dump.upb.h"
32
31
  #include "envoy/config/core/v3/base.upb.h"
33
32
  #include "envoy/config/endpoint/v3/load_report.upb.h"
34
33
  #include "envoy/service/discovery/v3/discovery.upb.h"
@@ -53,7 +52,6 @@
53
52
 
54
53
  #include "src/core/ext/xds/upb_utils.h"
55
54
  #include "src/core/ext/xds/xds_client.h"
56
- #include "src/core/lib/iomgr/error.h"
57
55
  #include "src/core/lib/json/json.h"
58
56
 
59
57
  // IWYU pragma: no_include "upb/msg_internal.h"
@@ -79,14 +77,10 @@ namespace grpc_core {
79
77
  #endif
80
78
 
81
79
  XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
82
- const XdsBootstrap::Node* node,
83
- const CertificateProviderStore::PluginDefinitionMap*
84
- certificate_provider_definition_map,
85
- upb::SymbolTable* symtab)
80
+ const XdsBootstrap::Node* node, upb::SymbolTable* symtab)
86
81
  : client_(client),
87
82
  tracer_(tracer),
88
83
  node_(node),
89
- certificate_provider_definition_map_(certificate_provider_definition_map),
90
84
  symtab_(symtab),
91
85
  build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
92
86
  grpc_version_string(),
@@ -101,10 +95,18 @@ XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
101
95
 
102
96
  namespace {
103
97
 
104
- void PopulateMetadataValue(const XdsEncodingContext& context,
98
+ struct XdsApiContext {
99
+ XdsClient* client;
100
+ TraceFlag* tracer;
101
+ upb_DefPool* symtab;
102
+ upb_Arena* arena;
103
+ bool use_v3;
104
+ };
105
+
106
+ void PopulateMetadataValue(const XdsApiContext& context,
105
107
  google_protobuf_Value* value_pb, const Json& value);
106
108
 
107
- void PopulateListValue(const XdsEncodingContext& context,
109
+ void PopulateListValue(const XdsApiContext& context,
108
110
  google_protobuf_ListValue* list_value,
109
111
  const Json::Array& values) {
110
112
  for (const auto& value : values) {
@@ -114,7 +116,7 @@ void PopulateListValue(const XdsEncodingContext& context,
114
116
  }
115
117
  }
116
118
 
117
- void PopulateMetadata(const XdsEncodingContext& context,
119
+ void PopulateMetadata(const XdsApiContext& context,
118
120
  google_protobuf_Struct* metadata_pb,
119
121
  const Json::Object& metadata) {
120
122
  for (const auto& p : metadata) {
@@ -125,7 +127,7 @@ void PopulateMetadata(const XdsEncodingContext& context,
125
127
  }
126
128
  }
127
129
 
128
- void PopulateMetadataValue(const XdsEncodingContext& context,
130
+ void PopulateMetadataValue(const XdsApiContext& context,
129
131
  google_protobuf_Value* value_pb, const Json& value) {
130
132
  switch (value.type()) {
131
133
  case Json::Type::JSON_NULL:
@@ -181,7 +183,7 @@ std::string EncodeStringField(uint32_t field_number, const std::string& str) {
181
183
  EncodeVarint(str.size()) + str;
182
184
  }
183
185
 
184
- void PopulateBuildVersion(const XdsEncodingContext& context,
186
+ void PopulateBuildVersion(const XdsApiContext& context,
185
187
  envoy_config_core_v3_Node* node_msg,
186
188
  const std::string& build_version) {
187
189
  std::string encoded_build_version = EncodeStringField(5, build_version);
@@ -193,8 +195,7 @@ void PopulateBuildVersion(const XdsEncodingContext& context,
193
195
  encoded_build_version.size(), context.arena);
194
196
  }
195
197
 
196
- void PopulateNode(const XdsEncodingContext& context,
197
- const XdsBootstrap::Node* node,
198
+ void PopulateNode(const XdsApiContext& context, const XdsBootstrap::Node* node,
198
199
  const std::string& build_version,
199
200
  const std::string& user_agent_name,
200
201
  const std::string& user_agent_version,
@@ -245,7 +246,7 @@ void PopulateNode(const XdsEncodingContext& context,
245
246
  }
246
247
 
247
248
  void MaybeLogDiscoveryRequest(
248
- const XdsEncodingContext& context,
249
+ const XdsApiContext& context,
249
250
  const envoy_service_discovery_v3_DiscoveryRequest* request) {
250
251
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
251
252
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -258,30 +259,25 @@ void MaybeLogDiscoveryRequest(
258
259
  }
259
260
  }
260
261
 
261
- grpc_slice SerializeDiscoveryRequest(
262
- const XdsEncodingContext& context,
262
+ std::string SerializeDiscoveryRequest(
263
+ const XdsApiContext& context,
263
264
  envoy_service_discovery_v3_DiscoveryRequest* request) {
264
265
  size_t output_length;
265
266
  char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
266
267
  request, context.arena, &output_length);
267
- return grpc_slice_from_copied_buffer(output, output_length);
268
+ return std::string(output, output_length);
268
269
  }
269
270
 
270
271
  } // namespace
271
272
 
272
- grpc_slice XdsApi::CreateAdsRequest(
273
+ std::string XdsApi::CreateAdsRequest(
273
274
  const XdsBootstrap::XdsServer& server, absl::string_view type_url,
274
275
  absl::string_view version, absl::string_view nonce,
275
- const std::vector<std::string>& resource_names, grpc_error_handle error,
276
+ const std::vector<std::string>& resource_names, absl::Status status,
276
277
  bool populate_node) {
277
278
  upb::Arena arena;
278
- const XdsEncodingContext context = {client_,
279
- server,
280
- tracer_,
281
- symtab_->ptr(),
282
- arena.ptr(),
283
- server.ShouldUseV3(),
284
- certificate_provider_definition_map_};
279
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
280
+ server.ShouldUseV3()};
285
281
  // Create a request.
286
282
  envoy_service_discovery_v3_DiscoveryRequest* request =
287
283
  envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
@@ -301,7 +297,7 @@ grpc_slice XdsApi::CreateAdsRequest(
301
297
  }
302
298
  // Set error_detail if it's a NACK.
303
299
  std::string error_string_storage;
304
- if (!GRPC_ERROR_IS_NONE(error)) {
300
+ if (!status.ok()) {
305
301
  google_rpc_Status* error_detail =
306
302
  envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
307
303
  request, arena.ptr());
@@ -310,12 +306,11 @@ grpc_slice XdsApi::CreateAdsRequest(
310
306
  // we could attach a status code to the individual errors where we
311
307
  // generate them in the parsing code, and then use that here.
312
308
  google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
313
- // Error description comes from the error that was passed in.
314
- error_string_storage = grpc_error_std_string(error);
309
+ // Error description comes from the status that was passed in.
310
+ error_string_storage = std::string(status.message());
315
311
  upb_StringView error_description =
316
312
  StdStringToUpbString(error_string_storage);
317
313
  google_rpc_Status_set_message(error_detail, error_description);
318
- GRPC_ERROR_UNREF(error);
319
314
  }
320
315
  // Populate node.
321
316
  if (populate_node) {
@@ -340,7 +335,7 @@ grpc_slice XdsApi::CreateAdsRequest(
340
335
  namespace {
341
336
 
342
337
  void MaybeLogDiscoveryResponse(
343
- const XdsEncodingContext& context,
338
+ const XdsApiContext& context,
344
339
  const envoy_service_discovery_v3_DiscoveryResponse* response) {
345
340
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
346
341
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -356,21 +351,15 @@ void MaybeLogDiscoveryResponse(
356
351
  } // namespace
357
352
 
358
353
  absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
359
- const grpc_slice& encoded_response,
354
+ absl::string_view encoded_response,
360
355
  AdsResponseParserInterface* parser) {
361
356
  upb::Arena arena;
362
- const XdsEncodingContext context = {client_,
363
- server,
364
- tracer_,
365
- symtab_->ptr(),
366
- arena.ptr(),
367
- server.ShouldUseV3(),
368
- certificate_provider_definition_map_};
357
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
358
+ server.ShouldUseV3()};
369
359
  // Decode the response.
370
360
  const envoy_service_discovery_v3_DiscoveryResponse* response =
371
361
  envoy_service_discovery_v3_DiscoveryResponse_parse(
372
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
373
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
362
+ encoded_response.data(), encoded_response.size(), arena.ptr());
374
363
  // If decoding fails, report a fatal error and return.
375
364
  if (response == nullptr) {
376
365
  return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
@@ -417,7 +406,7 @@ absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
417
406
  serialized_resource =
418
407
  UpbStringToAbsl(google_protobuf_Any_value(resource));
419
408
  }
420
- parser->ParseResource(context, i, type_url, serialized_resource);
409
+ parser->ParseResource(context.arena, i, type_url, serialized_resource);
421
410
  }
422
411
  return absl::OkStatus();
423
412
  }
@@ -425,7 +414,7 @@ absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
425
414
  namespace {
426
415
 
427
416
  void MaybeLogLrsRequest(
428
- const XdsEncodingContext& context,
417
+ const XdsApiContext& context,
429
418
  const envoy_service_load_stats_v3_LoadStatsRequest* request) {
430
419
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
431
420
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -438,27 +427,22 @@ void MaybeLogLrsRequest(
438
427
  }
439
428
  }
440
429
 
441
- grpc_slice SerializeLrsRequest(
442
- const XdsEncodingContext& context,
430
+ std::string SerializeLrsRequest(
431
+ const XdsApiContext& context,
443
432
  const envoy_service_load_stats_v3_LoadStatsRequest* request) {
444
433
  size_t output_length;
445
434
  char* output = envoy_service_load_stats_v3_LoadStatsRequest_serialize(
446
435
  request, context.arena, &output_length);
447
- return grpc_slice_from_copied_buffer(output, output_length);
436
+ return std::string(output, output_length);
448
437
  }
449
438
 
450
439
  } // namespace
451
440
 
452
- grpc_slice XdsApi::CreateLrsInitialRequest(
441
+ std::string XdsApi::CreateLrsInitialRequest(
453
442
  const XdsBootstrap::XdsServer& server) {
454
443
  upb::Arena arena;
455
- const XdsEncodingContext context = {client_,
456
- server,
457
- tracer_,
458
- symtab_->ptr(),
459
- arena.ptr(),
460
- server.ShouldUseV3(),
461
- certificate_provider_definition_map_};
444
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
445
+ server.ShouldUseV3()};
462
446
  // Create a request.
463
447
  envoy_service_load_stats_v3_LoadStatsRequest* request =
464
448
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -479,7 +463,7 @@ grpc_slice XdsApi::CreateLrsInitialRequest(
479
463
  namespace {
480
464
 
481
465
  void LocalityStatsPopulate(
482
- const XdsEncodingContext& context,
466
+ const XdsApiContext& context,
483
467
  envoy_config_endpoint_v3_UpstreamLocalityStats* output,
484
468
  const XdsLocalityName& locality_name,
485
469
  const XdsClusterLocalityStats::Snapshot& snapshot) {
@@ -526,19 +510,11 @@ void LocalityStatsPopulate(
526
510
 
527
511
  } // namespace
528
512
 
529
- grpc_slice XdsApi::CreateLrsRequest(
513
+ std::string XdsApi::CreateLrsRequest(
530
514
  ClusterLoadReportMap cluster_load_report_map) {
531
515
  upb::Arena arena;
532
- // The xDS server info is not actually needed here, so we seed it with an
533
- // empty value.
534
- XdsBootstrap::XdsServer empty_server;
535
- const XdsEncodingContext context = {client_,
536
- empty_server,
537
- tracer_,
538
- symtab_->ptr(),
539
- arena.ptr(),
540
- false,
541
- certificate_provider_definition_map_};
516
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
517
+ /*use_v3=*/false};
542
518
  // Create a request.
543
519
  envoy_service_load_stats_v3_LoadStatsRequest* request =
544
520
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -597,19 +573,18 @@ grpc_slice XdsApi::CreateLrsRequest(
597
573
  return SerializeLrsRequest(context, request);
598
574
  }
599
575
 
600
- grpc_error_handle XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
601
- bool* send_all_clusters,
602
- std::set<std::string>* cluster_names,
603
- Duration* load_reporting_interval) {
576
+ absl::Status XdsApi::ParseLrsResponse(absl::string_view encoded_response,
577
+ bool* send_all_clusters,
578
+ std::set<std::string>* cluster_names,
579
+ Duration* load_reporting_interval) {
604
580
  upb::Arena arena;
605
581
  // Decode the response.
606
582
  const envoy_service_load_stats_v3_LoadStatsResponse* decoded_response =
607
583
  envoy_service_load_stats_v3_LoadStatsResponse_parse(
608
- reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
609
- GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
584
+ encoded_response.data(), encoded_response.size(), arena.ptr());
610
585
  // Parse the response.
611
586
  if (decoded_response == nullptr) {
612
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode response.");
587
+ return absl::UnavailableError("Can't decode response.");
613
588
  }
614
589
  // Check send_all_clusters.
615
590
  if (envoy_service_load_stats_v3_LoadStatsResponse_send_all_clusters(
@@ -632,12 +607,12 @@ grpc_error_handle XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
632
607
  *load_reporting_interval = Duration::FromSecondsAndNanoseconds(
633
608
  google_protobuf_Duration_seconds(load_reporting_interval_duration),
634
609
  google_protobuf_Duration_nanos(load_reporting_interval_duration));
635
- return GRPC_ERROR_NONE;
610
+ return absl::OkStatus();
636
611
  }
637
612
 
638
613
  namespace {
639
614
 
640
- google_protobuf_Timestamp* EncodeTimestamp(const XdsEncodingContext& context,
615
+ google_protobuf_Timestamp* EncodeTimestamp(const XdsApiContext& context,
641
616
  Timestamp value) {
642
617
  google_protobuf_Timestamp* timestamp =
643
618
  google_protobuf_Timestamp_new(context.arena);
@@ -657,16 +632,8 @@ std::string XdsApi::AssembleClientConfig(
657
632
  // Fill-in the node information
658
633
  auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
659
634
  arena.ptr());
660
- // The xDS server info is not actually needed here, so we seed it with an
661
- // empty value.
662
- XdsBootstrap::XdsServer empty_server;
663
- const XdsEncodingContext context = {client_,
664
- empty_server,
665
- tracer_,
666
- symtab_->ptr(),
667
- arena.ptr(),
668
- true,
669
- certificate_provider_definition_map_};
635
+ const XdsApiContext context = {client_, tracer_, symtab_->ptr(), arena.ptr(),
636
+ /*use_v3=*/true};
670
637
  PopulateNode(context, node_, build_version_, user_agent_name_,
671
638
  user_agent_version_, node);
672
639
  // Dump each resource.
@@ -29,26 +29,21 @@
29
29
 
30
30
  #include "absl/status/status.h"
31
31
  #include "absl/strings/string_view.h"
32
- #include "envoy/admin/v3/config_dump.upb.h"
32
+ #include "envoy/admin/v3/config_dump_shared.upb.h"
33
+ #include "upb/arena.h"
33
34
  #include "upb/def.hpp"
34
35
 
35
- #include <grpc/slice.h>
36
-
37
- #include "src/core/ext/xds/certificate_provider_store.h"
38
- #include "src/core/ext/xds/upb_utils.h"
39
36
  #include "src/core/ext/xds/xds_bootstrap.h"
40
37
  #include "src/core/ext/xds/xds_client_stats.h"
41
38
  #include "src/core/lib/debug/trace.h"
42
39
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
43
40
  #include "src/core/lib/gprpp/time.h"
44
- #include "src/core/lib/iomgr/error.h"
45
41
 
46
42
  namespace grpc_core {
47
43
 
48
44
  class XdsClient;
49
45
 
50
46
  // TODO(roth): When we have time, split this into multiple pieces:
51
- // - a common upb-based parsing framework (combine with XdsEncodingContext)
52
47
  // - ADS request/response handling
53
48
  // - LRS request/response handling
54
49
  // - CSDS response generation
@@ -72,7 +67,7 @@ class XdsApi {
72
67
  virtual absl::Status ProcessAdsResponseFields(AdsResponseFields fields) = 0;
73
68
 
74
69
  // Called to parse each individual resource in the ADS response.
75
- virtual void ParseResource(const XdsEncodingContext& context, size_t idx,
70
+ virtual void ParseResource(upb_Arena* arena, size_t idx,
76
71
  absl::string_view type_url,
77
72
  absl::string_view serialized_resource) = 0;
78
73
  };
@@ -145,37 +140,35 @@ class XdsApi {
145
140
  "");
146
141
 
147
142
  XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap::Node* node,
148
- const CertificateProviderStore::PluginDefinitionMap* map,
149
143
  upb::SymbolTable* symtab);
150
144
 
151
145
  // Creates an ADS request.
152
146
  // Takes ownership of \a error.
153
- grpc_slice CreateAdsRequest(const XdsBootstrap::XdsServer& server,
154
- absl::string_view type_url,
155
- absl::string_view version,
156
- absl::string_view nonce,
157
- const std::vector<std::string>& resource_names,
158
- grpc_error_handle error, bool populate_node);
147
+ std::string CreateAdsRequest(const XdsBootstrap::XdsServer& server,
148
+ absl::string_view type_url,
149
+ absl::string_view version,
150
+ absl::string_view nonce,
151
+ const std::vector<std::string>& resource_names,
152
+ absl::Status status, bool populate_node);
159
153
 
160
154
  // Returns non-OK when failing to deserialize response message.
161
155
  // Otherwise, all events are reported to the parser.
162
156
  absl::Status ParseAdsResponse(const XdsBootstrap::XdsServer& server,
163
- const grpc_slice& encoded_response,
157
+ absl::string_view encoded_response,
164
158
  AdsResponseParserInterface* parser);
165
159
 
166
160
  // Creates an initial LRS request.
167
- grpc_slice CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
161
+ std::string CreateLrsInitialRequest(const XdsBootstrap::XdsServer& server);
168
162
 
169
163
  // Creates an LRS request sending a client-side load report.
170
- grpc_slice CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
164
+ std::string CreateLrsRequest(ClusterLoadReportMap cluster_load_report_map);
171
165
 
172
- // Parses the LRS response and returns \a
173
- // load_reporting_interval for client-side load reporting. If there is any
174
- // error, the output config is invalid.
175
- grpc_error_handle ParseLrsResponse(const grpc_slice& encoded_response,
176
- bool* send_all_clusters,
177
- std::set<std::string>* cluster_names,
178
- Duration* load_reporting_interval);
166
+ // Parses the LRS response and populates send_all_clusters,
167
+ // cluster_names, and load_reporting_interval.
168
+ absl::Status ParseLrsResponse(absl::string_view encoded_response,
169
+ bool* send_all_clusters,
170
+ std::set<std::string>* cluster_names,
171
+ Duration* load_reporting_interval);
179
172
 
180
173
  // Assemble the client config proto message and return the serialized result.
181
174
  std::string AssembleClientConfig(
@@ -185,9 +178,7 @@ class XdsApi {
185
178
  XdsClient* client_;
186
179
  TraceFlag* tracer_;
187
180
  const XdsBootstrap::Node* node_; // Do not own.
188
- const CertificateProviderStore::PluginDefinitionMap*
189
- certificate_provider_definition_map_; // Do not own.
190
- upb::SymbolTable* symtab_; // Do not own.
181
+ upb::SymbolTable* symtab_; // Do not own.
191
182
  const std::string build_version_;
192
183
  const std::string user_agent_name_;
193
184
  const std::string user_agent_version_;
@@ -24,6 +24,8 @@
24
24
  #include <vector>
25
25
 
26
26
  #include "absl/memory/memory.h"
27
+ #include "absl/status/status.h"
28
+ #include "absl/status/statusor.h"
27
29
  #include "absl/strings/match.h"
28
30
  #include "absl/strings/str_cat.h"
29
31
  #include "absl/strings/str_format.h"
@@ -32,14 +34,12 @@
32
34
 
33
35
  #include <grpc/support/alloc.h>
34
36
 
35
- #include "src/core/ext/xds/certificate_provider_factory.h"
36
- #include "src/core/ext/xds/certificate_provider_registry.h"
37
37
  #include "src/core/lib/config/core_configuration.h"
38
38
  #include "src/core/lib/gpr/env.h"
39
39
  #include "src/core/lib/gpr/string.h"
40
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
41
40
  #include "src/core/lib/json/json_util.h"
42
41
  #include "src/core/lib/security/credentials/channel_creds_registry.h"
42
+ #include "src/core/lib/transport/error_utils.h"
43
43
 
44
44
  namespace grpc_core {
45
45
 
@@ -178,20 +178,27 @@ bool XdsBootstrap::XdsServer::IgnoreResourceDeletion() const {
178
178
  //
179
179
 
180
180
  std::unique_ptr<XdsBootstrap> XdsBootstrap::Create(
181
- absl::string_view json_string, grpc_error_handle* error) {
182
- Json json = Json::Parse(json_string, error);
183
- if (!GRPC_ERROR_IS_NONE(*error)) {
184
- grpc_error_handle error_out =
185
- GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
186
- "Failed to parse bootstrap JSON string", error, 1);
187
- GRPC_ERROR_UNREF(*error);
188
- *error = error_out;
181
+ absl::string_view json_string,
182
+ std::unique_ptr<XdsCertificateProviderPluginMapInterface>
183
+ certificate_provider_plugin_map,
184
+ grpc_error_handle* error) {
185
+ auto json = Json::Parse(json_string);
186
+ if (!json.ok()) {
187
+ *error = GRPC_ERROR_CREATE_FROM_CPP_STRING(absl::StrCat(
188
+ "Failed to parse bootstrap JSON string: ", json.status().ToString()));
189
189
  return nullptr;
190
190
  }
191
- return absl::make_unique<XdsBootstrap>(std::move(json), error);
191
+ return absl::make_unique<XdsBootstrap>(
192
+ std::move(*json), std::move(certificate_provider_plugin_map), error);
192
193
  }
193
194
 
194
- XdsBootstrap::XdsBootstrap(Json json, grpc_error_handle* error) {
195
+ XdsBootstrap::XdsBootstrap(
196
+ Json json,
197
+ std::unique_ptr<XdsCertificateProviderPluginMapInterface>
198
+ certificate_provider_plugin_map,
199
+ grpc_error_handle* error)
200
+ : certificate_provider_plugin_map_(
201
+ std::move(certificate_provider_plugin_map)) {
195
202
  if (json.type() != Json::Type::OBJECT) {
196
203
  *error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
197
204
  "malformed JSON in bootstrap file");
@@ -470,36 +477,25 @@ grpc_error_handle XdsBootstrap::ParseCertificateProvider(
470
477
  "\"plugin_name\" field is not a string"));
471
478
  } else {
472
479
  std::string plugin_name = std::move(*(it->second.mutable_string_value()));
473
- CertificateProviderFactory* factory =
474
- CertificateProviderRegistry::LookupCertificateProviderFactory(
475
- plugin_name);
476
- if (factory == nullptr) {
477
- error_list.push_back(GRPC_ERROR_CREATE_FROM_CPP_STRING(
478
- absl::StrCat("Unrecognized plugin name: ", plugin_name)));
479
- } else {
480
- RefCountedPtr<CertificateProviderFactory::Config> config;
481
- it = certificate_provider_json->mutable_object()->find("config");
482
- if (it != certificate_provider_json->mutable_object()->end()) {
483
- if (it->second.type() != Json::Type::OBJECT) {
484
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
485
- "\"config\" field is not an object"));
486
- } else {
487
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
488
- config = factory->CreateCertificateProviderConfig(it->second,
489
- &parse_error);
490
- if (!GRPC_ERROR_IS_NONE(parse_error)) {
491
- error_list.push_back(parse_error);
492
- }
493
- }
480
+ it = certificate_provider_json->mutable_object()->find("config");
481
+ if (it != certificate_provider_json->mutable_object()->end()) {
482
+ if (it->second.type() != Json::Type::OBJECT) {
483
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
484
+ "\"config\" field is not an object"));
494
485
  } else {
495
- // "config" is an optional field, so create an empty JSON object.
496
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
497
- config = factory->CreateCertificateProviderConfig(Json::Object(),
498
- &parse_error);
499
- if (!GRPC_ERROR_IS_NONE(parse_error)) error_list.push_back(parse_error);
486
+ absl::Status status = certificate_provider_plugin_map_->AddPlugin(
487
+ instance_name, plugin_name, it->second);
488
+ if (!status.ok()) {
489
+ error_list.push_back(absl_status_to_grpc_error(status));
490
+ }
491
+ }
492
+ } else {
493
+ // "config" is an optional field, so create an empty JSON object.
494
+ absl::Status status = certificate_provider_plugin_map_->AddPlugin(
495
+ instance_name, plugin_name, Json::Object());
496
+ if (!status.ok()) {
497
+ error_list.push_back(absl_status_to_grpc_error(status));
500
498
  }
501
- certificate_providers_.insert(
502
- {instance_name, {std::move(plugin_name), std::move(config)}});
503
499
  }
504
500
  }
505
501
  return GRPC_ERROR_CREATE_FROM_VECTOR_AND_CPP_STRING(
@@ -566,17 +562,8 @@ std::string XdsBootstrap::ToString() const {
566
562
  parts.push_back(" },\n");
567
563
  }
568
564
  parts.push_back("}");
569
- parts.push_back("certificate_providers={\n");
570
- for (const auto& entry : certificate_providers_) {
571
- parts.push_back(
572
- absl::StrFormat(" %s={\n"
573
- " plugin_name=%s\n"
574
- " config=%s\n"
575
- " },\n",
576
- entry.first, entry.second.plugin_name,
577
- entry.second.config->ToString()));
578
- }
579
- parts.push_back("}");
565
+ parts.push_back("certificate_providers=");
566
+ parts.push_back(certificate_provider_plugin_map_->ToString());
580
567
  return absl::StrJoin(parts, "");
581
568
  }
582
569
 
@@ -26,9 +26,9 @@
26
26
  #include <string>
27
27
  #include <vector>
28
28
 
29
+ #include "absl/status/status.h"
29
30
  #include "absl/strings/string_view.h"
30
31
 
31
- #include "src/core/ext/xds/certificate_provider_store.h"
32
32
  #include "src/core/lib/iomgr/error.h"
33
33
  #include "src/core/lib/json/json.h"
34
34
 
@@ -38,6 +38,19 @@ bool XdsFederationEnabled();
38
38
 
39
39
  class XdsClient;
40
40
 
41
+ class XdsCertificateProviderPluginMapInterface {
42
+ public:
43
+ virtual ~XdsCertificateProviderPluginMapInterface() = default;
44
+
45
+ virtual absl::Status AddPlugin(const std::string& instance_name,
46
+ const std::string& plugin_name,
47
+ const Json& config) = 0;
48
+
49
+ virtual bool HasPlugin(const std::string& instance_name) const = 0;
50
+
51
+ virtual std::string ToString() const = 0;
52
+ };
53
+
41
54
  class XdsBootstrap {
42
55
  public:
43
56
  struct Node {
@@ -88,11 +101,17 @@ class XdsBootstrap {
88
101
  // Creates bootstrap object from json_string.
89
102
  // If *error is not GRPC_ERROR_NONE after returning, then there was an
90
103
  // error parsing the contents.
91
- static std::unique_ptr<XdsBootstrap> Create(absl::string_view json_string,
92
- grpc_error_handle* error);
104
+ static std::unique_ptr<XdsBootstrap> Create(
105
+ absl::string_view json_string,
106
+ std::unique_ptr<XdsCertificateProviderPluginMapInterface>
107
+ certificate_provider_plugin_map,
108
+ grpc_error_handle* error);
93
109
 
94
110
  // Do not instantiate directly -- use Create() above instead.
95
- XdsBootstrap(Json json, grpc_error_handle* error);
111
+ XdsBootstrap(Json json,
112
+ std::unique_ptr<XdsCertificateProviderPluginMapInterface>
113
+ certificate_provider_plugin_map,
114
+ grpc_error_handle* error);
96
115
 
97
116
  std::string ToString() const;
98
117
 
@@ -110,9 +129,9 @@ class XdsBootstrap {
110
129
  return authorities_;
111
130
  }
112
131
  const Authority* LookupAuthority(const std::string& name) const;
113
- const CertificateProviderStore::PluginDefinitionMap& certificate_providers()
114
- const {
115
- return certificate_providers_;
132
+ const XdsCertificateProviderPluginMapInterface*
133
+ certificate_provider_plugin_map() const {
134
+ return certificate_provider_plugin_map_.get();
116
135
  }
117
136
  // A util method to check that an xds server exists in this bootstrap file.
118
137
  bool XdsServerExists(const XdsServer& server) const;
@@ -133,7 +152,8 @@ class XdsBootstrap {
133
152
  std::string client_default_listener_resource_name_template_;
134
153
  std::string server_listener_resource_name_template_;
135
154
  std::map<std::string, Authority> authorities_;
136
- CertificateProviderStore::PluginDefinitionMap certificate_providers_;
155
+ std::unique_ptr<XdsCertificateProviderPluginMapInterface>
156
+ certificate_provider_plugin_map_;
137
157
  };
138
158
 
139
159
  } // namespace grpc_core
@@ -50,6 +50,15 @@ class XdsCertificateProvider : public grpc_tls_certificate_provider {
50
50
  XdsCertificateProvider();
51
51
  ~XdsCertificateProvider() override;
52
52
 
53
+ static absl::string_view ChannelArgName() {
54
+ return GRPC_ARG_XDS_CERTIFICATE_PROVIDER;
55
+ }
56
+
57
+ static int ChannelArgsCompare(const XdsCertificateProvider* a,
58
+ const XdsCertificateProvider* b) {
59
+ return QsortCompare(a, b);
60
+ }
61
+
53
62
  RefCountedPtr<grpc_tls_certificate_distributor> distributor() const override {
54
63
  return distributor_;
55
64
  }