grpc 1.48.0 → 1.50.0

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 (846) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +114 -150
  3. data/include/grpc/event_engine/endpoint_config.h +11 -5
  4. data/include/grpc/event_engine/event_engine.h +20 -17
  5. data/include/grpc/impl/codegen/atm_gcc_atomic.h +19 -28
  6. data/include/grpc/impl/codegen/atm_gcc_sync.h +0 -2
  7. data/include/grpc/impl/codegen/atm_windows.h +0 -2
  8. data/include/grpc/impl/codegen/grpc_types.h +9 -8
  9. data/include/grpc/impl/codegen/port_platform.h +0 -8
  10. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +6 -6
  11. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +2 -2
  12. data/src/core/ext/filters/client_channel/backup_poller.cc +4 -6
  13. data/src/core/ext/filters/client_channel/client_channel.cc +154 -218
  14. data/src/core/ext/filters/client_channel/client_channel.h +16 -9
  15. data/src/core/ext/filters/client_channel/client_channel_factory.cc +0 -29
  16. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -10
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +0 -16
  18. data/src/core/ext/filters/client_channel/config_selector.h +12 -4
  19. data/src/core/ext/filters/client_channel/connector.h +4 -5
  20. data/src/core/ext/filters/client_channel/http_proxy.cc +55 -74
  21. data/src/core/ext/filters/client_channel/http_proxy.h +15 -11
  22. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +20 -16
  23. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +11 -10
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +0 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +181 -194
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +12 -3
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +5 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +1 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -2
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +20 -11
  31. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +250 -146
  33. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +41 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +35 -32
  35. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +195 -299
  36. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +237 -250
  37. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +12 -7
  38. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +431 -498
  39. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +31 -30
  40. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +27 -27
  41. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +108 -124
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +68 -76
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +131 -227
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +126 -121
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +325 -304
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +4 -8
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +431 -145
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +172 -101
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -7
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -16
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +7 -17
  52. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +11 -0
  53. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +51 -32
  54. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +87 -41
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +16 -6
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -13
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +167 -168
  58. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +40 -32
  59. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +7 -10
  60. data/src/core/ext/filters/client_channel/retry_filter.cc +25 -36
  61. data/src/core/ext/filters/client_channel/retry_service_config.cc +30 -19
  62. data/src/core/ext/filters/client_channel/retry_service_config.h +6 -9
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +6 -7
  64. data/src/core/ext/filters/client_channel/subchannel.cc +86 -121
  65. data/src/core/ext/filters/client_channel/subchannel.h +20 -11
  66. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +1 -1
  67. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +6 -76
  68. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +16 -25
  69. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +4 -6
  70. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -6
  71. data/src/core/ext/filters/deadline/deadline_filter.h +2 -3
  72. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +24 -19
  73. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -1
  74. data/src/core/ext/filters/fault_injection/service_config_parser.cc +17 -12
  75. data/src/core/ext/filters/fault_injection/service_config_parser.h +4 -5
  76. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -5
  77. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  78. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  79. data/src/core/ext/filters/http/client_authority_filter.h +1 -1
  80. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +2 -4
  81. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -2
  82. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -5
  83. data/src/core/ext/filters/http/server/http_server_filter.h +1 -1
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -7
  85. data/src/core/ext/filters/message_size/message_size_filter.h +3 -6
  86. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -12
  87. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -6
  88. data/src/core/ext/filters/server_config_selector/server_config_selector.h +5 -0
  89. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -5
  90. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +40 -63
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +86 -107
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.h +4 -6
  93. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -1
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +155 -295
  95. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -2
  96. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +287 -0
  97. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1018 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +139 -42
  99. data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -6
  100. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +1 -2
  101. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +7 -1
  102. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +27 -28
  103. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -0
  104. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -1
  105. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +8 -2
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +30 -38
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +1 -10
  108. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +11 -6
  109. data/src/core/ext/transport/chttp2/transport/internal.h +4 -1
  110. data/src/core/ext/transport/chttp2/transport/parsing.cc +44 -0
  111. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -14
  112. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -77
  113. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +5 -5
  114. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +30 -10
  115. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +4 -4
  116. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +24 -8
  117. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +8 -327
  118. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +83 -1723
  119. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +352 -0
  120. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1768 -0
  121. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +2 -2
  122. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +12 -4
  123. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +6 -4
  124. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +33 -4
  125. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +1 -1
  126. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +6 -2
  127. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +1 -1
  128. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +6 -2
  129. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +6 -2
  130. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +12 -4
  131. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +1 -1
  132. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +6 -2
  133. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  134. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -3
  135. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +14 -14
  136. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +90 -30
  137. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +21 -19
  138. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +124 -34
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +3 -3
  140. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +18 -6
  141. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +23 -22
  142. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +153 -48
  143. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +1 -1
  144. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +6 -2
  145. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +6 -2
  147. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +11 -11
  148. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +84 -28
  149. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +7 -7
  150. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +42 -14
  151. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +1 -1
  152. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +6 -2
  153. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -23
  154. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +156 -48
  155. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +42 -14
  157. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +6 -2
  159. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +1 -1
  160. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +6 -2
  161. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +2 -2
  162. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +12 -4
  163. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +12 -12
  164. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +78 -26
  165. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +9 -9
  166. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +54 -18
  167. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +1 -1
  168. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +6 -2
  169. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +21 -20
  170. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +117 -44
  171. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  172. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +6 -2
  173. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +2 -2
  174. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +12 -4
  175. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +6 -2
  176. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  177. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +6 -2
  178. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +1 -1
  179. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +6 -2
  180. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +3 -3
  181. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +18 -6
  182. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +5 -5
  183. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +36 -12
  184. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +3 -3
  185. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +30 -10
  186. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +1 -1
  187. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +6 -2
  188. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +37 -13
  189. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +170 -15
  190. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +5 -5
  191. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +42 -14
  192. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +1 -1
  193. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +6 -2
  194. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +7 -4
  195. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +36 -4
  196. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +1 -1
  197. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +6 -2
  198. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +6 -6
  199. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +48 -16
  200. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +8 -8
  201. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +54 -18
  202. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +21 -9
  203. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +100 -14
  204. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -22
  205. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +36 -77
  206. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +121 -76
  207. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +647 -163
  208. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +3 -3
  209. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +18 -6
  210. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +34 -15
  211. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +161 -22
  212. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +1 -1
  213. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +6 -2
  214. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +1 -1
  215. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +6 -2
  216. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +2 -2
  217. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +12 -4
  218. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +1 -1
  219. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +6 -2
  220. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +1 -1
  221. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +6 -2
  222. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +46 -0
  223. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +98 -0
  224. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +1 -1
  225. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +6 -2
  226. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +2 -2
  227. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +12 -4
  228. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +1 -0
  229. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +1 -0
  230. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +2 -2
  231. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +12 -4
  232. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +1 -1
  233. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +6 -2
  234. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +1 -1
  235. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +6 -2
  236. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +2 -2
  237. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +30 -10
  238. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +2 -2
  239. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +18 -6
  240. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +11 -4
  241. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +58 -4
  242. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +1 -1
  243. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +6 -2
  244. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +35 -27
  245. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +177 -52
  246. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +6 -2
  247. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +1 -1
  248. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +6 -2
  249. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +10 -8
  250. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +66 -14
  251. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +3 -3
  252. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +18 -6
  253. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +5 -5
  254. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +42 -14
  255. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +2 -2
  256. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +12 -4
  257. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  258. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +6 -2
  259. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +131 -16
  260. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +632 -12
  261. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +2 -2
  262. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +12 -4
  263. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +5 -5
  264. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +30 -10
  265. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +1 -1
  266. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +6 -2
  267. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +4 -4
  268. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +24 -8
  269. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +4 -4
  270. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +24 -8
  271. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +2 -2
  272. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +12 -4
  273. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +1 -1
  274. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +6 -2
  275. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  276. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +6 -2
  277. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  278. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +6 -2
  279. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +3 -3
  280. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +18 -6
  281. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +1 -1
  282. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +12 -4
  283. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +2 -2
  284. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +12 -4
  285. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  286. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +18 -6
  287. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  288. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +42 -14
  289. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +5 -5
  290. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +30 -10
  291. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +3 -3
  292. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +18 -6
  293. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +1 -1
  294. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +6 -2
  295. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +12 -4
  296. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +2 -2
  297. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +18 -6
  298. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  299. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  300. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  301. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +6 -2
  302. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +6 -2
  303. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -1
  304. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +11 -11
  305. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +66 -22
  306. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +9 -9
  307. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +72 -24
  308. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  309. data/src/core/ext/upb-generated/google/api/http.upb.h +18 -6
  310. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +1 -1
  311. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +6 -2
  312. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  313. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +6 -2
  314. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +44 -43
  315. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +177 -55
  316. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  317. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +6 -2
  318. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  319. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +6 -2
  320. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +2 -2
  321. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +18 -6
  322. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  323. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +6 -2
  324. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +6 -6
  325. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +54 -18
  326. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  327. data/src/core/ext/upb-generated/google/rpc/status.upb.h +6 -2
  328. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +2 -2
  329. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +24 -8
  330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +6 -2
  331. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +7 -7
  332. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +60 -20
  333. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +1 -1
  334. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +12 -4
  335. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  336. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +12 -4
  337. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +6 -6
  338. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +54 -18
  339. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +2 -2
  340. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +12 -4
  341. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +7 -7
  342. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +42 -14
  343. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  344. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +23 -11
  345. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  346. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -3
  347. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -3
  348. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  349. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -3
  350. data/src/core/ext/upb-generated/validate/validate.upb.c +22 -22
  351. data/src/core/ext/upb-generated/validate/validate.upb.h +139 -47
  352. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +3 -3
  353. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +23 -11
  354. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +1 -1
  355. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +7 -3
  356. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +3 -3
  357. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +27 -11
  358. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +1 -1
  359. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +7 -3
  360. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
  361. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +6 -2
  362. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +2 -2
  363. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +12 -4
  364. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
  365. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +6 -2
  366. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +1 -1
  367. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +6 -2
  368. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
  369. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +6 -2
  370. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
  371. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +12 -4
  372. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
  373. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +6 -2
  374. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +6 -2
  375. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +1 -1
  376. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +6 -2
  377. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +6 -6
  378. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +54 -18
  379. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +2 -2
  380. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +12 -4
  381. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +1 -1
  382. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +12 -4
  383. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +1 -1
  384. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +6 -2
  385. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +67 -274
  386. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +0 -85
  387. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +256 -0
  388. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +115 -0
  389. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +14 -11
  390. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +107 -107
  391. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
  392. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +156 -154
  393. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +186 -183
  394. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +136 -134
  395. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +16 -16
  396. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +162 -139
  397. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  398. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +39 -31
  399. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +12 -8
  400. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
  401. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +72 -75
  402. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +0 -5
  403. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +713 -670
  404. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
  405. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +150 -139
  406. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +5 -0
  407. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +47 -0
  408. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  409. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +16 -12
  410. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +46 -25
  411. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +477 -466
  412. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +21 -18
  413. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +153 -84
  414. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +35 -0
  415. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +113 -113
  416. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -28
  417. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  418. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  419. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +92 -90
  420. data/src/core/ext/xds/certificate_provider_store.cc +63 -3
  421. data/src/core/ext/xds/certificate_provider_store.h +9 -1
  422. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +5 -5
  423. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -1
  424. data/src/core/ext/xds/upb_utils.h +0 -21
  425. data/src/core/ext/xds/xds_api.cc +73 -102
  426. data/src/core/ext/xds/xds_api.h +26 -28
  427. data/src/core/ext/xds/xds_bootstrap.cc +5 -550
  428. data/src/core/ext/xds/xds_bootstrap.h +39 -91
  429. data/src/core/ext/xds/xds_bootstrap_grpc.cc +370 -0
  430. data/src/core/ext/xds/xds_bootstrap_grpc.h +169 -0
  431. data/src/core/ext/xds/xds_certificate_provider.h +9 -0
  432. data/src/core/ext/xds/xds_channel_stack_modifier.cc +6 -4
  433. data/src/core/ext/xds/xds_channel_stack_modifier.h +8 -0
  434. data/src/core/ext/xds/xds_client.cc +732 -1317
  435. data/src/core/ext/xds/xds_client.h +33 -59
  436. data/src/core/ext/xds/xds_client_grpc.cc +229 -0
  437. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  438. data/src/core/ext/xds/xds_client_stats.cc +4 -4
  439. data/src/core/ext/xds/xds_cluster.cc +162 -165
  440. data/src/core/ext/xds/xds_cluster.h +8 -7
  441. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +12 -14
  442. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -0
  443. data/src/core/ext/xds/xds_common_types.cc +140 -108
  444. data/src/core/ext/xds/xds_common_types.h +6 -7
  445. data/src/core/ext/xds/xds_endpoint.cc +87 -85
  446. data/src/core/ext/xds/xds_endpoint.h +4 -5
  447. data/src/core/ext/xds/xds_http_fault_filter.cc +4 -11
  448. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  449. data/src/core/ext/xds/xds_http_filters.h +3 -3
  450. data/src/core/ext/xds/xds_http_rbac_filter.cc +39 -58
  451. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  452. data/src/core/ext/xds/xds_lb_policy_registry.cc +21 -22
  453. data/src/core/ext/xds/xds_lb_policy_registry.h +4 -4
  454. data/src/core/ext/xds/xds_listener.cc +348 -313
  455. data/src/core/ext/xds/xds_listener.h +4 -5
  456. data/src/core/ext/xds/xds_resource_type.h +23 -9
  457. data/src/core/ext/xds/xds_route_config.cc +193 -191
  458. data/src/core/ext/xds/xds_route_config.h +31 -17
  459. data/src/core/ext/xds/xds_routing.cc +3 -6
  460. data/src/core/ext/xds/xds_routing.h +7 -9
  461. data/src/core/ext/xds/xds_server_config_fetcher.cc +81 -84
  462. data/src/core/ext/xds/xds_transport.h +86 -0
  463. data/src/core/ext/xds/xds_transport_grpc.cc +357 -0
  464. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  465. data/src/core/lib/address_utils/parse_address.cc +19 -17
  466. data/src/core/lib/address_utils/parse_address.h +8 -5
  467. data/src/core/lib/avl/avl.h +47 -25
  468. data/src/core/lib/backoff/backoff.cc +2 -4
  469. data/src/core/lib/channel/call_finalization.h +1 -3
  470. data/src/core/lib/channel/call_tracer.h +1 -1
  471. data/src/core/lib/channel/channel_args.cc +88 -19
  472. data/src/core/lib/channel/channel_args.h +218 -67
  473. data/src/core/lib/channel/channel_stack.cc +0 -1
  474. data/src/core/lib/channel/channel_stack_builder.cc +3 -3
  475. data/src/core/lib/channel/channel_stack_builder.h +2 -2
  476. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -4
  477. data/src/core/lib/channel/channel_trace.cc +3 -4
  478. data/src/core/lib/channel/channelz.cc +27 -37
  479. data/src/core/lib/channel/channelz.h +9 -0
  480. data/src/core/lib/channel/promise_based_filter.cc +18 -19
  481. data/src/core/lib/channel/promise_based_filter.h +0 -1
  482. data/src/core/lib/channel/status_util.cc +27 -0
  483. data/src/core/lib/channel/status_util.h +10 -0
  484. data/src/core/lib/config/core_configuration.cc +5 -1
  485. data/src/core/lib/config/core_configuration.h +81 -35
  486. data/src/core/lib/debug/stats.cc +39 -46
  487. data/src/core/lib/debug/stats.h +11 -13
  488. data/src/core/lib/debug/stats_data.cc +118 -614
  489. data/src/core/lib/debug/stats_data.h +67 -465
  490. data/src/core/lib/debug/trace.cc +0 -2
  491. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +12 -20
  492. data/src/core/lib/event_engine/channel_args_endpoint_config.h +13 -7
  493. data/src/core/lib/event_engine/{event_engine.cc → default_event_engine.cc} +9 -5
  494. data/src/core/lib/event_engine/{event_engine_factory.h → default_event_engine.h} +4 -8
  495. data/src/core/lib/event_engine/default_event_engine_factory.cc +20 -3
  496. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  497. data/src/core/lib/event_engine/executor/executor.h +38 -0
  498. data/src/core/lib/event_engine/executor/threaded_executor.cc +36 -0
  499. data/src/core/lib/event_engine/executor/threaded_executor.h +44 -0
  500. data/src/core/lib/event_engine/forkable.cc +101 -0
  501. data/src/core/lib/event_engine/forkable.h +61 -0
  502. data/src/core/lib/event_engine/poller.h +56 -0
  503. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.cc → posix_engine/posix_engine.cc} +30 -47
  504. data/src/core/lib/event_engine/{iomgr_engine/iomgr_engine.h → posix_engine/posix_engine.h} +27 -28
  505. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.cc +4 -5
  506. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer.h +8 -8
  507. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.cc +4 -4
  508. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_heap.h +5 -5
  509. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.cc +87 -30
  510. data/src/core/lib/event_engine/{iomgr_engine → posix_engine}/timer_manager.h +40 -9
  511. data/src/core/lib/event_engine/socket_notifier.h +55 -0
  512. data/src/core/lib/event_engine/thread_pool.cc +195 -0
  513. data/src/core/lib/event_engine/thread_pool.h +114 -0
  514. data/src/core/lib/event_engine/time_util.cc +30 -0
  515. data/src/core/lib/event_engine/time_util.h +32 -0
  516. data/src/core/lib/event_engine/utils.cc +44 -0
  517. data/src/core/lib/event_engine/utils.h +36 -0
  518. data/src/core/lib/event_engine/windows/iocp.cc +155 -0
  519. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  520. data/src/core/lib/event_engine/windows/win_socket.cc +196 -0
  521. data/src/core/lib/event_engine/windows/win_socket.h +120 -0
  522. data/src/core/lib/event_engine/windows/windows_engine.cc +159 -0
  523. data/src/core/lib/event_engine/windows/windows_engine.h +120 -0
  524. data/src/core/lib/experiments/config.cc +146 -0
  525. data/src/core/lib/experiments/config.h +43 -0
  526. data/src/core/lib/experiments/experiments.cc +75 -0
  527. data/src/core/lib/experiments/experiments.h +56 -0
  528. data/src/core/lib/gpr/alloc.cc +1 -9
  529. data/src/core/lib/gpr/log_windows.cc +0 -1
  530. data/src/core/lib/gpr/string_util_windows.cc +3 -30
  531. data/src/core/lib/gpr/sync_abseil.cc +0 -14
  532. data/src/core/lib/gpr/sync_posix.cc +0 -14
  533. data/src/core/lib/gpr/time.cc +11 -9
  534. data/src/core/lib/gpr/time_posix.cc +0 -6
  535. data/src/core/lib/gpr/time_precise.h +1 -1
  536. data/src/core/lib/gpr/tmpfile_windows.cc +5 -7
  537. data/src/core/lib/gpr/useful.h +40 -0
  538. data/src/core/lib/gprpp/bitset.h +3 -13
  539. data/src/core/lib/gprpp/debug_location.h +39 -7
  540. data/src/core/lib/{gpr → gprpp}/env.h +25 -12
  541. data/src/core/lib/{gpr → gprpp}/env_linux.cc +20 -15
  542. data/src/core/lib/{gpr → gprpp}/env_posix.cc +11 -10
  543. data/src/core/lib/gprpp/env_windows.cc +56 -0
  544. data/src/core/lib/gprpp/fork.cc +14 -22
  545. data/src/core/lib/gprpp/fork.h +0 -8
  546. data/src/core/lib/gprpp/global_config_env.cc +7 -6
  547. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  548. data/src/core/lib/gprpp/no_destruct.h +94 -0
  549. data/src/core/lib/gprpp/notification.h +67 -0
  550. data/src/core/lib/gprpp/packed_table.h +40 -0
  551. data/src/core/lib/gprpp/ref_counted_ptr.h +20 -34
  552. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  553. data/src/core/lib/gprpp/status_helper.cc +1 -0
  554. data/src/core/lib/gprpp/status_helper.h +6 -0
  555. data/src/core/lib/gprpp/table.h +9 -2
  556. data/src/core/lib/gprpp/tchar.cc +49 -0
  557. data/src/core/lib/gprpp/tchar.h +33 -0
  558. data/src/core/lib/gprpp/time.cc +21 -0
  559. data/src/core/lib/gprpp/time.h +55 -0
  560. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.cc +3 -5
  561. data/src/core/lib/{event_engine/iomgr_engine → gprpp}/time_averaged_stats.h +5 -7
  562. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  563. data/src/core/lib/gprpp/validation_errors.h +110 -0
  564. data/src/core/lib/{iomgr → gprpp}/work_serializer.cc +34 -18
  565. data/src/core/lib/{iomgr → gprpp}/work_serializer.h +21 -27
  566. data/src/core/{ext/filters/client_channel → lib/handshaker}/proxy_mapper.h +16 -17
  567. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  568. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  569. data/src/core/lib/http/httpcli.cc +12 -24
  570. data/src/core/lib/http/httpcli_security_connector.cc +11 -11
  571. data/src/core/lib/iomgr/call_combiner.cc +0 -34
  572. data/src/core/lib/iomgr/closure.h +0 -10
  573. data/src/core/lib/iomgr/combiner.cc +0 -20
  574. data/src/core/lib/iomgr/endpoint_pair_posix.cc +14 -9
  575. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  576. data/src/core/lib/iomgr/error.cc +0 -773
  577. data/src/core/lib/iomgr/error.h +0 -145
  578. data/src/core/lib/iomgr/error_cfstream.cc +0 -5
  579. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -38
  580. data/src/core/lib/iomgr/ev_poll_posix.cc +19 -26
  581. data/src/core/lib/iomgr/exec_ctx.cc +0 -22
  582. data/src/core/lib/iomgr/exec_ctx.h +7 -31
  583. data/src/core/lib/iomgr/executor.cc +0 -10
  584. data/src/core/lib/iomgr/executor.h +0 -3
  585. data/src/core/lib/iomgr/iocp_windows.cc +1 -2
  586. data/src/core/lib/iomgr/iomgr.cc +6 -8
  587. data/src/core/lib/iomgr/iomgr_fwd.h +1 -0
  588. data/src/core/lib/iomgr/lockfree_event.cc +0 -17
  589. data/src/core/lib/iomgr/pollset.h +1 -1
  590. data/src/core/lib/iomgr/pollset_set.h +0 -1
  591. data/src/core/lib/iomgr/port.h +3 -0
  592. data/src/core/lib/iomgr/resolve_address.h +30 -6
  593. data/src/core/lib/iomgr/resolve_address_impl.h +1 -0
  594. data/src/core/lib/iomgr/resolve_address_posix.cc +43 -8
  595. data/src/core/lib/iomgr/resolve_address_posix.h +19 -5
  596. data/src/core/lib/iomgr/resolve_address_windows.cc +45 -10
  597. data/src/core/lib/iomgr/resolve_address_windows.h +19 -5
  598. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +2 -1
  599. data/src/core/lib/iomgr/socket_utils_common_posix.cc +12 -34
  600. data/src/core/lib/iomgr/socket_utils_posix.cc +83 -1
  601. data/src/core/lib/iomgr/socket_utils_posix.h +98 -6
  602. data/src/core/lib/iomgr/socket_windows.h +0 -2
  603. data/src/core/lib/iomgr/tcp_client.cc +6 -7
  604. data/src/core/lib/iomgr/tcp_client.h +11 -11
  605. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -6
  606. data/src/core/lib/iomgr/tcp_client_posix.cc +33 -29
  607. data/src/core/lib/iomgr/tcp_client_posix.h +12 -9
  608. data/src/core/lib/iomgr/tcp_client_windows.cc +6 -6
  609. data/src/core/lib/iomgr/tcp_posix.cc +249 -120
  610. data/src/core/lib/iomgr/tcp_posix.h +3 -1
  611. data/src/core/lib/iomgr/tcp_server.cc +5 -4
  612. data/src/core/lib/iomgr/tcp_server.h +9 -6
  613. data/src/core/lib/iomgr/tcp_server_posix.cc +17 -28
  614. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -2
  615. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +3 -3
  616. data/src/core/lib/iomgr/tcp_server_windows.cc +6 -7
  617. data/src/core/lib/iomgr/tcp_windows.cc +0 -1
  618. data/src/core/lib/iomgr/tcp_windows.h +0 -1
  619. data/src/core/lib/iomgr/timer_generic.cc +10 -12
  620. data/src/core/lib/iomgr/timer_manager.cc +1 -2
  621. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +0 -2
  622. data/src/core/lib/json/json.h +19 -22
  623. data/src/core/lib/json/json_args.h +34 -0
  624. data/src/core/lib/json/json_object_loader.cc +202 -0
  625. data/src/core/lib/json/json_object_loader.h +598 -0
  626. data/src/core/lib/json/json_reader.cc +86 -62
  627. data/src/core/lib/json/json_util.cc +9 -36
  628. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.cc +3 -44
  629. data/src/core/{ext/filters/client_channel → lib/load_balancing}/lb_policy.h +20 -29
  630. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  631. data/src/core/lib/load_balancing/lb_policy_registry.cc +141 -0
  632. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  633. data/src/core/{ext/filters/client_channel → lib/load_balancing}/subchannel_interface.h +6 -6
  634. data/src/core/lib/promise/activity.h +57 -10
  635. data/src/core/lib/promise/arena_promise.h +84 -81
  636. data/src/core/lib/promise/context.h +1 -2
  637. data/src/core/lib/promise/detail/basic_seq.h +43 -23
  638. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  639. data/src/core/lib/promise/map.h +0 -1
  640. data/src/core/lib/promise/seq.h +25 -4
  641. data/src/core/lib/promise/sleep.cc +50 -42
  642. data/src/core/lib/promise/sleep.h +32 -23
  643. data/src/core/lib/promise/try_seq.h +26 -6
  644. data/src/core/lib/resolver/resolver.cc +0 -47
  645. data/src/core/lib/resolver/resolver.h +15 -15
  646. data/src/core/lib/resolver/resolver_factory.h +2 -3
  647. data/src/core/lib/resolver/resolver_registry.cc +1 -1
  648. data/src/core/lib/resolver/resolver_registry.h +2 -3
  649. data/src/core/lib/resolver/server_address.cc +11 -15
  650. data/src/core/lib/resolver/server_address.h +4 -8
  651. data/src/core/lib/resource_quota/api.cc +10 -1
  652. data/src/core/lib/resource_quota/api.h +6 -0
  653. data/src/core/lib/resource_quota/arena.cc +19 -1
  654. data/src/core/lib/resource_quota/arena.h +24 -2
  655. data/src/core/lib/resource_quota/memory_quota.cc +143 -19
  656. data/src/core/lib/resource_quota/memory_quota.h +85 -17
  657. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  658. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  659. data/src/core/lib/security/authorization/evaluate_args.cc +10 -7
  660. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  661. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  662. data/src/core/lib/security/authorization/matchers.cc +13 -10
  663. data/src/core/lib/security/authorization/rbac_policy.cc +0 -1
  664. data/src/core/{ext/xds → lib/security/certificate_provider}/certificate_provider_factory.h +3 -3
  665. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  666. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  667. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -3
  668. data/src/core/lib/security/credentials/alts/alts_credentials.h +3 -4
  669. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +1 -0
  670. data/src/core/lib/security/credentials/composite/composite_credentials.cc +3 -7
  671. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -4
  672. data/src/core/lib/security/credentials/credentials.h +16 -12
  673. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +33 -27
  674. data/src/core/lib/security/credentials/external/external_account_credentials.cc +34 -24
  675. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  676. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -6
  677. data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -12
  678. data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -4
  679. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +5 -8
  680. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +35 -32
  681. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -3
  682. data/src/core/lib/security/credentials/iam/iam_credentials.cc +0 -1
  683. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +3 -3
  684. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +3 -4
  685. data/src/core/lib/security/credentials/jwt/json_token.cc +12 -3
  686. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -8
  687. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +14 -15
  688. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  689. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  690. data/src/core/lib/security/credentials/local/local_credentials.h +3 -4
  691. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -20
  692. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  693. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -21
  694. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +3 -4
  695. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +4 -3
  696. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +10 -2
  697. data/src/core/lib/security/credentials/tls/tls_credentials.cc +13 -25
  698. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -4
  699. data/src/core/lib/security/credentials/tls/tls_utils.cc +3 -1
  700. data/src/core/lib/security/credentials/xds/xds_credentials.cc +13 -30
  701. data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
  702. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +10 -18
  703. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +26 -38
  704. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  705. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
  706. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +6 -5
  707. data/src/core/lib/security/security_connector/local/local_security_connector.cc +13 -11
  708. data/src/core/lib/security/security_connector/local/local_security_connector.h +2 -2
  709. data/src/core/lib/security/security_connector/security_connector.h +5 -3
  710. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +5 -4
  711. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +5 -5
  712. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -5
  713. data/src/core/lib/security/transport/auth_filters.h +1 -1
  714. data/src/core/lib/security/transport/client_auth_filter.cc +15 -5
  715. data/src/core/lib/security/transport/secure_endpoint.cc +0 -4
  716. data/src/core/lib/security/transport/security_handshaker.cc +32 -44
  717. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  718. data/src/core/lib/service_config/service_config.h +11 -0
  719. data/src/core/lib/service_config/service_config_impl.cc +98 -97
  720. data/src/core/lib/service_config/service_config_impl.h +11 -13
  721. data/src/core/lib/service_config/service_config_parser.cc +26 -27
  722. data/src/core/lib/service_config/service_config_parser.h +10 -22
  723. data/src/core/lib/slice/percent_encoding.cc +4 -13
  724. data/src/core/lib/slice/slice.cc +10 -4
  725. data/src/core/lib/surface/call.cc +9 -13
  726. data/src/core/lib/surface/channel.cc +9 -8
  727. data/src/core/lib/surface/channel.h +1 -1
  728. data/src/core/lib/surface/completion_queue.cc +16 -30
  729. data/src/core/lib/surface/completion_queue.h +1 -4
  730. data/src/core/lib/surface/completion_queue_factory.cc +5 -0
  731. data/src/core/lib/surface/init.cc +17 -16
  732. data/src/core/lib/surface/init_internally.cc +24 -0
  733. data/src/core/lib/surface/init_internally.h +28 -0
  734. data/src/core/lib/surface/lame_client.cc +2 -3
  735. data/src/core/lib/surface/lame_client.h +1 -1
  736. data/src/core/lib/surface/server.cc +8 -19
  737. data/src/core/lib/surface/server.h +11 -13
  738. data/src/core/lib/surface/validate_metadata.cc +4 -14
  739. data/src/core/lib/surface/version.cc +2 -2
  740. data/src/core/lib/transport/bdp_estimator.cc +1 -3
  741. data/src/core/lib/transport/connectivity_state.cc +0 -1
  742. data/src/core/lib/transport/connectivity_state.h +1 -1
  743. data/src/core/lib/transport/error_utils.cc +0 -36
  744. data/src/core/lib/transport/handshaker.cc +7 -9
  745. data/src/core/lib/transport/handshaker.h +4 -5
  746. data/src/core/lib/transport/handshaker_factory.h +2 -3
  747. data/src/core/lib/transport/handshaker_registry.cc +2 -1
  748. data/src/core/lib/transport/handshaker_registry.h +2 -4
  749. data/src/core/lib/transport/http_connect_handshaker.cc +16 -16
  750. data/src/core/lib/transport/metadata_batch.cc +7 -3
  751. data/src/core/lib/transport/metadata_batch.h +61 -14
  752. data/src/core/lib/transport/parsed_metadata.h +4 -3
  753. data/src/core/lib/transport/status_conversion.cc +1 -3
  754. data/src/core/lib/transport/tcp_connect_handshaker.cc +20 -22
  755. data/src/core/lib/transport/transport.h +0 -8
  756. data/src/core/lib/transport/transport_impl.h +0 -1
  757. data/src/core/plugin_registry/grpc_plugin_registry.cc +23 -46
  758. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +13 -25
  759. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +40 -21
  760. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -1
  761. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -7
  762. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +1 -1
  763. data/src/core/tsi/fake_transport_security.cc +53 -30
  764. data/src/core/tsi/local_transport_security.cc +9 -5
  765. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +10 -1
  766. data/src/core/tsi/ssl_transport_security.cc +47 -23
  767. data/src/core/tsi/transport_security.cc +18 -6
  768. data/src/core/tsi/transport_security.h +2 -1
  769. data/src/core/tsi/transport_security_interface.h +17 -5
  770. data/src/ruby/ext/grpc/extconf.rb +2 -0
  771. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  772. data/src/ruby/lib/grpc/version.rb +1 -1
  773. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  774. data/src/ruby/spec/channel_spec.rb +5 -0
  775. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  776. data/src/ruby/spec/user_agent_spec.rb +1 -1
  777. data/third_party/abseil-cpp/absl/functional/any_invocable.h +313 -0
  778. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +857 -0
  779. data/third_party/upb/third_party/utf8_range/utf8_range.h +1 -1
  780. data/third_party/upb/upb/arena.c +277 -0
  781. data/third_party/upb/upb/arena.h +225 -0
  782. data/third_party/upb/upb/array.c +114 -0
  783. data/third_party/upb/upb/array.h +83 -0
  784. data/third_party/upb/upb/collections.h +36 -0
  785. data/third_party/upb/upb/decode.c +161 -65
  786. data/third_party/upb/upb/decode.h +1 -0
  787. data/third_party/upb/upb/decode_fast.c +1 -1
  788. data/third_party/upb/upb/def.c +10 -2
  789. data/third_party/upb/upb/def.h +8 -1
  790. data/third_party/upb/upb/def.hpp +7 -4
  791. data/third_party/upb/upb/encode.c +29 -20
  792. data/third_party/upb/upb/encode.h +16 -6
  793. data/third_party/upb/upb/extension_registry.c +93 -0
  794. data/third_party/upb/upb/extension_registry.h +84 -0
  795. data/third_party/upb/upb/{decode_internal.h → internal/decode.h} +5 -5
  796. data/third_party/upb/upb/internal/table.h +385 -0
  797. data/third_party/upb/upb/{upb_internal.h → internal/upb.h} +3 -3
  798. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  799. data/third_party/upb/upb/json_decode.c +1512 -0
  800. data/third_party/upb/upb/json_decode.h +47 -0
  801. data/third_party/upb/upb/json_encode.c +7 -3
  802. data/third_party/upb/upb/json_encode.h +6 -3
  803. data/third_party/upb/upb/map.c +108 -0
  804. data/third_party/upb/upb/map.h +117 -0
  805. data/third_party/upb/upb/message_value.h +66 -0
  806. data/third_party/upb/upb/mini_table.c +1147 -0
  807. data/third_party/upb/upb/mini_table.h +189 -0
  808. data/third_party/upb/upb/mini_table.hpp +112 -0
  809. data/third_party/upb/upb/msg.c +2 -62
  810. data/third_party/upb/upb/msg.h +2 -45
  811. data/third_party/upb/upb/msg_internal.h +28 -22
  812. data/third_party/upb/upb/port_def.inc +2 -1
  813. data/third_party/upb/upb/port_undef.inc +1 -0
  814. data/third_party/upb/upb/reflection.c +2 -159
  815. data/third_party/upb/upb/reflection.h +2 -112
  816. data/third_party/upb/upb/status.c +86 -0
  817. data/third_party/upb/upb/status.h +66 -0
  818. data/third_party/upb/upb/table.c +2 -2
  819. data/third_party/upb/upb/table_internal.h +3 -352
  820. data/third_party/upb/upb/text_encode.c +3 -2
  821. data/third_party/upb/upb/upb.c +4 -290
  822. data/third_party/upb/upb/upb.h +7 -196
  823. metadata +117 -51
  824. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -50
  825. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -190
  826. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -70
  827. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -90
  828. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -55
  829. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  830. data/src/core/ext/xds/certificate_provider_registry.h +0 -59
  831. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +0 -123
  832. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +0 -70
  833. data/src/core/lib/event_engine/promise.h +0 -69
  834. data/src/core/lib/gpr/env_windows.cc +0 -74
  835. data/src/core/lib/gpr/string_windows.h +0 -32
  836. data/src/core/lib/iomgr/error_internal.h +0 -66
  837. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  838. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  839. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  840. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  841. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  842. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  843. data/src/core/lib/profiling/basic_timers.cc +0 -295
  844. data/src/core/lib/profiling/stap_timers.cc +0 -50
  845. data/src/core/lib/profiling/timers.h +0 -94
  846. data/src/core/lib/promise/detail/switch.h +0 -1455
@@ -20,14 +20,14 @@
20
20
 
21
21
  #include <stddef.h>
22
22
 
23
- #include <type_traits>
24
23
  #include <utility>
25
24
 
26
25
  #include "absl/memory/memory.h"
27
26
  #include "absl/status/status.h"
27
+ #include "absl/status/statusor.h"
28
28
  #include "absl/strings/str_cat.h"
29
- #include "absl/strings/str_format.h"
30
29
  #include "absl/strings/str_join.h"
30
+ #include "absl/strings/strip.h"
31
31
  #include "envoy/config/cluster/v3/circuit_breaker.upb.h"
32
32
  #include "envoy/config/cluster/v3/cluster.upb.h"
33
33
  #include "envoy/config/cluster/v3/cluster.upbdefs.h"
@@ -47,12 +47,12 @@
47
47
 
48
48
  #include <grpc/support/log.h>
49
49
 
50
+ #include "src/core/ext/xds/upb_utils.h"
50
51
  #include "src/core/ext/xds/xds_common_types.h"
51
52
  #include "src/core/ext/xds/xds_resource_type.h"
52
53
  #include "src/core/lib/debug/trace.h"
53
54
  #include "src/core/lib/gprpp/host_port.h"
54
55
  #include "src/core/lib/gprpp/time.h"
55
- #include "src/core/lib/iomgr/error.h"
56
56
 
57
57
  namespace grpc_core {
58
58
 
@@ -66,27 +66,26 @@ std::string XdsClusterResource::ToString() const {
66
66
  case EDS:
67
67
  contents.push_back("cluster_type=EDS");
68
68
  if (!eds_service_name.empty()) {
69
- contents.push_back(
70
- absl::StrFormat("eds_service_name=%s", eds_service_name));
69
+ contents.push_back(absl::StrCat("eds_service_name=", eds_service_name));
71
70
  }
72
71
  break;
73
72
  case LOGICAL_DNS:
74
73
  contents.push_back("cluster_type=LOGICAL_DNS");
75
- contents.push_back(absl::StrFormat("dns_hostname=%s", dns_hostname));
74
+ contents.push_back(absl::StrCat("dns_hostname=", dns_hostname));
76
75
  break;
77
76
  case AGGREGATE:
78
77
  contents.push_back("cluster_type=AGGREGATE");
79
78
  contents.push_back(
80
- absl::StrFormat("prioritized_cluster_names=[%s]",
81
- absl::StrJoin(prioritized_cluster_names, ", ")));
79
+ absl::StrCat("prioritized_cluster_names=[",
80
+ absl::StrJoin(prioritized_cluster_names, ", "), "]"));
82
81
  }
83
82
  if (!common_tls_context.Empty()) {
84
- contents.push_back(absl::StrFormat("common_tls_context=%s",
85
- common_tls_context.ToString()));
83
+ contents.push_back(
84
+ absl::StrCat("common_tls_context=", common_tls_context.ToString()));
86
85
  }
87
86
  if (lrs_load_reporting_server.has_value()) {
88
- contents.push_back(absl::StrFormat("lrs_load_reporting_server_name=%s",
89
- lrs_load_reporting_server->server_uri));
87
+ contents.push_back(absl::StrCat("lrs_load_reporting_server_name=",
88
+ lrs_load_reporting_server->server_uri()));
90
89
  }
91
90
  contents.push_back(absl::StrCat("lb_policy=", lb_policy));
92
91
  if (lb_policy == "RING_HASH") {
@@ -94,7 +93,7 @@ std::string XdsClusterResource::ToString() const {
94
93
  contents.push_back(absl::StrCat("max_ring_size=", max_ring_size));
95
94
  }
96
95
  contents.push_back(
97
- absl::StrFormat("max_concurrent_requests=%d", max_concurrent_requests));
96
+ absl::StrCat("max_concurrent_requests=", max_concurrent_requests));
98
97
  return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
99
98
  }
100
99
 
@@ -104,59 +103,60 @@ std::string XdsClusterResource::ToString() const {
104
103
 
105
104
  namespace {
106
105
 
107
- grpc_error_handle UpstreamTlsContextParse(
108
- const XdsEncodingContext& context,
109
- const envoy_config_core_v3_TransportSocket* transport_socket,
110
- CommonTlsContext* common_tls_context) {
111
- // Record Upstream tls context
112
- absl::string_view name = UpbStringToAbsl(
113
- envoy_config_core_v3_TransportSocket_name(transport_socket));
114
- if (name != "envoy.transport_sockets.tls") {
115
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
116
- absl::StrCat("Unrecognized transport socket: ", name));
117
- }
106
+ absl::StatusOr<CommonTlsContext> UpstreamTlsContextParse(
107
+ const XdsResourceType::DecodeContext& context,
108
+ const envoy_config_core_v3_TransportSocket* transport_socket) {
118
109
  auto* typed_config =
119
110
  envoy_config_core_v3_TransportSocket_typed_config(transport_socket);
120
- if (typed_config != nullptr) {
121
- const upb_StringView encoded_upstream_tls_context =
122
- google_protobuf_Any_value(typed_config);
123
- auto* upstream_tls_context =
124
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
125
- encoded_upstream_tls_context.data,
126
- encoded_upstream_tls_context.size, context.arena);
127
- if (upstream_tls_context == nullptr) {
128
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
129
- "Can't decode upstream tls context.");
130
- }
131
- auto* common_tls_context_proto =
132
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
133
- upstream_tls_context);
134
- if (common_tls_context_proto != nullptr) {
135
- grpc_error_handle error = CommonTlsContext::Parse(
136
- context, common_tls_context_proto, common_tls_context);
137
- if (!GRPC_ERROR_IS_NONE(error)) {
138
- return grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
139
- "Error parsing UpstreamTlsContext"),
140
- error);
141
- }
111
+ if (typed_config == nullptr) {
112
+ return absl::InvalidArgumentError("transport_socket.typed_config not set");
113
+ }
114
+ absl::string_view type_url = absl::StripPrefix(
115
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
116
+ "type.googleapis.com/");
117
+ if (type_url !=
118
+ "envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext") {
119
+ return absl::InvalidArgumentError(
120
+ absl::StrCat("Unrecognized transport socket type: ", type_url));
121
+ }
122
+ const upb_StringView encoded_upstream_tls_context =
123
+ google_protobuf_Any_value(typed_config);
124
+ auto* upstream_tls_context =
125
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
126
+ encoded_upstream_tls_context.data, encoded_upstream_tls_context.size,
127
+ context.arena);
128
+ if (upstream_tls_context == nullptr) {
129
+ return absl::InvalidArgumentError("Can't decode upstream tls context.");
130
+ }
131
+ auto* common_tls_context_proto =
132
+ envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
133
+ upstream_tls_context);
134
+ CommonTlsContext common_tls_context;
135
+ if (common_tls_context_proto != nullptr) {
136
+ auto common_context =
137
+ CommonTlsContext::Parse(context, common_tls_context_proto);
138
+ if (!common_context.ok()) {
139
+ return absl::InvalidArgumentError(
140
+ absl::StrCat("Error parsing UpstreamTlsContext: ",
141
+ common_context.status().message()));
142
142
  }
143
+ common_tls_context = std::move(*common_context);
143
144
  }
144
- if (common_tls_context->certificate_validation_context
145
+ if (common_tls_context.certificate_validation_context
145
146
  .ca_certificate_provider_instance.instance_name.empty()) {
146
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
147
+ return absl::InvalidArgumentError(
147
148
  "UpstreamTlsContext: TLS configuration provided but no "
148
149
  "ca_certificate_provider_instance found.");
149
150
  }
150
- return GRPC_ERROR_NONE;
151
+ return common_tls_context;
151
152
  }
152
153
 
153
- grpc_error_handle CdsLogicalDnsParse(
154
- const envoy_config_cluster_v3_Cluster* cluster,
155
- XdsClusterResource* cds_update) {
154
+ absl::Status CdsLogicalDnsParse(const envoy_config_cluster_v3_Cluster* cluster,
155
+ XdsClusterResource* cds_update) {
156
156
  const auto* load_assignment =
157
157
  envoy_config_cluster_v3_Cluster_load_assignment(cluster);
158
158
  if (load_assignment == nullptr) {
159
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
159
+ return absl::InvalidArgumentError(
160
160
  "load_assignment not present for LOGICAL_DNS cluster");
161
161
  }
162
162
  size_t num_localities;
@@ -164,7 +164,7 @@ grpc_error_handle CdsLogicalDnsParse(
164
164
  envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(load_assignment,
165
165
  &num_localities);
166
166
  if (num_localities != 1) {
167
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
167
+ return absl::InvalidArgumentError(
168
168
  absl::StrCat("load_assignment for LOGICAL_DNS cluster must have "
169
169
  "exactly one locality, found ",
170
170
  num_localities));
@@ -174,7 +174,7 @@ grpc_error_handle CdsLogicalDnsParse(
174
174
  envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(localities[0],
175
175
  &num_endpoints);
176
176
  if (num_endpoints != 1) {
177
- return GRPC_ERROR_CREATE_FROM_CPP_STRING(
177
+ return absl::InvalidArgumentError(
178
178
  absl::StrCat("locality for LOGICAL_DNS cluster must have "
179
179
  "exactly one endpoint, found ",
180
180
  num_endpoints));
@@ -182,54 +182,48 @@ grpc_error_handle CdsLogicalDnsParse(
182
182
  const auto* endpoint =
183
183
  envoy_config_endpoint_v3_LbEndpoint_endpoint(endpoints[0]);
184
184
  if (endpoint == nullptr) {
185
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
186
- "LbEndpoint endpoint field not set");
185
+ return absl::InvalidArgumentError("LbEndpoint endpoint field not set");
187
186
  }
188
187
  const auto* address = envoy_config_endpoint_v3_Endpoint_address(endpoint);
189
188
  if (address == nullptr) {
190
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
191
- "Endpoint address field not set");
189
+ return absl::InvalidArgumentError("Endpoint address field not set");
192
190
  }
193
191
  const auto* socket_address =
194
192
  envoy_config_core_v3_Address_socket_address(address);
195
193
  if (socket_address == nullptr) {
196
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
197
- "Address socket_address field not set");
194
+ return absl::InvalidArgumentError("Address socket_address field not set");
198
195
  }
199
196
  if (envoy_config_core_v3_SocketAddress_resolver_name(socket_address).size !=
200
197
  0) {
201
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
198
+ return absl::InvalidArgumentError(
202
199
  "LOGICAL_DNS clusters must NOT have a custom resolver name set");
203
200
  }
204
201
  absl::string_view address_str = UpbStringToAbsl(
205
202
  envoy_config_core_v3_SocketAddress_address(socket_address));
206
203
  if (address_str.empty()) {
207
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
208
- "SocketAddress address field not set");
204
+ return absl::InvalidArgumentError("SocketAddress address field not set");
209
205
  }
210
206
  if (!envoy_config_core_v3_SocketAddress_has_port_value(socket_address)) {
211
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
212
- "SocketAddress port_value field not set");
207
+ return absl::InvalidArgumentError("SocketAddress port_value field not set");
213
208
  }
214
209
  cds_update->dns_hostname = JoinHostPort(
215
210
  address_str,
216
211
  envoy_config_core_v3_SocketAddress_port_value(socket_address));
217
- return GRPC_ERROR_NONE;
212
+ return absl::OkStatus();
218
213
  }
219
214
 
220
- grpc_error_handle CdsResourceParse(
221
- const XdsEncodingContext& context,
222
- const envoy_config_cluster_v3_Cluster* cluster, bool /*is_v2*/,
223
- XdsClusterResource* cds_update) {
224
- std::vector<grpc_error_handle> errors;
215
+ absl::StatusOr<XdsClusterResource> CdsResourceParse(
216
+ const XdsResourceType::DecodeContext& context,
217
+ const envoy_config_cluster_v3_Cluster* cluster, bool /*is_v2*/) {
218
+ XdsClusterResource cds_update;
219
+ std::vector<std::string> errors;
225
220
  // Check the cluster_discovery_type.
226
221
  if (!envoy_config_cluster_v3_Cluster_has_type(cluster) &&
227
222
  !envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
228
- errors.push_back(
229
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType not found."));
223
+ errors.emplace_back("DiscoveryType not found.");
230
224
  } else if (envoy_config_cluster_v3_Cluster_type(cluster) ==
231
225
  envoy_config_cluster_v3_Cluster_EDS) {
232
- cds_update->cluster_type = XdsClusterResource::ClusterType::EDS;
226
+ cds_update.cluster_type = XdsClusterResource::ClusterType::EDS;
233
227
  // Check the EDS config source.
234
228
  const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
235
229
  envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
@@ -238,61 +232,60 @@ grpc_error_handle CdsResourceParse(
238
232
  eds_cluster_config);
239
233
  if (!envoy_config_core_v3_ConfigSource_has_ads(eds_config) &&
240
234
  !envoy_config_core_v3_ConfigSource_has_self(eds_config)) {
241
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
242
- "EDS ConfigSource is not ADS or SELF."));
235
+ errors.emplace_back("EDS ConfigSource is not ADS or SELF.");
243
236
  }
244
237
  // Record EDS service_name (if any).
245
238
  upb_StringView service_name =
246
239
  envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
247
240
  eds_cluster_config);
248
241
  if (service_name.size != 0) {
249
- cds_update->eds_service_name = UpbStringToStdString(service_name);
242
+ cds_update.eds_service_name = UpbStringToStdString(service_name);
250
243
  }
251
244
  } else if (envoy_config_cluster_v3_Cluster_type(cluster) ==
252
245
  envoy_config_cluster_v3_Cluster_LOGICAL_DNS) {
253
- cds_update->cluster_type = XdsClusterResource::ClusterType::LOGICAL_DNS;
254
- grpc_error_handle error = CdsLogicalDnsParse(cluster, cds_update);
255
- if (!GRPC_ERROR_IS_NONE(error)) errors.push_back(error);
246
+ cds_update.cluster_type = XdsClusterResource::ClusterType::LOGICAL_DNS;
247
+ absl::Status status = CdsLogicalDnsParse(cluster, &cds_update);
248
+ if (!status.ok()) errors.emplace_back(status.message());
256
249
  } else {
257
- if (!envoy_config_cluster_v3_Cluster_has_cluster_type(cluster)) {
258
- errors.push_back(
259
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not valid."));
250
+ const auto* custom_cluster_type =
251
+ envoy_config_cluster_v3_Cluster_cluster_type(cluster);
252
+ if (custom_cluster_type == nullptr) {
253
+ errors.push_back("DiscoveryType is not valid.");
260
254
  } else {
261
- const envoy_config_cluster_v3_Cluster_CustomClusterType*
262
- custom_cluster_type =
263
- envoy_config_cluster_v3_Cluster_cluster_type(cluster);
264
- upb_StringView type_name =
265
- envoy_config_cluster_v3_Cluster_CustomClusterType_name(
255
+ const auto* typed_config =
256
+ envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(
266
257
  custom_cluster_type);
267
- if (UpbStringToAbsl(type_name) != "envoy.clusters.aggregate") {
268
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
269
- "DiscoveryType is not valid."));
258
+ if (typed_config == nullptr) {
259
+ errors.push_back("cluster_type.typed_config not set");
270
260
  } else {
271
- cds_update->cluster_type = XdsClusterResource::ClusterType::AGGREGATE;
272
- // Retrieve aggregate clusters.
273
- const google_protobuf_Any* typed_config =
274
- envoy_config_cluster_v3_Cluster_CustomClusterType_typed_config(
275
- custom_cluster_type);
276
- const upb_StringView aggregate_cluster_config_upb_stringview =
277
- google_protobuf_Any_value(typed_config);
278
- const envoy_extensions_clusters_aggregate_v3_ClusterConfig*
279
- aggregate_cluster_config =
280
- envoy_extensions_clusters_aggregate_v3_ClusterConfig_parse(
281
- aggregate_cluster_config_upb_stringview.data,
282
- aggregate_cluster_config_upb_stringview.size,
283
- context.arena);
284
- if (aggregate_cluster_config == nullptr) {
285
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
286
- "Can't parse aggregate cluster."));
261
+ absl::string_view type_url = absl::StripPrefix(
262
+ UpbStringToAbsl(google_protobuf_Any_type_url(typed_config)),
263
+ "type.googleapis.com/");
264
+ if (type_url !=
265
+ "envoy.extensions.clusters.aggregate.v3.ClusterConfig") {
266
+ errors.push_back(
267
+ absl::StrCat("unknown cluster_type extension: ", type_url));
287
268
  } else {
288
- size_t size;
289
- const upb_StringView* clusters =
290
- envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(
291
- aggregate_cluster_config, &size);
292
- for (size_t i = 0; i < size; ++i) {
293
- const upb_StringView cluster = clusters[i];
294
- cds_update->prioritized_cluster_names.emplace_back(
295
- UpbStringToStdString(cluster));
269
+ cds_update.cluster_type = XdsClusterResource::ClusterType::AGGREGATE;
270
+ // Retrieve aggregate clusters.
271
+ const upb_StringView aggregate_cluster_config_upb_stringview =
272
+ google_protobuf_Any_value(typed_config);
273
+ const auto* aggregate_cluster_config =
274
+ envoy_extensions_clusters_aggregate_v3_ClusterConfig_parse(
275
+ aggregate_cluster_config_upb_stringview.data,
276
+ aggregate_cluster_config_upb_stringview.size, context.arena);
277
+ if (aggregate_cluster_config == nullptr) {
278
+ errors.emplace_back("Can't parse aggregate cluster.");
279
+ } else {
280
+ size_t size;
281
+ const upb_StringView* clusters =
282
+ envoy_extensions_clusters_aggregate_v3_ClusterConfig_clusters(
283
+ aggregate_cluster_config, &size);
284
+ for (size_t i = 0; i < size; ++i) {
285
+ const upb_StringView cluster = clusters[i];
286
+ cds_update.prioritized_cluster_names.emplace_back(
287
+ UpbStringToStdString(cluster));
288
+ }
296
289
  }
297
290
  }
298
291
  }
@@ -301,10 +294,10 @@ grpc_error_handle CdsResourceParse(
301
294
  // Check the LB policy.
302
295
  if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
303
296
  envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
304
- cds_update->lb_policy = "ROUND_ROBIN";
297
+ cds_update.lb_policy = "ROUND_ROBIN";
305
298
  } else if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
306
299
  envoy_config_cluster_v3_Cluster_RING_HASH) {
307
- cds_update->lb_policy = "RING_HASH";
300
+ cds_update.lb_policy = "RING_HASH";
308
301
  // Record ring hash lb config
309
302
  auto* ring_hash_config =
310
303
  envoy_config_cluster_v3_Cluster_ring_hash_lb_config(cluster);
@@ -313,51 +306,49 @@ grpc_error_handle CdsResourceParse(
313
306
  envoy_config_cluster_v3_Cluster_RingHashLbConfig_maximum_ring_size(
314
307
  ring_hash_config);
315
308
  if (max_ring_size != nullptr) {
316
- cds_update->max_ring_size =
309
+ cds_update.max_ring_size =
317
310
  google_protobuf_UInt64Value_value(max_ring_size);
318
- if (cds_update->max_ring_size > 8388608 ||
319
- cds_update->max_ring_size == 0) {
320
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
321
- "max_ring_size is not in the range of 1 to 8388608."));
311
+ if (cds_update.max_ring_size > 8388608 ||
312
+ cds_update.max_ring_size == 0) {
313
+ errors.emplace_back(
314
+ "max_ring_size is not in the range of 1 to 8388608.");
322
315
  }
323
316
  }
324
317
  const google_protobuf_UInt64Value* min_ring_size =
325
318
  envoy_config_cluster_v3_Cluster_RingHashLbConfig_minimum_ring_size(
326
319
  ring_hash_config);
327
320
  if (min_ring_size != nullptr) {
328
- cds_update->min_ring_size =
321
+ cds_update.min_ring_size =
329
322
  google_protobuf_UInt64Value_value(min_ring_size);
330
- if (cds_update->min_ring_size > 8388608 ||
331
- cds_update->min_ring_size == 0) {
332
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
333
- "min_ring_size is not in the range of 1 to 8388608."));
323
+ if (cds_update.min_ring_size > 8388608 ||
324
+ cds_update.min_ring_size == 0) {
325
+ errors.emplace_back(
326
+ "min_ring_size is not in the range of 1 to 8388608.");
334
327
  }
335
- if (cds_update->min_ring_size > cds_update->max_ring_size) {
336
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
337
- "min_ring_size cannot be greater than max_ring_size."));
328
+ if (cds_update.min_ring_size > cds_update.max_ring_size) {
329
+ errors.emplace_back(
330
+ "min_ring_size cannot be greater than max_ring_size.");
338
331
  }
339
332
  }
340
333
  if (envoy_config_cluster_v3_Cluster_RingHashLbConfig_hash_function(
341
334
  ring_hash_config) !=
342
335
  envoy_config_cluster_v3_Cluster_RingHashLbConfig_XX_HASH) {
343
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
344
- "ring hash lb config has invalid hash function."));
336
+ errors.emplace_back("ring hash lb config has invalid hash function.");
345
337
  }
346
338
  }
347
339
  } else {
348
- errors.push_back(
349
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("LB policy is not supported."));
340
+ errors.emplace_back("LB policy is not supported.");
350
341
  }
351
342
  auto* transport_socket =
352
343
  envoy_config_cluster_v3_Cluster_transport_socket(cluster);
353
344
  if (transport_socket != nullptr) {
354
- grpc_error_handle error = UpstreamTlsContextParse(
355
- context, transport_socket, &cds_update->common_tls_context);
356
- if (!GRPC_ERROR_IS_NONE(error)) {
357
- errors.push_back(
358
- grpc_error_add_child(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
359
- "Error parsing security configuration"),
360
- error));
345
+ auto common_tls_context =
346
+ UpstreamTlsContextParse(context, transport_socket);
347
+ if (!common_tls_context.ok()) {
348
+ errors.emplace_back(absl::StrCat("Error parsing security configuration: ",
349
+ common_tls_context.status().message()));
350
+ } else {
351
+ cds_update.common_tls_context = std::move(*common_tls_context);
361
352
  }
362
353
  }
363
354
  // Record LRS server name (if any).
@@ -365,10 +356,10 @@ grpc_error_handle CdsResourceParse(
365
356
  envoy_config_cluster_v3_Cluster_lrs_server(cluster);
366
357
  if (lrs_server != nullptr) {
367
358
  if (!envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
368
- errors.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
369
- ": LRS ConfigSource is not self."));
359
+ errors.emplace_back("LRS ConfigSource is not self.");
370
360
  }
371
- cds_update->lrs_load_reporting_server.emplace(context.server);
361
+ cds_update.lrs_load_reporting_server.emplace(
362
+ static_cast<const GrpcXdsBootstrap::GrpcXdsServer&>(context.server));
372
363
  }
373
364
  // The Cluster resource encodes the circuit breaking parameters in a list of
374
365
  // Thresholds messages, where each message specifies the parameters for a
@@ -389,7 +380,7 @@ grpc_error_handle CdsResourceParse(
389
380
  envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_requests(
390
381
  threshold);
391
382
  if (max_requests != nullptr) {
392
- cds_update->max_concurrent_requests =
383
+ cds_update.max_concurrent_requests =
393
384
  google_protobuf_UInt32Value_value(max_requests);
394
385
  }
395
386
  break;
@@ -497,12 +488,17 @@ grpc_error_handle CdsResourceParse(
497
488
  failure_percentage_ejection;
498
489
  }
499
490
  }
500
- cds_update->outlier_detection = outlier_detection_update;
491
+ cds_update.outlier_detection = outlier_detection_update;
492
+ }
493
+ // Return result.
494
+ if (!errors.empty()) {
495
+ return absl::InvalidArgumentError(absl::StrCat(
496
+ "errors parsing CDS resource: [", absl::StrJoin(errors, "; "), "]"));
501
497
  }
502
- return GRPC_ERROR_CREATE_FROM_VECTOR("errors parsing CDS resource", &errors);
498
+ return cds_update;
503
499
  }
504
500
 
505
- void MaybeLogCluster(const XdsEncodingContext& context,
501
+ void MaybeLogCluster(const XdsResourceType::DecodeContext& context,
506
502
  const envoy_config_cluster_v3_Cluster* cluster) {
507
503
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
508
504
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
@@ -516,39 +512,40 @@ void MaybeLogCluster(const XdsEncodingContext& context,
516
512
 
517
513
  } // namespace
518
514
 
519
- absl::StatusOr<XdsResourceType::DecodeResult> XdsClusterResourceType::Decode(
520
- const XdsEncodingContext& context, absl::string_view serialized_resource,
521
- bool is_v2) const {
515
+ XdsResourceType::DecodeResult XdsClusterResourceType::Decode(
516
+ const XdsResourceType::DecodeContext& context,
517
+ absl::string_view serialized_resource, bool is_v2) const {
518
+ DecodeResult result;
522
519
  // Parse serialized proto.
523
520
  auto* resource = envoy_config_cluster_v3_Cluster_parse(
524
521
  serialized_resource.data(), serialized_resource.size(), context.arena);
525
522
  if (resource == nullptr) {
526
- return absl::InvalidArgumentError("Can't parse Cluster resource.");
523
+ result.resource =
524
+ absl::InvalidArgumentError("Can't parse Cluster resource.");
525
+ return result;
527
526
  }
528
527
  MaybeLogCluster(context, resource);
529
528
  // Validate resource.
530
- DecodeResult result;
531
529
  result.name =
532
530
  UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(resource));
533
- auto cluster_data = absl::make_unique<ResourceDataSubclass>();
534
- grpc_error_handle error =
535
- CdsResourceParse(context, resource, is_v2, &cluster_data->resource);
536
- if (!GRPC_ERROR_IS_NONE(error)) {
537
- std::string error_str = grpc_error_std_string(error);
538
- GRPC_ERROR_UNREF(error);
531
+ auto cds_resource = CdsResourceParse(context, resource, is_v2);
532
+ if (!cds_resource.ok()) {
539
533
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
540
534
  gpr_log(GPR_ERROR, "[xds_client %p] invalid Cluster %s: %s",
541
- context.client, result.name.c_str(), error_str.c_str());
535
+ context.client, result.name->c_str(),
536
+ cds_resource.status().ToString().c_str());
542
537
  }
543
- result.resource = absl::InvalidArgumentError(error_str);
538
+ result.resource = cds_resource.status();
544
539
  } else {
545
540
  if (GRPC_TRACE_FLAG_ENABLED(*context.tracer)) {
546
541
  gpr_log(GPR_INFO, "[xds_client %p] parsed Cluster %s: %s", context.client,
547
- result.name.c_str(), cluster_data->resource.ToString().c_str());
542
+ result.name->c_str(), cds_resource->ToString().c_str());
548
543
  }
549
- result.resource = std::move(cluster_data);
544
+ auto resource = absl::make_unique<ResourceDataSubclass>();
545
+ resource->resource = std::move(*cds_resource);
546
+ result.resource = std::move(resource);
550
547
  }
551
- return std::move(result);
548
+ return result;
552
549
  }
553
550
 
554
551
  } // namespace grpc_core
@@ -26,7 +26,6 @@
26
26
  #include <string>
27
27
  #include <vector>
28
28
 
29
- #include "absl/status/statusor.h"
30
29
  #include "absl/strings/string_view.h"
31
30
  #include "absl/types/optional.h"
32
31
  #include "envoy/config/cluster/v3/cluster.upbdefs.h"
@@ -35,9 +34,10 @@
35
34
  #include "upb/def.h"
36
35
 
37
36
  #include "src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h"
38
- #include "src/core/ext/xds/upb_utils.h"
39
37
  #include "src/core/ext/xds/xds_bootstrap.h"
38
+ #include "src/core/ext/xds/xds_bootstrap_grpc.h"
40
39
  #include "src/core/ext/xds/xds_common_types.h"
40
+ #include "src/core/ext/xds/xds_resource_type.h"
41
41
  #include "src/core/ext/xds/xds_resource_type_impl.h"
42
42
 
43
43
  namespace grpc_core {
@@ -61,7 +61,7 @@ struct XdsClusterResource {
61
61
 
62
62
  // The LRS server to use for load reporting.
63
63
  // If not set, load reporting will be disabled.
64
- absl::optional<XdsBootstrap::XdsServer> lrs_load_reporting_server;
64
+ absl::optional<GrpcXdsBootstrap::GrpcXdsServer> lrs_load_reporting_server;
65
65
 
66
66
  // The LB policy to use (e.g., "ROUND_ROBIN" or "RING_HASH").
67
67
  std::string lb_policy;
@@ -84,7 +84,8 @@ struct XdsClusterResource {
84
84
  lb_policy == other.lb_policy &&
85
85
  min_ring_size == other.min_ring_size &&
86
86
  max_ring_size == other.max_ring_size &&
87
- max_concurrent_requests == other.max_concurrent_requests;
87
+ max_concurrent_requests == other.max_concurrent_requests &&
88
+ outlier_detection == other.outlier_detection;
88
89
  }
89
90
 
90
91
  std::string ToString() const;
@@ -100,9 +101,9 @@ class XdsClusterResourceType
100
101
  return "envoy.api.v2.Cluster";
101
102
  }
102
103
 
103
- absl::StatusOr<DecodeResult> Decode(const XdsEncodingContext& context,
104
- absl::string_view serialized_resource,
105
- bool is_v2) const override;
104
+ DecodeResult Decode(const XdsResourceType::DecodeContext& context,
105
+ absl::string_view serialized_resource,
106
+ bool is_v2) const override;
106
107
 
107
108
  bool AllResourcesRequiredInSotW() const override { return true; }
108
109
 
@@ -28,13 +28,14 @@
28
28
  #include "absl/status/status.h"
29
29
  #include "absl/strings/str_cat.h"
30
30
  #include "upb/json_encode.h"
31
+ #include "upb/status.h"
31
32
  #include "upb/upb.hpp"
32
33
 
33
34
  #include <grpc/support/log.h>
34
35
 
35
- #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
36
- #include "src/core/lib/iomgr/error.h"
36
+ #include "src/core/lib/config/core_configuration.h"
37
37
  #include "src/core/lib/json/json.h"
38
+ #include "src/core/lib/load_balancing/lb_policy_registry.h"
38
39
  #include "src/proto/grpc/lookup/v1/rls_config.upb.h"
39
40
  #include "src/proto/grpc/lookup/v1/rls_config.upbdefs.h"
40
41
 
@@ -78,10 +79,9 @@ XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig(
78
79
  upb_JsonEncode(plugin_config, msg_type, symtab, 0,
79
80
  reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
80
81
  Json::Object rls_policy;
81
- grpc_error_handle error = GRPC_ERROR_NONE;
82
- rls_policy["routeLookupConfig"] =
83
- Json::Parse(reinterpret_cast<char*>(buf), &error);
84
- GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
82
+ auto json = Json::Parse(reinterpret_cast<char*>(buf));
83
+ GPR_ASSERT(json.ok());
84
+ rls_policy["routeLookupConfig"] = std::move(*json);
85
85
  Json::Object cds_policy;
86
86
  cds_policy["cds_experimental"] = Json::Object();
87
87
  Json::Array child_policy;
@@ -93,20 +93,18 @@ XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig(
93
93
  Json::Array policies;
94
94
  policies.emplace_back(std::move(policy));
95
95
  Json lb_policy_config(std::move(policies));
96
- grpc_error_handle parse_error = GRPC_ERROR_NONE;
97
96
  // TODO(roth): If/when we ever add a second plugin, refactor this code
98
97
  // somehow such that we automatically validate the resulting config against
99
98
  // the gRPC LB policy registry instead of requiring each plugin to do that
100
99
  // itself.
101
- LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(lb_policy_config,
102
- &parse_error);
103
- if (!GRPC_ERROR_IS_NONE(parse_error)) {
104
- absl::Status status = absl::InvalidArgumentError(absl::StrCat(
100
+ auto config =
101
+ CoreConfiguration::Get().lb_policy_registry().ParseLoadBalancingConfig(
102
+ lb_policy_config);
103
+ if (!config.ok()) {
104
+ return absl::InvalidArgumentError(absl::StrCat(
105
105
  kXdsRouteLookupClusterSpecifierPluginConfigName,
106
106
  " ClusterSpecifierPlugin returned invalid LB policy config: ",
107
- grpc_error_std_string(parse_error)));
108
- GRPC_ERROR_UNREF(parse_error);
109
- return status;
107
+ config.status().message()));
110
108
  }
111
109
  return lb_policy_config.Dump();
112
110
  }