grpc 1.63.0 → 1.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2453) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +179 -146
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +1221 -0
  5. data/include/grpc/event_engine/README.md +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +2 -2
  7. data/include/grpc/event_engine/event_engine.h +39 -15
  8. data/include/grpc/event_engine/extensible.h +5 -2
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  10. data/include/grpc/event_engine/internal/slice_cast.h +1 -1
  11. data/include/grpc/event_engine/memory_allocator.h +3 -4
  12. data/include/grpc/event_engine/memory_request.h +19 -2
  13. data/include/grpc/event_engine/slice.h +3 -5
  14. data/include/grpc/event_engine/slice_buffer.h +6 -8
  15. data/include/grpc/grpc.h +8 -2
  16. data/include/grpc/grpc_audit_logging.h +3 -3
  17. data/include/grpc/grpc_crl_provider.h +5 -4
  18. data/include/grpc/grpc_posix.h +1 -2
  19. data/include/grpc/grpc_security.h +1 -1173
  20. data/include/grpc/impl/call.h +2 -2
  21. data/include/grpc/impl/channel_arg_names.h +10 -7
  22. data/include/grpc/impl/grpc_types.h +1 -2
  23. data/include/grpc/impl/slice_type.h +1 -2
  24. data/include/grpc/module.modulemap +2 -0
  25. data/include/grpc/passive_listener.h +62 -0
  26. data/include/grpc/support/alloc.h +1 -2
  27. data/include/grpc/support/json.h +1 -2
  28. data/include/grpc/support/log.h +37 -64
  29. data/include/grpc/support/metrics.h +21 -6
  30. data/include/grpc/support/port_platform.h +31 -1
  31. data/include/grpc/support/sync_generic.h +2 -4
  32. data/include/grpc/support/sync_posix.h +1 -2
  33. data/include/grpc/support/time.h +1 -2
  34. data/src/core/{lib/channel → channelz}/channel_trace.cc +60 -67
  35. data/src/core/{lib/channel → channelz}/channel_trace.h +23 -23
  36. data/src/core/{lib/channel → channelz}/channelz.cc +74 -14
  37. data/src/core/{lib/channel → channelz}/channelz.h +58 -21
  38. data/src/core/{lib/channel → channelz}/channelz_registry.cc +14 -14
  39. data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -7
  40. data/src/core/client_channel/backup_poller.cc +25 -16
  41. data/src/core/client_channel/client_channel.cc +1426 -0
  42. data/src/core/client_channel/client_channel.h +245 -0
  43. data/src/core/client_channel/client_channel_factory.cc +2 -2
  44. data/src/core/client_channel/client_channel_factory.h +1 -2
  45. data/src/core/client_channel/client_channel_filter.cc +397 -914
  46. data/src/core/client_channel/client_channel_filter.h +25 -80
  47. data/src/core/client_channel/client_channel_internal.h +26 -11
  48. data/src/core/client_channel/client_channel_plugin.cc +3 -18
  49. data/src/core/client_channel/client_channel_service_config.cc +2 -3
  50. data/src/core/client_channel/client_channel_service_config.h +8 -10
  51. data/src/core/client_channel/config_selector.h +25 -25
  52. data/src/core/client_channel/connector.h +4 -4
  53. data/src/core/client_channel/direct_channel.cc +83 -0
  54. data/src/core/client_channel/direct_channel.h +101 -0
  55. data/src/core/client_channel/dynamic_filters.cc +19 -16
  56. data/src/core/client_channel/dynamic_filters.h +9 -10
  57. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  58. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  59. data/src/core/client_channel/lb_metadata.cc +120 -0
  60. data/src/core/client_channel/lb_metadata.h +55 -0
  61. data/src/core/client_channel/load_balanced_call_destination.cc +273 -0
  62. data/src/core/client_channel/load_balanced_call_destination.h +48 -0
  63. data/src/core/client_channel/local_subchannel_pool.cc +6 -7
  64. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  65. data/src/core/client_channel/retry_filter.cc +8 -17
  66. data/src/core/client_channel/retry_filter.h +9 -17
  67. data/src/core/client_channel/retry_filter_legacy_call_data.cc +214 -323
  68. data/src/core/client_channel/retry_filter_legacy_call_data.h +11 -14
  69. data/src/core/client_channel/retry_service_config.cc +10 -13
  70. data/src/core/client_channel/retry_service_config.h +6 -8
  71. data/src/core/client_channel/retry_throttle.cc +3 -4
  72. data/src/core/client_channel/retry_throttle.h +4 -7
  73. data/src/core/client_channel/subchannel.cc +293 -174
  74. data/src/core/client_channel/subchannel.h +48 -41
  75. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  76. data/src/core/client_channel/subchannel_pool_interface.cc +1 -5
  77. data/src/core/client_channel/subchannel_pool_interface.h +4 -7
  78. data/src/core/client_channel/subchannel_stream_client.cc +47 -61
  79. data/src/core/client_channel/subchannel_stream_client.h +10 -14
  80. data/src/core/{lib/config → config}/config_vars.cc +16 -19
  81. data/src/core/{lib/config → config}/config_vars.h +12 -15
  82. data/src/core/{lib/config → config}/config_vars_non_generated.cc +1 -1
  83. data/src/core/{lib/config → config}/core_configuration.cc +10 -10
  84. data/src/core/{lib/config → config}/core_configuration.h +10 -12
  85. data/src/core/{lib/config → config}/load_config.cc +5 -7
  86. data/src/core/{lib/config → config}/load_config.h +3 -4
  87. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +27 -31
  88. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +5 -3
  89. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  90. data/src/core/ext/filters/census/grpc_context.cc +7 -10
  91. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  92. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  93. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +44 -47
  94. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +22 -19
  95. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +25 -29
  96. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -7
  97. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -3
  98. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +7 -10
  99. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +205 -0
  100. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  101. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  102. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  103. data/src/core/ext/filters/http/client/http_client_filter.cc +19 -12
  104. data/src/core/ext/filters/http/client/http_client_filter.h +8 -6
  105. data/src/core/ext/filters/http/client_authority_filter.cc +13 -11
  106. data/src/core/ext/filters/http/client_authority_filter.h +8 -5
  107. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  108. data/src/core/ext/filters/http/message_compress/compression_filter.cc +59 -54
  109. data/src/core/ext/filters/http/message_compress/compression_filter.h +16 -12
  110. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -15
  111. data/src/core/ext/filters/http/server/http_server_filter.h +8 -6
  112. data/src/core/ext/filters/message_size/message_size_filter.cc +42 -51
  113. data/src/core/ext/filters/message_size/message_size_filter.h +20 -16
  114. data/src/core/ext/filters/rbac/rbac_filter.cc +20 -18
  115. data/src/core/ext/filters/rbac/rbac_filter.h +8 -7
  116. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -10
  117. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -5
  118. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +26 -28
  119. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +8 -6
  120. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +2 -3
  121. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +6 -8
  122. data/src/core/ext/transport/chttp2/alpn/alpn.cc +4 -5
  123. data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -1
  124. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +85 -117
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +5 -12
  126. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +436 -324
  127. data/src/core/ext/transport/chttp2/server/chttp2_server.h +34 -1
  128. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +26 -38
  129. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -3
  130. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +10 -12
  131. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -3
  132. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  133. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  134. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +688 -562
  135. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -16
  136. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -2
  137. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  138. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -16
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -9
  141. data/src/core/ext/transport/chttp2/transport/frame.cc +25 -8
  142. data/src/core/ext/transport/chttp2/transport/frame.h +11 -2
  143. data/src/core/ext/transport/chttp2/transport/frame_data.cc +21 -22
  144. data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -5
  145. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -10
  146. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -3
  147. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +16 -21
  148. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -3
  149. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
  150. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  151. data/src/core/ext/transport/chttp2/transport/frame_security.cc +82 -0
  152. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +36 -21
  154. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -4
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +31 -10
  156. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -4
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +21 -22
  158. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +18 -15
  159. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -10
  160. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -4
  161. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -5
  162. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -8
  163. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +79 -74
  164. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -6
  165. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +45 -20
  166. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +28 -9
  167. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +12 -4
  168. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -4
  169. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  170. data/src/core/ext/transport/chttp2/transport/internal.h +71 -81
  171. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  172. data/src/core/ext/transport/chttp2/transport/parsing.cc +135 -121
  173. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +3 -4
  174. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +1 -1
  175. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +4 -7
  176. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +2 -7
  177. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +33 -19
  178. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +6 -7
  179. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -21
  180. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  181. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  182. data/src/core/ext/transport/chttp2/transport/varint.h +2 -3
  183. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -4
  184. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -3
  185. data/src/core/ext/transport/chttp2/transport/writing.cc +178 -140
  186. data/src/core/ext/transport/inproc/inproc_transport.cc +155 -73
  187. data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
  188. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +127 -129
  189. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
  190. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +46 -15
  191. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +40 -18
  192. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  193. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +59 -27
  194. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +36 -18
  195. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  196. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +50 -15
  197. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +44 -22
  198. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +187 -54
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +162 -84
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  202. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +11 -5
  203. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +14 -4
  204. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +19 -6
  206. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +18 -8
  207. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +11 -10
  209. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +7 -1
  210. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +8 -7
  212. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -1
  213. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  214. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +8 -7
  215. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -1
  216. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  217. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +129 -82
  218. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +39 -27
  219. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  220. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +9 -6
  221. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +10 -4
  222. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  223. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +9 -8
  224. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  225. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  226. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +18 -8
  227. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +13 -6
  228. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  229. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +91 -34
  230. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +114 -48
  231. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  232. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +544 -254
  233. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +265 -149
  234. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +29 -4
  235. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +41 -14
  236. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +31 -17
  237. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  238. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +499 -141
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +268 -143
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +31 -4
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +12 -7
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +11 -5
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +171 -27
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +54 -27
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  247. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +127 -35
  248. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +125 -63
  249. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  250. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +67 -27
  251. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +60 -26
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +11 -6
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +11 -5
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +755 -72
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +320 -75
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +39 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +67 -25
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +57 -27
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +8 -5
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +10 -4
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +9 -6
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +10 -4
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +11 -5
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +14 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +201 -62
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +120 -53
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +196 -62
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +95 -53
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +13 -5
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +11 -5
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +10 -7
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +10 -4
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +231 -76
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +150 -78
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +10 -7
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +14 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +15 -7
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +15 -5
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +16 -10
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +14 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +7 -4
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +23 -11
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +17 -7
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +11 -6
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +11 -5
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  301. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +42 -11
  302. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +35 -17
  303. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  304. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +106 -34
  305. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +69 -37
  306. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  307. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +281 -37
  308. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +81 -27
  309. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +12 -4
  310. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +8 -5
  311. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +10 -4
  312. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  313. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +142 -47
  314. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +90 -47
  315. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  316. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +91 -29
  317. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +68 -38
  318. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +12 -4
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +93 -13
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +24 -14
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +14 -7
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -6
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  325. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +14 -9
  326. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +11 -5
  327. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  328. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +51 -22
  329. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +58 -24
  330. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  331. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +68 -21
  332. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +71 -29
  333. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  334. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +159 -38
  335. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +105 -57
  336. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +16 -4
  337. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +61 -13
  338. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +33 -19
  339. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  340. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +708 -233
  341. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +499 -262
  342. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +63 -4
  343. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -10
  344. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +22 -8
  345. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  346. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +100 -35
  347. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +95 -45
  348. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +118 -16
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +43 -12
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +8 -4
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +9 -6
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +10 -4
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +12 -7
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +17 -7
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +10 -7
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +10 -4
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +22 -15
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +12 -6
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +6 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +20 -8
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +13 -7
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +8 -5
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +10 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +17 -10
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +18 -8
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -4
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -1
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -4
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +19 -10
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +19 -9
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +14 -11
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -4
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  382. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +216 -102
  383. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +124 -57
  384. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  385. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  386. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +7 -1
  387. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  388. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +24 -11
  389. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +33 -11
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +42 -22
  392. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -13
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +56 -13
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +29 -13
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +29 -12
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +20 -10
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +13 -8
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +17 -7
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +327 -134
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +208 -121
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +8 -5
  410. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +10 -4
  411. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +23 -10
  413. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +15 -9
  414. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +6 -4
  415. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +31 -14
  416. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +39 -17
  417. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +6 -5
  419. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +7 -1
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +22 -11
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +14 -8
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +8 -5
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +10 -4
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +106 -0
  428. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +52 -0
  429. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  430. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  431. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +170 -31
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +83 -37
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +14 -4
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +25 -12
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +27 -13
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +112 -39
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +73 -43
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +14 -6
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +17 -7
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  445. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +58 -20
  446. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +44 -26
  447. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  448. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  449. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +7 -1
  450. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  451. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +122 -40
  452. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +105 -47
  453. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +19 -4
  454. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +18 -8
  455. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +18 -8
  456. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  457. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +65 -24
  458. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +47 -25
  459. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  460. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -7
  461. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +10 -4
  462. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  463. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +16 -6
  464. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +26 -8
  465. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +9 -6
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +10 -4
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +10 -9
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +23 -1
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +16 -8
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +15 -5
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +13 -5
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +11 -5
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +9 -6
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +10 -4
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +8 -5
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +10 -4
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +16 -9
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +24 -10
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +11 -1
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +51 -10
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +30 -9
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +14 -6
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +15 -5
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +30 -12
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +32 -14
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  499. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +24 -10
  500. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +40 -10
  501. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  502. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +30 -17
  503. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +33 -11
  504. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  505. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +12 -7
  506. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +19 -5
  507. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  508. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  509. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  510. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  511. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +6 -5
  512. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +7 -1
  513. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +8 -7
  515. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +11 -1
  516. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +11 -10
  518. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -1
  519. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +14 -9
  521. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +15 -5
  522. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  523. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  524. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  525. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  526. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +8 -7
  527. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -1
  528. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +12 -7
  530. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +11 -5
  531. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  532. data/src/core/ext/upb-gen/google/api/annotations.upb.h +17 -7
  533. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  534. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  535. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +135 -36
  536. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +121 -56
  537. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  538. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +525 -69
  539. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +202 -68
  540. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  541. data/src/core/ext/upb-gen/google/api/http.upb.h +30 -16
  542. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -8
  543. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  544. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +12 -6
  545. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +10 -4
  546. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  547. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +8 -6
  548. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +7 -1
  549. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  550. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +583 -181
  551. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +376 -215
  552. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +56 -21
  553. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +8 -6
  554. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +7 -1
  555. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  556. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  557. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +7 -1
  558. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  559. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +33 -10
  560. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +32 -14
  561. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  562. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +8 -6
  563. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +7 -1
  564. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  565. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +15 -13
  566. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +39 -1
  567. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  568. data/src/core/ext/upb-gen/google/rpc/status.upb.h +12 -6
  569. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +10 -4
  570. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  571. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +22 -14
  572. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +24 -6
  573. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +9 -4
  574. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +19 -10
  575. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +15 -5
  576. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  577. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +98 -39
  578. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +87 -37
  579. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +14 -8
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +15 -5
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +8 -6
  584. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +11 -1
  585. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  586. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +47 -22
  587. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +58 -20
  588. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  589. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +16 -8
  590. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +18 -4
  591. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  592. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +72 -19
  593. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +60 -22
  594. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  595. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +69 -23
  596. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +31 -12
  597. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  598. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +19 -9
  599. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +13 -6
  600. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  601. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +6 -5
  602. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  603. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  604. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +19 -9
  605. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +13 -6
  606. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  607. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +18 -8
  608. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +13 -6
  609. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  610. data/src/core/ext/upb-gen/validate/validate.upb.h +264 -172
  611. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +185 -87
  612. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  613. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +69 -23
  614. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +31 -12
  615. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  616. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +19 -9
  617. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +13 -6
  618. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  619. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +6 -5
  620. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  621. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  622. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +46 -18
  623. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +32 -11
  624. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  625. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +18 -8
  626. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +13 -6
  627. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  628. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +6 -5
  629. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +7 -1
  630. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  631. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +9 -6
  632. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +10 -4
  633. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +16 -9
  635. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +18 -8
  636. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  638. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +14 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +9 -6
  641. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +10 -4
  642. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  643. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +12 -7
  644. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +11 -5
  645. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  646. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +21 -11
  647. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +18 -8
  648. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  649. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +11 -8
  650. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +10 -4
  651. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  652. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +29 -10
  653. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +24 -6
  654. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  655. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +8 -5
  656. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +10 -4
  657. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +9 -6
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +10 -4
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +13 -5
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +17 -7
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +7 -1
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +19 -6
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +18 -8
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +81 -22
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +85 -43
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +44 -7
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +48 -22
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +9 -6
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +14 -4
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +18 -10
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +17 -7
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  682. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +17 -8
  683. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +19 -9
  684. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  685. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +12 -10
  686. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -1
  687. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  688. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +9 -6
  689. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +10 -4
  690. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  692. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +88 -82
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +63 -61
  718. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +223 -211
  720. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +10 -4
  721. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +319 -298
  724. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +10 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  726. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +116 -106
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  730. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +187 -141
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +30 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +12 -12
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +175 -165
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +199 -188
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +231 -223
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  767. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +41 -37
  768. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +124 -94
  770. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +10 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +43 -40
  774. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +22 -13
  778. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  781. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  782. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  785. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +71 -66
  788. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +613 -605
  792. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  796. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +32 -21
  798. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +10 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +20 -18
  800. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +64 -60
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +5 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +23 -21
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +147 -143
  820. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +38 -34
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +292 -289
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +53 -0
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +84 -76
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +10 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +2 -1
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  862. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  863. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +41 -34
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  890. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  912. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  914. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  915. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  916. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  920. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +485 -458
  922. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -4
  923. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  930. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  999. data/src/core/filter/blackboard.cc +33 -0
  1000. data/src/core/filter/blackboard.h +70 -0
  1001. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +16 -15
  1002. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +4 -4
  1003. data/src/core/handshaker/handshaker.cc +199 -0
  1004. data/src/core/{lib/transport → handshaker}/handshaker.h +60 -55
  1005. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
  1006. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +2 -3
  1007. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +4 -4
  1008. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +123 -164
  1009. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +4 -4
  1010. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +35 -42
  1011. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +5 -6
  1012. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1013. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1014. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +3 -4
  1015. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +2 -2
  1016. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +4 -5
  1017. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +98 -85
  1018. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +10 -12
  1019. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +176 -230
  1020. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +7 -9
  1021. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +53 -67
  1022. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +4 -4
  1023. data/src/core/lib/address_utils/parse_address.cc +33 -44
  1024. data/src/core/lib/address_utils/parse_address.h +1 -3
  1025. data/src/core/lib/address_utils/sockaddr_utils.cc +22 -19
  1026. data/src/core/lib/address_utils/sockaddr_utils.h +0 -2
  1027. data/src/core/lib/channel/channel_args.cc +20 -26
  1028. data/src/core/lib/channel/channel_args.h +34 -21
  1029. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1030. data/src/core/lib/channel/channel_args_preconditioning.h +2 -3
  1031. data/src/core/lib/channel/channel_stack.cc +19 -81
  1032. data/src/core/lib/channel/channel_stack.h +27 -63
  1033. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1034. data/src/core/lib/channel/channel_stack_builder.h +1 -7
  1035. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -157
  1036. data/src/core/lib/channel/channel_stack_builder_impl.h +13 -3
  1037. data/src/core/lib/channel/connected_channel.cc +49 -706
  1038. data/src/core/lib/channel/promise_based_filter.cc +249 -324
  1039. data/src/core/lib/channel/promise_based_filter.h +264 -559
  1040. data/src/core/lib/channel/status_util.cc +2 -4
  1041. data/src/core/lib/channel/status_util.h +1 -2
  1042. data/src/core/lib/compression/compression.cc +7 -10
  1043. data/src/core/lib/compression/compression_internal.cc +7 -10
  1044. data/src/core/lib/compression/compression_internal.h +2 -5
  1045. data/src/core/lib/compression/message_compress.cc +16 -18
  1046. data/src/core/lib/compression/message_compress.h +1 -2
  1047. data/src/core/lib/debug/trace.cc +48 -67
  1048. data/src/core/lib/debug/trace.h +2 -97
  1049. data/src/core/lib/debug/trace_flags.cc +242 -0
  1050. data/src/core/lib/debug/trace_flags.h +131 -0
  1051. data/src/core/lib/debug/trace_impl.h +125 -0
  1052. data/src/core/lib/event_engine/ares_resolver.cc +165 -92
  1053. data/src/core/lib/event_engine/ares_resolver.h +11 -18
  1054. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +14 -15
  1055. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  1056. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +47 -34
  1057. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +4 -6
  1058. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +1 -1
  1059. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +28 -31
  1060. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +5 -6
  1061. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +3 -5
  1062. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -3
  1063. data/src/core/lib/event_engine/common_closures.h +1 -2
  1064. data/src/core/lib/event_engine/default_event_engine.cc +13 -16
  1065. data/src/core/lib/event_engine/default_event_engine.h +3 -4
  1066. data/src/core/lib/event_engine/default_event_engine_factory.cc +3 -4
  1067. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  1068. data/src/core/lib/event_engine/event_engine.cc +35 -5
  1069. data/src/core/lib/event_engine/event_engine_context.h +5 -4
  1070. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -1
  1071. data/src/core/lib/event_engine/extensions/supports_fd.h +25 -2
  1072. data/src/core/lib/event_engine/extensions/tcp_trace.h +42 -0
  1073. data/src/core/lib/event_engine/forkable.cc +12 -13
  1074. data/src/core/lib/event_engine/forkable.h +0 -13
  1075. data/src/core/lib/event_engine/grpc_polled_fd.h +2 -4
  1076. data/src/core/lib/event_engine/handle_containers.h +1 -3
  1077. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -3
  1078. data/src/core/lib/event_engine/nameser.h +1 -1
  1079. data/src/core/lib/event_engine/poller.h +1 -2
  1080. data/src/core/lib/event_engine/posix.h +1 -2
  1081. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +28 -30
  1082. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -8
  1083. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +27 -31
  1084. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +2 -4
  1085. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -3
  1086. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -3
  1087. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -6
  1088. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -6
  1089. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +0 -1
  1090. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -9
  1091. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +0 -1
  1092. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -4
  1093. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +0 -1
  1094. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +96 -103
  1095. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +22 -23
  1096. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +84 -65
  1097. data/src/core/lib/event_engine/posix_engine/posix_engine.h +16 -13
  1098. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  1099. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +27 -30
  1100. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +13 -13
  1101. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +27 -33
  1102. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -3
  1103. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +46 -40
  1104. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -10
  1105. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -6
  1106. data/src/core/lib/event_engine/posix_engine/timer.h +4 -7
  1107. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -3
  1108. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +16 -25
  1109. data/src/core/lib/event_engine/posix_engine/timer_manager.h +4 -7
  1110. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +7 -10
  1111. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -5
  1112. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +3 -4
  1113. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +0 -1
  1114. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -3
  1115. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +0 -1
  1116. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +0 -1
  1117. data/src/core/lib/event_engine/query_extensions.h +3 -2
  1118. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -5
  1119. data/src/core/lib/event_engine/resolved_address.cc +8 -7
  1120. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  1121. data/src/core/lib/event_engine/shim.cc +3 -3
  1122. data/src/core/lib/event_engine/slice.cc +5 -7
  1123. data/src/core/lib/event_engine/slice_buffer.cc +2 -4
  1124. data/src/core/lib/event_engine/tcp_socket_utils.cc +21 -26
  1125. data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
  1126. data/src/core/lib/event_engine/thread_local.cc +2 -2
  1127. data/src/core/lib/event_engine/thread_local.h +1 -1
  1128. data/src/core/lib/event_engine/thread_pool/thread_count.cc +5 -8
  1129. data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -6
  1130. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -4
  1131. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +1 -2
  1132. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +46 -53
  1133. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +9 -15
  1134. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +50 -23
  1135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +7 -7
  1136. data/src/core/lib/event_engine/time_util.cc +3 -4
  1137. data/src/core/lib/event_engine/time_util.h +1 -3
  1138. data/src/core/lib/event_engine/utils.cc +19 -6
  1139. data/src/core/lib/event_engine/utils.h +9 -4
  1140. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +158 -132
  1141. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -6
  1142. data/src/core/lib/event_engine/windows/iocp.cc +24 -22
  1143. data/src/core/lib/event_engine/windows/iocp.h +2 -3
  1144. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +4 -6
  1145. data/src/core/lib/event_engine/windows/win_socket.cc +47 -36
  1146. data/src/core/lib/event_engine/windows/win_socket.h +8 -10
  1147. data/src/core/lib/event_engine/windows/windows_endpoint.cc +58 -44
  1148. data/src/core/lib/event_engine/windows/windows_engine.cc +245 -136
  1149. data/src/core/lib/event_engine/windows/windows_engine.h +143 -33
  1150. data/src/core/lib/event_engine/windows/windows_listener.cc +29 -43
  1151. data/src/core/lib/event_engine/windows/windows_listener.h +4 -5
  1152. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +3 -3
  1153. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -5
  1154. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -3
  1155. data/src/core/lib/experiments/config.cc +59 -32
  1156. data/src/core/lib/experiments/config.h +55 -2
  1157. data/src/core/lib/experiments/experiments.cc +310 -293
  1158. data/src/core/lib/experiments/experiments.h +145 -122
  1159. data/src/core/lib/iomgr/buffer_list.cc +7 -8
  1160. data/src/core/lib/iomgr/buffer_list.h +2 -4
  1161. data/src/core/lib/iomgr/call_combiner.cc +42 -68
  1162. data/src/core/lib/iomgr/call_combiner.h +12 -17
  1163. data/src/core/lib/iomgr/cfstream_handle.cc +14 -20
  1164. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1165. data/src/core/lib/iomgr/closure.cc +2 -2
  1166. data/src/core/lib/iomgr/closure.h +17 -21
  1167. data/src/core/lib/iomgr/combiner.cc +38 -52
  1168. data/src/core/lib/iomgr/combiner.h +2 -6
  1169. data/src/core/lib/iomgr/endpoint.cc +1 -7
  1170. data/src/core/lib/iomgr/endpoint.h +4 -6
  1171. data/src/core/lib/iomgr/endpoint_cfstream.cc +45 -76
  1172. data/src/core/lib/iomgr/endpoint_pair_posix.cc +8 -10
  1173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -17
  1174. data/src/core/lib/iomgr/error.cc +24 -34
  1175. data/src/core/lib/iomgr/error.h +8 -11
  1176. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1177. data/src/core/lib/iomgr/ev_apple.cc +16 -24
  1178. data/src/core/lib/iomgr/ev_epoll1_linux.cc +81 -126
  1179. data/src/core/lib/iomgr/ev_poll_posix.cc +62 -62
  1180. data/src/core/lib/iomgr/ev_posix.cc +68 -60
  1181. data/src/core/lib/iomgr/ev_posix.h +9 -12
  1182. data/src/core/lib/iomgr/event_engine_shims/closure.cc +11 -15
  1183. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -3
  1184. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +35 -53
  1185. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  1186. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +10 -15
  1187. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  1188. data/src/core/lib/iomgr/exec_ctx.cc +14 -18
  1189. data/src/core/lib/iomgr/exec_ctx.h +33 -23
  1190. data/src/core/lib/iomgr/executor.cc +60 -59
  1191. data/src/core/lib/iomgr/executor.h +2 -2
  1192. data/src/core/lib/iomgr/fork_posix.cc +11 -15
  1193. data/src/core/lib/iomgr/fork_windows.cc +3 -2
  1194. data/src/core/lib/iomgr/internal_errqueue.cc +5 -6
  1195. data/src/core/lib/iomgr/iocp_windows.cc +16 -15
  1196. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  1197. data/src/core/lib/iomgr/iomgr.cc +19 -26
  1198. data/src/core/lib/iomgr/iomgr.h +0 -1
  1199. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1200. data/src/core/lib/iomgr/iomgr_internal.h +0 -1
  1201. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1202. data/src/core/lib/iomgr/iomgr_windows.cc +7 -6
  1203. data/src/core/lib/iomgr/lockfree_event.cc +12 -21
  1204. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  1205. data/src/core/lib/iomgr/nameser.h +1 -1
  1206. data/src/core/lib/iomgr/polling_entity.cc +17 -11
  1207. data/src/core/lib/iomgr/pollset.cc +2 -2
  1208. data/src/core/lib/iomgr/pollset.h +0 -3
  1209. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  1210. data/src/core/lib/iomgr/pollset_set_windows.cc +0 -1
  1211. data/src/core/lib/iomgr/pollset_windows.cc +2 -6
  1212. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  1213. data/src/core/lib/iomgr/port.h +2 -2
  1214. data/src/core/lib/iomgr/python_util.h +1 -2
  1215. data/src/core/lib/iomgr/resolve_address.cc +4 -7
  1216. data/src/core/lib/iomgr/resolve_address.h +3 -6
  1217. data/src/core/lib/iomgr/resolve_address_impl.h +0 -1
  1218. data/src/core/lib/iomgr/resolve_address_posix.cc +12 -21
  1219. data/src/core/lib/iomgr/resolve_address_windows.cc +9 -12
  1220. data/src/core/lib/iomgr/resolved_address.h +0 -1
  1221. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +5 -6
  1222. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  1223. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  1224. data/src/core/lib/iomgr/socket_mutator.cc +3 -5
  1225. data/src/core/lib/iomgr/socket_mutator.h +2 -4
  1226. data/src/core/lib/iomgr/socket_utils.h +0 -1
  1227. data/src/core/lib/iomgr/socket_utils_common_posix.cc +45 -52
  1228. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1229. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -6
  1230. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  1231. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1232. data/src/core/lib/iomgr/socket_windows.cc +11 -14
  1233. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1234. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  1235. data/src/core/lib/iomgr/tcp_client.h +1 -2
  1236. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -20
  1237. data/src/core/lib/iomgr/tcp_client_posix.cc +24 -36
  1238. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -12
  1239. data/src/core/lib/iomgr/tcp_posix.cc +124 -193
  1240. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  1241. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  1242. data/src/core/lib/iomgr/tcp_server.h +3 -4
  1243. data/src/core/lib/iomgr/tcp_server_posix.cc +61 -79
  1244. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  1245. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +13 -17
  1246. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +13 -14
  1247. data/src/core/lib/iomgr/tcp_server_windows.cc +34 -41
  1248. data/src/core/lib/iomgr/tcp_windows.cc +38 -66
  1249. data/src/core/lib/iomgr/timer.cc +2 -2
  1250. data/src/core/lib/iomgr/timer.h +2 -3
  1251. data/src/core/lib/iomgr/timer_generic.cc +73 -106
  1252. data/src/core/lib/iomgr/timer_generic.h +0 -1
  1253. data/src/core/lib/iomgr/timer_heap.cc +4 -6
  1254. data/src/core/lib/iomgr/timer_manager.cc +27 -44
  1255. data/src/core/lib/iomgr/timer_manager.h +0 -1
  1256. data/src/core/lib/iomgr/unix_sockets_posix.cc +5 -6
  1257. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -3
  1258. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -4
  1259. data/src/core/lib/iomgr/vsock.cc +5 -8
  1260. data/src/core/lib/iomgr/vsock.h +1 -3
  1261. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1262. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1263. data/src/core/lib/promise/activity.cc +4 -5
  1264. data/src/core/lib/promise/activity.h +54 -23
  1265. data/src/core/lib/promise/all_ok.h +52 -9
  1266. data/src/core/lib/promise/arena_promise.h +1 -3
  1267. data/src/core/lib/promise/cancel_callback.h +34 -6
  1268. data/src/core/lib/promise/context.h +18 -9
  1269. data/src/core/lib/promise/detail/basic_seq.h +33 -20
  1270. data/src/core/lib/promise/detail/join_state.h +555 -760
  1271. data/src/core/lib/promise/detail/promise_factory.h +45 -29
  1272. data/src/core/lib/promise/detail/promise_like.h +49 -11
  1273. data/src/core/lib/promise/detail/seq_state.h +1314 -1977
  1274. data/src/core/lib/promise/detail/status.h +36 -14
  1275. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -2
  1276. data/src/core/lib/promise/for_each.h +97 -39
  1277. data/src/core/lib/promise/if.h +21 -17
  1278. data/src/core/lib/promise/interceptor_list.h +22 -36
  1279. data/src/core/lib/promise/latch.h +25 -40
  1280. data/src/core/lib/promise/loop.h +23 -10
  1281. data/src/core/lib/promise/map.h +77 -9
  1282. data/src/core/lib/promise/observable.h +181 -0
  1283. data/src/core/lib/promise/party.cc +262 -154
  1284. data/src/core/lib/promise/party.h +186 -388
  1285. data/src/core/lib/promise/pipe.h +34 -57
  1286. data/src/core/lib/promise/poll.h +117 -39
  1287. data/src/core/lib/promise/promise.h +12 -6
  1288. data/src/core/lib/promise/race.h +10 -5
  1289. data/src/core/lib/promise/seq.h +57 -64
  1290. data/src/core/lib/promise/sleep.cc +4 -5
  1291. data/src/core/lib/promise/sleep.h +2 -4
  1292. data/src/core/lib/promise/status_flag.h +160 -54
  1293. data/src/core/lib/promise/try_join.h +37 -20
  1294. data/src/core/lib/promise/try_seq.h +113 -77
  1295. data/src/core/lib/resource_quota/api.cc +4 -7
  1296. data/src/core/lib/resource_quota/api.h +3 -5
  1297. data/src/core/lib/resource_quota/arena.cc +64 -87
  1298. data/src/core/lib/resource_quota/arena.h +142 -215
  1299. data/src/core/lib/resource_quota/connection_quota.cc +8 -10
  1300. data/src/core/lib/resource_quota/connection_quota.h +3 -4
  1301. data/src/core/lib/resource_quota/memory_quota.cc +51 -52
  1302. data/src/core/lib/resource_quota/memory_quota.h +27 -21
  1303. data/src/core/lib/resource_quota/periodic_update.cc +5 -5
  1304. data/src/core/lib/resource_quota/periodic_update.h +1 -3
  1305. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  1306. data/src/core/lib/resource_quota/resource_quota.h +6 -8
  1307. data/src/core/lib/resource_quota/thread_quota.cc +4 -4
  1308. data/src/core/lib/resource_quota/thread_quota.h +3 -4
  1309. data/src/core/lib/security/authorization/audit_logging.cc +10 -12
  1310. data/src/core/lib/security/authorization/audit_logging.h +3 -5
  1311. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  1312. data/src/core/lib/security/authorization/authorization_policy_provider.h +5 -7
  1313. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -4
  1314. data/src/core/lib/security/authorization/evaluate_args.cc +11 -16
  1315. data/src/core/lib/security/authorization/evaluate_args.h +1 -3
  1316. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -5
  1317. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -3
  1318. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +25 -34
  1319. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +11 -10
  1320. data/src/core/lib/security/authorization/matchers.cc +5 -8
  1321. data/src/core/lib/security/authorization/matchers.h +1 -3
  1322. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1323. data/src/core/lib/security/authorization/rbac_policy.h +2 -5
  1324. data/src/core/lib/security/authorization/stdout_logger.cc +7 -7
  1325. data/src/core/lib/security/authorization/stdout_logger.h +2 -3
  1326. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +7 -8
  1327. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
  1328. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +0 -1
  1329. data/src/core/lib/security/context/security_context.cc +51 -49
  1330. data/src/core/lib/security/context/security_context.h +46 -17
  1331. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -7
  1332. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -7
  1333. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -5
  1334. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1335. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +3 -5
  1336. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1337. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -7
  1338. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
  1339. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  1340. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  1341. data/src/core/lib/security/credentials/call_creds_util.cc +8 -8
  1342. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1343. data/src/core/lib/security/credentials/channel_creds_registry.h +5 -6
  1344. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +14 -13
  1345. data/src/core/lib/security/credentials/composite/composite_credentials.cc +18 -21
  1346. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  1347. data/src/core/lib/security/credentials/credentials.cc +20 -20
  1348. data/src/core/lib/security/credentials/credentials.h +13 -14
  1349. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +336 -339
  1350. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +58 -46
  1351. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1352. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1353. data/src/core/lib/security/credentials/external/external_account_credentials.cc +410 -374
  1354. data/src/core/lib/security/credentials/external/external_account_credentials.h +127 -59
  1355. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +90 -53
  1356. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +30 -9
  1357. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +103 -129
  1358. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +20 -22
  1359. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1360. data/src/core/lib/security/credentials/fake/fake_credentials.h +10 -9
  1361. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +195 -0
  1362. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  1363. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -6
  1364. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +60 -77
  1365. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -7
  1366. data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -14
  1367. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  1368. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1369. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
  1370. data/src/core/lib/security/credentials/jwt/json_token.cc +28 -31
  1371. data/src/core/lib/security/credentials/jwt/json_token.h +2 -4
  1372. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +24 -30
  1373. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +9 -9
  1374. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +80 -87
  1375. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -5
  1376. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  1377. data/src/core/lib/security/credentials/local/local_credentials.h +5 -5
  1378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +202 -302
  1379. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +48 -71
  1380. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +22 -35
  1381. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +11 -13
  1382. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +47 -59
  1383. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -9
  1384. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +28 -28
  1385. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -3
  1386. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +0 -2
  1387. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +107 -46
  1388. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -14
  1389. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -12
  1390. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -10
  1391. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +27 -29
  1392. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  1393. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +6 -10
  1394. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +6 -9
  1395. data/src/core/lib/security/credentials/tls/tls_credentials.cc +20 -24
  1396. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -5
  1397. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -7
  1398. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  1399. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +305 -0
  1400. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +181 -0
  1401. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -19
  1402. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1403. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +35 -40
  1404. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1405. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +28 -28
  1406. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  1407. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -10
  1408. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1409. data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
  1410. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -10
  1411. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  1412. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +4 -6
  1413. data/src/core/lib/security/security_connector/local/local_security_connector.cc +35 -35
  1414. data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
  1415. data/src/core/lib/security/security_connector/security_connector.cc +11 -15
  1416. data/src/core/lib/security/security_connector/security_connector.h +8 -11
  1417. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +28 -32
  1418. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -5
  1419. data/src/core/lib/security/security_connector/ssl_utils.cc +42 -42
  1420. data/src/core/lib/security/security_connector/ssl_utils.h +6 -9
  1421. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +49 -62
  1422. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +6 -7
  1423. data/src/core/lib/security/transport/auth_filters.h +20 -16
  1424. data/src/core/lib/security/transport/client_auth_filter.cc +19 -27
  1425. data/src/core/lib/security/transport/server_auth_filter.cc +23 -32
  1426. data/src/core/lib/security/util/json_util.cc +4 -6
  1427. data/src/core/lib/security/util/json_util.h +1 -1
  1428. data/src/core/lib/slice/percent_encoding.cc +4 -6
  1429. data/src/core/lib/slice/slice.cc +13 -15
  1430. data/src/core/lib/slice/slice.h +8 -11
  1431. data/src/core/lib/slice/slice_buffer.cc +18 -19
  1432. data/src/core/lib/slice/slice_buffer.h +2 -4
  1433. data/src/core/lib/slice/slice_internal.h +4 -7
  1434. data/src/core/lib/slice/slice_refcount.h +7 -15
  1435. data/src/core/lib/slice/slice_string_helpers.cc +3 -3
  1436. data/src/core/lib/slice/slice_string_helpers.h +1 -3
  1437. data/src/core/lib/surface/byte_buffer.cc +2 -4
  1438. data/src/core/lib/surface/byte_buffer_reader.cc +5 -7
  1439. data/src/core/lib/surface/call.cc +205 -3992
  1440. data/src/core/lib/surface/call.h +176 -100
  1441. data/src/core/lib/surface/call_details.cc +5 -5
  1442. data/src/core/lib/surface/call_log_batch.cc +7 -11
  1443. data/src/core/lib/surface/call_test_only.h +2 -4
  1444. data/src/core/lib/surface/call_utils.cc +231 -0
  1445. data/src/core/lib/surface/call_utils.h +486 -0
  1446. data/src/core/lib/surface/channel.cc +47 -45
  1447. data/src/core/lib/surface/channel.h +20 -19
  1448. data/src/core/lib/surface/channel_create.cc +31 -15
  1449. data/src/core/lib/surface/channel_create.h +3 -3
  1450. data/src/core/lib/surface/channel_init.cc +273 -270
  1451. data/src/core/lib/surface/channel_init.h +179 -120
  1452. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  1453. data/src/core/lib/surface/client_call.cc +441 -0
  1454. data/src/core/lib/surface/client_call.h +187 -0
  1455. data/src/core/lib/surface/completion_queue.cc +127 -124
  1456. data/src/core/lib/surface/completion_queue.h +4 -14
  1457. data/src/core/lib/surface/completion_queue_factory.cc +8 -9
  1458. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1459. data/src/core/lib/surface/connection_context.cc +77 -0
  1460. data/src/core/lib/surface/connection_context.h +156 -0
  1461. data/src/core/lib/surface/event_string.cc +2 -2
  1462. data/src/core/lib/surface/event_string.h +1 -2
  1463. data/src/core/lib/surface/filter_stack_call.cc +1156 -0
  1464. data/src/core/lib/surface/filter_stack_call.h +366 -0
  1465. data/src/core/lib/surface/init.cc +60 -21
  1466. data/src/core/lib/surface/init.h +5 -0
  1467. data/src/core/lib/surface/init_internally.cc +2 -2
  1468. data/src/core/lib/surface/lame_client.cc +20 -26
  1469. data/src/core/lib/surface/lame_client.h +9 -13
  1470. data/src/core/lib/surface/legacy_channel.cc +69 -55
  1471. data/src/core/lib/surface/legacy_channel.h +14 -25
  1472. data/src/core/lib/surface/metadata_array.cc +6 -7
  1473. data/src/core/lib/surface/server_call.cc +227 -0
  1474. data/src/core/lib/surface/server_call.h +167 -0
  1475. data/src/core/lib/surface/validate_metadata.cc +4 -6
  1476. data/src/core/lib/surface/validate_metadata.h +3 -6
  1477. data/src/core/lib/surface/version.cc +3 -4
  1478. data/src/core/lib/transport/bdp_estimator.cc +14 -20
  1479. data/src/core/lib/transport/bdp_estimator.h +12 -18
  1480. data/src/core/{resolver/xds/xds_resolver_trace.cc → lib/transport/call_arena_allocator.cc} +7 -5
  1481. data/src/core/lib/transport/call_arena_allocator.h +91 -0
  1482. data/src/core/lib/transport/call_destination.h +76 -0
  1483. data/src/core/lib/transport/call_filters.cc +64 -393
  1484. data/src/core/lib/transport/call_filters.h +810 -710
  1485. data/src/core/lib/transport/call_final_info.cc +2 -2
  1486. data/src/core/lib/transport/call_final_info.h +3 -4
  1487. data/src/core/lib/transport/call_spine.cc +99 -79
  1488. data/src/core/lib/transport/call_spine.h +252 -251
  1489. data/src/core/lib/transport/call_state.cc +39 -0
  1490. data/src/core/lib/transport/call_state.h +1061 -0
  1491. data/src/core/lib/transport/connectivity_state.cc +38 -47
  1492. data/src/core/lib/transport/connectivity_state.h +3 -7
  1493. data/src/core/lib/transport/error_utils.cc +3 -5
  1494. data/src/core/lib/transport/error_utils.h +2 -4
  1495. data/src/core/lib/transport/interception_chain.cc +147 -0
  1496. data/src/core/lib/transport/interception_chain.h +253 -0
  1497. data/src/core/lib/transport/message.cc +3 -4
  1498. data/src/core/lib/transport/message.h +5 -0
  1499. data/src/core/lib/transport/metadata.cc +29 -5
  1500. data/src/core/lib/transport/metadata.h +37 -2
  1501. data/src/core/lib/transport/metadata_batch.cc +12 -5
  1502. data/src/core/lib/transport/metadata_batch.h +104 -15
  1503. data/src/core/lib/transport/metadata_compression_traits.h +2 -3
  1504. data/src/core/lib/transport/metadata_info.cc +2 -2
  1505. data/src/core/lib/transport/metadata_info.h +1 -1
  1506. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  1507. data/src/core/lib/transport/parsed_metadata.h +2 -5
  1508. data/src/core/lib/transport/simple_slice_based_metadata.h +0 -1
  1509. data/src/core/lib/transport/status_conversion.cc +2 -2
  1510. data/src/core/lib/transport/status_conversion.h +2 -3
  1511. data/src/core/lib/transport/timeout_encoding.cc +11 -12
  1512. data/src/core/lib/transport/timeout_encoding.h +1 -3
  1513. data/src/core/lib/transport/transport.cc +7 -13
  1514. data/src/core/lib/transport/transport.h +94 -88
  1515. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1516. data/src/core/lib/transport/transport_op_string.cc +2 -5
  1517. data/src/core/load_balancing/address_filtering.cc +2 -4
  1518. data/src/core/load_balancing/address_filtering.h +2 -3
  1519. data/src/core/load_balancing/backend_metric_parser.cc +1 -2
  1520. data/src/core/load_balancing/backend_metric_parser.h +0 -2
  1521. data/src/core/load_balancing/child_policy_handler.cc +42 -46
  1522. data/src/core/load_balancing/child_policy_handler.h +2 -3
  1523. data/src/core/load_balancing/delegating_helper.h +6 -8
  1524. data/src/core/load_balancing/endpoint_list.cc +17 -21
  1525. data/src/core/load_balancing/endpoint_list.h +20 -16
  1526. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +38 -34
  1527. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +21 -7
  1528. data/src/core/load_balancing/grpclb/grpclb.cc +180 -214
  1529. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -3
  1530. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  1531. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +3 -5
  1532. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +4 -7
  1533. data/src/core/load_balancing/grpclb/load_balancer_api.cc +7 -11
  1534. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -6
  1535. data/src/core/load_balancing/health_check_client.cc +62 -83
  1536. data/src/core/load_balancing/health_check_client.h +1 -1
  1537. data/src/core/load_balancing/health_check_client_internal.h +6 -8
  1538. data/src/core/load_balancing/lb_policy.cc +7 -10
  1539. data/src/core/load_balancing/lb_policy.h +72 -39
  1540. data/src/core/load_balancing/lb_policy_factory.h +3 -4
  1541. data/src/core/load_balancing/lb_policy_registry.cc +7 -9
  1542. data/src/core/load_balancing/lb_policy_registry.h +3 -4
  1543. data/src/core/load_balancing/oob_backend_metric.cc +22 -29
  1544. data/src/core/load_balancing/oob_backend_metric.h +1 -1
  1545. data/src/core/load_balancing/oob_backend_metric_internal.h +6 -8
  1546. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +143 -188
  1547. data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -7
  1548. data/src/core/load_balancing/pick_first/pick_first.cc +1190 -286
  1549. data/src/core/load_balancing/priority/priority.cc +107 -146
  1550. data/src/core/load_balancing/ring_hash/ring_hash.cc +86 -93
  1551. data/src/core/load_balancing/ring_hash/ring_hash.h +5 -6
  1552. data/src/core/load_balancing/rls/rls.cc +364 -362
  1553. data/src/core/load_balancing/round_robin/round_robin.cc +81 -97
  1554. data/src/core/load_balancing/subchannel_interface.h +15 -5
  1555. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +7 -8
  1556. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +1 -2
  1557. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +162 -169
  1558. data/src/core/load_balancing/weighted_target/weighted_target.cc +79 -115
  1559. data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
  1560. data/src/core/load_balancing/xds/cds.cc +62 -79
  1561. data/src/core/load_balancing/xds/xds_cluster_impl.cc +188 -163
  1562. data/src/core/load_balancing/xds/xds_cluster_manager.cc +53 -86
  1563. data/src/core/load_balancing/xds/xds_override_host.cc +126 -188
  1564. data/src/core/load_balancing/xds/xds_override_host.h +5 -6
  1565. data/src/core/load_balancing/xds/xds_wrr_locality.cc +37 -48
  1566. data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -17
  1567. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -3
  1568. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +89 -65
  1569. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -2
  1570. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -5
  1571. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +6 -9
  1572. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +153 -134
  1573. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +176 -161
  1574. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -18
  1575. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  1576. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  1577. data/src/core/resolver/dns/dns_resolver_plugin.cc +11 -13
  1578. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1579. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +56 -63
  1580. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +2 -3
  1581. data/src/core/resolver/dns/event_engine/service_config_helper.cc +8 -10
  1582. data/src/core/resolver/dns/native/dns_resolver.cc +21 -31
  1583. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1584. data/src/core/resolver/endpoint_addresses.cc +5 -8
  1585. data/src/core/resolver/endpoint_addresses.h +3 -1
  1586. data/src/core/resolver/fake/fake_resolver.cc +10 -12
  1587. data/src/core/resolver/fake/fake_resolver.h +6 -8
  1588. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +29 -31
  1589. data/src/core/resolver/polling_resolver.cc +42 -58
  1590. data/src/core/resolver/polling_resolver.h +6 -8
  1591. data/src/core/resolver/resolver.cc +3 -7
  1592. data/src/core/resolver/resolver.h +2 -8
  1593. data/src/core/resolver/resolver_factory.h +2 -3
  1594. data/src/core/resolver/resolver_registry.cc +12 -14
  1595. data/src/core/resolver/resolver_registry.h +2 -3
  1596. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +6 -8
  1597. data/src/core/resolver/xds/xds_config.cc +95 -0
  1598. data/src/core/resolver/xds/xds_config.h +108 -0
  1599. data/src/core/resolver/xds/xds_dependency_manager.cc +86 -174
  1600. data/src/core/resolver/xds/xds_dependency_manager.h +11 -76
  1601. data/src/core/resolver/xds/xds_resolver.cc +140 -126
  1602. data/src/core/resolver/xds/xds_resolver_attributes.h +6 -3
  1603. data/src/core/{lib/surface → server}/server.cc +420 -519
  1604. data/src/core/{lib/surface → server}/server.h +52 -38
  1605. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +27 -23
  1606. data/src/core/{lib/channel → server}/server_call_tracer_filter.h +4 -4
  1607. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +7 -8
  1608. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +51 -47
  1609. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  1610. data/src/core/{lib/surface → server}/server_interface.h +6 -4
  1611. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +5 -5
  1612. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +7 -9
  1613. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +83 -92
  1614. data/src/core/service_config/service_config.h +3 -6
  1615. data/src/core/service_config/service_config_call_data.h +20 -19
  1616. data/src/core/service_config/service_config_channel_arg_filter.cc +20 -17
  1617. data/src/core/service_config/service_config_impl.cc +9 -11
  1618. data/src/core/service_config/service_config_impl.h +6 -9
  1619. data/src/core/service_config/service_config_parser.cc +4 -9
  1620. data/src/core/service_config/service_config_parser.h +2 -4
  1621. data/src/core/{lib/channel → telemetry}/call_tracer.cc +58 -36
  1622. data/src/core/{lib/channel → telemetry}/call_tracer.h +50 -14
  1623. data/src/core/{lib/debug → telemetry}/histogram_view.cc +5 -5
  1624. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -4
  1625. data/src/core/telemetry/metrics.cc +180 -0
  1626. data/src/core/telemetry/metrics.h +569 -0
  1627. data/src/core/{lib/debug → telemetry}/stats.cc +2 -3
  1628. data/src/core/{lib/debug → telemetry}/stats.h +6 -8
  1629. data/src/core/{lib/debug → telemetry}/stats_data.cc +182 -3
  1630. data/src/core/{lib/debug → telemetry}/stats_data.h +133 -7
  1631. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -4
  1632. data/src/core/tsi/alts/crypt/aes_gcm.cc +4 -8
  1633. data/src/core/tsi/alts/crypt/gsec.cc +2 -4
  1634. data/src/core/tsi/alts/crypt/gsec.h +3 -5
  1635. data/src/core/tsi/alts/frame_protector/alts_counter.cc +2 -4
  1636. data/src/core/tsi/alts/frame_protector/alts_counter.h +2 -4
  1637. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +2 -4
  1638. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -3
  1639. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +16 -19
  1640. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +0 -1
  1641. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  1642. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  1643. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +2 -3
  1644. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +2 -3
  1645. data/src/core/tsi/alts/frame_protector/frame_handler.cc +11 -13
  1646. data/src/core/tsi/alts/frame_protector/frame_handler.h +0 -1
  1647. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -82
  1648. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  1649. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -6
  1650. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +2 -3
  1651. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +76 -76
  1652. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  1653. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +6 -5
  1654. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  1655. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +17 -24
  1656. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +4 -6
  1657. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +17 -19
  1658. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +0 -1
  1659. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +12 -14
  1660. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +0 -1
  1661. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  1662. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +16 -14
  1663. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -6
  1664. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +0 -1
  1665. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +13 -16
  1666. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +0 -1
  1667. data/src/core/tsi/fake_transport_security.cc +31 -34
  1668. data/src/core/tsi/local_transport_security.cc +9 -11
  1669. data/src/core/tsi/local_transport_security.h +1 -2
  1670. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +13 -15
  1671. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +7 -10
  1672. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -5
  1673. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -17
  1674. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -10
  1675. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -7
  1676. data/src/core/tsi/ssl_transport_security.cc +154 -131
  1677. data/src/core/tsi/ssl_transport_security.h +5 -8
  1678. data/src/core/tsi/ssl_transport_security_utils.cc +86 -32
  1679. data/src/core/tsi/ssl_transport_security_utils.h +13 -5
  1680. data/src/core/tsi/ssl_types.h +0 -1
  1681. data/src/core/tsi/transport_security.cc +3 -9
  1682. data/src/core/tsi/transport_security.h +0 -3
  1683. data/src/core/tsi/transport_security_grpc.cc +2 -2
  1684. data/src/core/tsi/transport_security_grpc.h +1 -2
  1685. data/src/core/tsi/transport_security_interface.h +2 -7
  1686. data/src/core/{lib/gpr → util}/alloc.cc +4 -6
  1687. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  1688. data/src/core/{lib/gpr → util}/atm.cc +2 -3
  1689. data/src/core/{lib/gprpp → util}/atomic_utils.h +3 -3
  1690. data/src/core/{lib/avl → util}/avl.h +6 -7
  1691. data/src/core/{lib/backoff → util}/backoff.cc +9 -10
  1692. data/src/core/{lib/backoff → util}/backoff.h +8 -11
  1693. data/src/core/{lib/gprpp → util}/bitset.h +5 -6
  1694. data/src/core/{lib/gprpp → util}/chunked_vector.h +8 -9
  1695. data/src/core/{lib/gprpp → util}/construct_destruct.h +6 -5
  1696. data/src/core/{lib/gprpp → util}/cpp_impl_of.h +3 -3
  1697. data/src/core/{lib/gprpp → util}/crash.cc +4 -7
  1698. data/src/core/{lib/gprpp → util}/crash.h +4 -5
  1699. data/src/core/{lib/gprpp → util}/debug_location.h +10 -3
  1700. data/src/core/{lib/gprpp → util}/directory_reader.h +3 -3
  1701. data/src/core/{lib/gprpp → util}/down_cast.h +7 -8
  1702. data/src/core/{lib/gprpp → util}/dual_ref_counted.h +59 -47
  1703. data/src/core/util/dump_args.cc +54 -0
  1704. data/src/core/util/dump_args.h +122 -0
  1705. data/src/core/{lib/gprpp → util}/env.h +3 -3
  1706. data/src/core/{lib/debug → util}/event_log.cc +4 -5
  1707. data/src/core/{lib/debug → util}/event_log.h +6 -8
  1708. data/src/core/{lib/gprpp → util}/examine_stack.cc +2 -2
  1709. data/src/core/{lib/gprpp → util}/examine_stack.h +3 -3
  1710. data/src/core/{lib/gprpp → util}/fork.cc +6 -7
  1711. data/src/core/{lib/gprpp → util}/fork.h +5 -5
  1712. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +33 -37
  1713. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -12
  1714. data/src/core/{lib/iomgr → util}/gethostname.h +3 -3
  1715. data/src/core/{lib/iomgr → util}/gethostname_fallback.cc +1 -1
  1716. data/src/core/{lib/iomgr → util}/gethostname_host_name_max.cc +2 -3
  1717. data/src/core/{lib/iomgr → util}/gethostname_sysconf.cc +2 -3
  1718. data/src/core/util/glob.cc +70 -0
  1719. data/src/core/util/glob.h +29 -0
  1720. data/src/core/{lib/gpr/time.cc → util/gpr_time.cc} +16 -17
  1721. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex.h +3 -4
  1722. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_posix.cc +4 -6
  1723. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_unsupported.cc +5 -8
  1724. data/src/core/{lib/gprpp → util}/host_port.cc +7 -7
  1725. data/src/core/{lib/gprpp → util}/host_port.h +3 -3
  1726. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -7
  1727. data/src/core/{lib/http → util/http_client}/format_request.h +5 -6
  1728. data/src/core/{lib/http → util/http_client}/httpcli.cc +62 -74
  1729. data/src/core/{lib/http → util/http_client}/httpcli.h +32 -31
  1730. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +18 -21
  1731. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -6
  1732. data/src/core/{lib/http → util/http_client}/parser.cc +11 -15
  1733. data/src/core/{lib/http → util/http_client}/parser.h +4 -8
  1734. data/src/core/{lib/gprpp → util}/if_list.h +3 -3
  1735. data/src/core/{lib/gpr → util}/iphone/cpu.cc +1 -2
  1736. data/src/core/{lib → util}/json/json.h +4 -5
  1737. data/src/core/{lib → util}/json/json_args.h +3 -3
  1738. data/src/core/{lib → util}/json/json_channel_args.h +4 -5
  1739. data/src/core/{lib → util}/json/json_object_loader.cc +3 -4
  1740. data/src/core/{lib → util}/json/json_object_loader.h +13 -14
  1741. data/src/core/{lib → util}/json/json_reader.cc +6 -9
  1742. data/src/core/{lib → util}/json/json_reader.h +4 -5
  1743. data/src/core/{lib → util}/json/json_util.cc +6 -6
  1744. data/src/core/{lib → util}/json/json_util.h +5 -6
  1745. data/src/core/{lib → util}/json/json_writer.cc +2 -4
  1746. data/src/core/{lib → util}/json/json_writer.h +4 -4
  1747. data/src/core/util/latent_see.cc +163 -0
  1748. data/src/core/util/latent_see.h +334 -0
  1749. data/src/core/{lib/gpr → util}/linux/cpu.cc +11 -12
  1750. data/src/core/{lib/gprpp → util}/linux/env.cc +1 -1
  1751. data/src/core/{lib/gprpp → util}/load_file.cc +4 -7
  1752. data/src/core/{lib/gprpp → util}/load_file.h +3 -4
  1753. data/src/core/util/log.cc +127 -0
  1754. data/src/core/util/lru_cache.h +122 -0
  1755. data/src/core/{lib/gprpp → util}/manual_constructor.h +4 -5
  1756. data/src/core/{lib/gprpp → util}/match.h +4 -5
  1757. data/src/core/{lib/matchers → util}/matchers.cc +9 -2
  1758. data/src/core/{lib/matchers → util}/matchers.h +8 -4
  1759. data/src/core/{lib/gprpp → util}/memory.h +4 -5
  1760. data/src/core/{lib/gprpp → util}/mpscq.cc +2 -2
  1761. data/src/core/{lib/gprpp → util}/mpscq.h +7 -8
  1762. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +5 -7
  1763. data/src/core/{lib/gprpp → util}/no_destruct.h +4 -4
  1764. data/src/core/{lib/gprpp → util}/notification.h +4 -5
  1765. data/src/core/{lib/gprpp → util}/orphanable.h +7 -7
  1766. data/src/core/{lib/gprpp → util}/overload.h +3 -3
  1767. data/src/core/{lib/gprpp → util}/packed_table.h +5 -5
  1768. data/src/core/{lib/gprpp → util}/per_cpu.cc +3 -4
  1769. data/src/core/{lib/gprpp → util}/per_cpu.h +4 -6
  1770. data/src/core/{lib/gpr → util}/posix/cpu.cc +6 -7
  1771. data/src/core/{lib/gprpp → util}/posix/directory_reader.cc +2 -2
  1772. data/src/core/{lib/gprpp → util}/posix/env.cc +1 -1
  1773. data/src/core/{lib/gprpp → util}/posix/stat.cc +8 -8
  1774. data/src/core/{lib/gpr → util}/posix/string.cc +2 -3
  1775. data/src/core/{lib/gpr → util}/posix/sync.cc +26 -27
  1776. data/src/core/{lib/gprpp → util}/posix/thd.cc +22 -26
  1777. data/src/core/{lib/gpr → util}/posix/time.cc +12 -11
  1778. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +13 -13
  1779. data/src/core/{lib/backoff → util}/random_early_detection.cc +2 -2
  1780. data/src/core/{lib/backoff → util}/random_early_detection.h +3 -4
  1781. data/src/core/{lib/gprpp → util}/ref_counted.h +40 -32
  1782. data/src/core/{lib/gprpp → util}/ref_counted_ptr.h +5 -7
  1783. data/src/core/{lib/gprpp → util}/ref_counted_string.cc +3 -5
  1784. data/src/core/{lib/gprpp → util}/ref_counted_string.h +5 -7
  1785. data/src/core/util/ring_buffer.h +123 -0
  1786. data/src/core/{lib/gprpp → util}/single_set_ptr.h +10 -8
  1787. data/src/core/{lib/gprpp → util}/sorted_pack.h +4 -4
  1788. data/src/core/{lib/gpr → util}/spinlock.h +5 -7
  1789. data/src/core/{lib/gprpp → util}/stat.h +3 -4
  1790. data/src/core/{lib/gprpp → util}/status_helper.cc +18 -40
  1791. data/src/core/{lib/gprpp → util}/status_helper.h +7 -37
  1792. data/src/core/{lib/gprpp → util}/strerror.cc +2 -3
  1793. data/src/core/{lib/gprpp → util}/strerror.h +3 -3
  1794. data/src/core/{lib/gpr → util}/string.cc +15 -18
  1795. data/src/core/{lib/gpr → util}/string.h +4 -6
  1796. data/src/core/{lib/gpr → util}/sync.cc +6 -7
  1797. data/src/core/{lib/gprpp → util}/sync.h +9 -10
  1798. data/src/core/{lib/gpr → util}/sync_abseil.cc +5 -8
  1799. data/src/core/{lib/gprpp → util}/table.h +56 -22
  1800. data/src/core/{lib/gprpp → util}/tchar.cc +2 -2
  1801. data/src/core/{lib/gprpp → util}/tchar.h +3 -3
  1802. data/src/core/{lib/gprpp → util}/thd.h +10 -12
  1803. data/src/core/{lib/gprpp → util}/time.cc +16 -18
  1804. data/src/core/{lib/gprpp → util}/time.h +29 -29
  1805. data/src/core/{lib/gprpp → util}/time_averaged_stats.cc +2 -2
  1806. data/src/core/{lib/gprpp → util}/time_averaged_stats.h +3 -3
  1807. data/src/core/{lib/gpr → util}/time_precise.cc +7 -7
  1808. data/src/core/{lib/gpr → util}/time_precise.h +3 -4
  1809. data/src/core/{lib/gprpp → util}/time_util.cc +6 -7
  1810. data/src/core/{lib/gprpp → util}/time_util.h +4 -5
  1811. data/src/core/{lib/gpr → util}/tmpfile.h +3 -4
  1812. data/src/core/{lib/gprpp → util}/type_list.h +3 -3
  1813. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1814. data/src/core/{lib/gprpp → util}/unique_type_name.h +32 -13
  1815. data/src/core/{ext/xds → util}/upb_utils.h +3 -5
  1816. data/src/core/{lib/uri/uri_parser.cc → util/uri.cc} +14 -10
  1817. data/src/core/{lib/uri/uri_parser.h → util/uri.h} +8 -4
  1818. data/src/core/{lib/gpr → util}/useful.h +23 -52
  1819. data/src/core/{lib/gprpp → util}/uuid_v4.cc +2 -2
  1820. data/src/core/{lib/gprpp → util}/uuid_v4.h +3 -4
  1821. data/src/core/{lib/gprpp → util}/validation_errors.cc +11 -3
  1822. data/src/core/{lib/gprpp → util}/validation_errors.h +14 -4
  1823. data/src/core/{lib/gpr → util}/windows/cpu.cc +1 -2
  1824. data/src/core/{lib/gprpp → util}/windows/directory_reader.cc +1 -3
  1825. data/src/core/{lib/gprpp → util}/windows/env.cc +2 -2
  1826. data/src/core/{lib/gprpp → util}/windows/stat.cc +9 -9
  1827. data/src/core/{lib/gpr → util}/windows/string.cc +3 -4
  1828. data/src/core/{lib/gpr → util}/windows/string_util.cc +6 -8
  1829. data/src/core/{lib/gpr → util}/windows/sync.cc +3 -3
  1830. data/src/core/{lib/gprpp → util}/windows/thd.cc +10 -10
  1831. data/src/core/{lib/gpr → util}/windows/time.cc +6 -6
  1832. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +5 -7
  1833. data/src/core/{lib/gprpp → util}/work_serializer.cc +79 -99
  1834. data/src/core/{lib/gprpp → util}/work_serializer.h +6 -8
  1835. data/src/core/{lib/gprpp → util}/xxhash_inline.h +3 -3
  1836. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +7 -9
  1837. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +14 -16
  1838. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +7 -9
  1839. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +10 -12
  1840. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +6 -6
  1841. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +6 -7
  1842. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +9 -168
  1843. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +15 -45
  1844. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +7 -8
  1845. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +13 -13
  1846. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +119 -84
  1847. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +21 -16
  1848. data/src/core/xds/grpc/xds_cluster.cc +79 -0
  1849. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +43 -53
  1850. data/src/core/{ext/xds/xds_cluster.cc → xds/grpc/xds_cluster_parser.cc} +184 -207
  1851. data/src/core/xds/grpc/xds_cluster_parser.h +61 -0
  1852. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +9 -12
  1853. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +6 -7
  1854. data/src/core/xds/grpc/xds_common_types.cc +103 -0
  1855. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +13 -31
  1856. data/src/core/{ext/xds/xds_common_types.cc → xds/grpc/xds_common_types_parser.cc} +79 -85
  1857. data/src/core/xds/grpc/xds_common_types_parser.h +76 -0
  1858. data/src/core/xds/grpc/xds_endpoint.cc +97 -0
  1859. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +12 -34
  1860. data/src/core/{ext/xds/xds_endpoint.cc → xds/grpc/xds_endpoint_parser.cc} +88 -161
  1861. data/src/core/xds/grpc/xds_endpoint_parser.h +47 -0
  1862. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +1 -3
  1863. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +3 -6
  1864. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +30 -19
  1865. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +14 -10
  1866. data/src/core/{ext/xds/xds_http_filters.h → xds/grpc/xds_http_filter.h} +23 -71
  1867. data/src/core/{ext/xds/xds_http_filters.cc → xds/grpc/xds_http_filter_registry.cc} +16 -11
  1868. data/src/core/xds/grpc/xds_http_filter_registry.h +104 -0
  1869. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1870. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +60 -0
  1871. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +68 -54
  1872. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +14 -10
  1873. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +25 -13
  1874. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +14 -10
  1875. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +25 -31
  1876. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -8
  1877. data/src/core/xds/grpc/xds_listener.cc +175 -0
  1878. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +9 -42
  1879. data/src/core/{ext/xds/xds_listener.cc → xds/grpc/xds_listener_parser.cc} +66 -215
  1880. data/src/core/xds/grpc/xds_listener_parser.h +59 -0
  1881. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1882. data/src/core/xds/grpc/xds_metadata.h +150 -0
  1883. data/src/core/xds/grpc/xds_metadata_parser.cc +184 -0
  1884. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1885. data/src/core/xds/grpc/xds_route_config.cc +282 -0
  1886. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +13 -46
  1887. data/src/core/{ext/xds/xds_route_config.cc → xds/grpc/xds_route_config_parser.cc} +77 -313
  1888. data/src/core/xds/grpc/xds_route_config_parser.h +77 -0
  1889. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +64 -31
  1890. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +16 -10
  1891. data/src/core/xds/grpc/xds_server_grpc.cc +160 -0
  1892. data/src/core/xds/grpc/xds_server_grpc.h +63 -0
  1893. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +112 -69
  1894. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +37 -27
  1895. data/src/core/xds/xds_client/lrs_client.cc +1292 -0
  1896. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1897. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +39 -258
  1898. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +15 -38
  1899. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1900. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1901. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -5
  1902. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +4 -4
  1903. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  1904. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +190 -804
  1905. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +39 -96
  1906. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1907. data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +5 -3
  1908. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +5 -6
  1909. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +6 -7
  1910. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +33 -18
  1911. data/src/ruby/bin/math_pb.rb +1 -22
  1912. data/src/ruby/ext/grpc/extconf.rb +1 -1
  1913. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1914. data/src/ruby/ext/grpc/rb_call.c +15 -8
  1915. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -32
  1916. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  1917. data/src/ruby/ext/grpc/rb_channel.c +42 -36
  1918. data/src/ruby/ext/grpc/rb_channel_args.c +4 -4
  1919. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -5
  1920. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1921. data/src/ruby/ext/grpc/rb_completion_queue.c +18 -36
  1922. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  1923. data/src/ruby/ext/grpc/rb_compression_options.c +9 -10
  1924. data/src/ruby/ext/grpc/rb_event_thread.c +9 -9
  1925. data/src/ruby/ext/grpc/rb_grpc.c +16 -16
  1926. data/src/ruby/ext/grpc/rb_grpc.h +8 -1
  1927. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +136 -144
  1928. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +205 -216
  1929. data/src/ruby/ext/grpc/rb_server.c +47 -27
  1930. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -3
  1931. data/src/ruby/ext/grpc/rb_server_credentials.h +2 -2
  1932. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -5
  1933. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1934. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +5 -4
  1935. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +2 -2
  1936. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1937. data/src/ruby/lib/grpc/logconfig.rb +13 -0
  1938. data/src/ruby/lib/grpc/version.rb +1 -1
  1939. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1940. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1941. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1942. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1943. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1944. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1945. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1946. data/src/ruby/spec/call_spec.rb +53 -40
  1947. data/src/ruby/spec/channel_spec.rb +4 -2
  1948. data/src/ruby/spec/client_server_spec.rb +148 -507
  1949. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1950. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1951. data/src/ruby/spec/logconfig_spec.rb +30 -0
  1952. data/src/ruby/spec/support/services.rb +3 -0
  1953. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1954. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1955. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1956. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1957. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1958. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1959. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1960. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1961. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1962. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1963. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1964. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1965. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1966. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1967. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1968. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1969. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1970. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1971. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1972. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1973. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1974. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1975. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1976. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1977. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1978. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1979. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1980. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1981. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1982. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1983. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1984. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1985. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1986. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1987. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1988. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1989. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1990. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1991. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1992. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1993. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1994. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1995. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1996. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1997. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1998. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1999. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  2000. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  2001. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  2002. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  2003. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  2004. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  2005. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  2006. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  2007. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  2008. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  2009. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  2010. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  2011. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  2012. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  2013. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  2014. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  2015. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  2016. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  2017. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  2018. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  2019. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +138 -0
  2020. data/third_party/abseil-cpp/absl/log/internal/check_op.h +462 -0
  2021. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  2022. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  2023. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  2024. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  2025. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  2026. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  2027. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  2028. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  2029. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  2030. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  2031. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  2032. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  2033. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  2034. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  2035. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  2036. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  2037. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  2038. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  2039. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  2040. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  2041. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  2042. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  2043. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  2044. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  2045. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  2046. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  2047. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  2048. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  2049. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  2050. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  2051. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  2052. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2053. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2054. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2055. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2056. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2057. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2058. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2059. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2060. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2061. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2062. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2063. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2064. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2065. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2066. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2067. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2068. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2069. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2070. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2071. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2072. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2073. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2074. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2075. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2076. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2077. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2078. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2079. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2080. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2081. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2082. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2083. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2084. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2085. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2086. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2087. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2088. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand/fork_detect.h → bcm_support.h} +53 -7
  2090. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
  2091. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  2092. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
  2093. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  2094. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  2095. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  2096. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
  2098. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  2099. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  2100. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  2101. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +43 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  2103. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  2104. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  2105. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +71 -37
  2106. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +8 -62
  2107. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  2108. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
  2112. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
  2113. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +160 -14
  2115. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  2116. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  2117. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  2118. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  2123. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  2125. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  2127. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  2128. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c → aes.c.inc} +21 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +33 -7
  2130. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +84 -80
  2131. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +89 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c → bytes.c.inc} +1 -1
  2133. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c → div.c.inc} +149 -182
  2134. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c → div_extra.c.inc} +1 -1
  2135. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c → exponentiation.c.inc} +46 -2
  2136. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c → gcd_extra.c.inc} +8 -5
  2137. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  2138. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c → montgomery_inv.c.inc} +1 -1
  2139. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c → mul.c.inc} +2 -2
  2140. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c → prime.c.inc} +14 -7
  2141. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c → random.c.inc} +8 -9
  2142. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c → sqrt.c.inc} +1 -1
  2143. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c → e_aes.c.inc} +9 -8
  2144. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  2145. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c → ec_key.c.inc} +22 -14
  2146. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c → p256-nistz.c.inc} +104 -7
  2147. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +65 -8
  2148. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c → scalar.c.inc} +5 -1
  2149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c → ecdsa.c.inc} +52 -107
  2150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +28 -11
  2151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  2152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -80
  2153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c → rand.c.inc} +26 -40
  2154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c → padding.c.inc} +2 -5
  2155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c → rsa.c.inc} +11 -11
  2156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c → rsa_impl.c.inc} +23 -9
  2157. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c → fips.c.inc} +6 -4
  2158. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c → self_check.c.inc} +9 -35
  2159. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +2 -2
  2160. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c → service_indicator.c.inc} +5 -8
  2161. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
  2162. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c → sha1.c.inc} +4 -4
  2163. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c → sha256.c.inc} +3 -3
  2164. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c → sha512.c.inc} +10 -4
  2165. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c → kdf.c.inc} +7 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +295 -2
  2167. data/third_party/boringssl-with-bazel/src/crypto/internal.h +131 -41
  2168. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  2169. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
  2170. data/third_party/boringssl-with-bazel/src/crypto/mem.c +25 -12
  2171. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +73 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +1687 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +90 -0
  2174. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +1097 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +4 -1
  2176. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +19 -19
  2177. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +43 -41
  2178. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  2179. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +1 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +9 -1
  2181. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/fork_detect.c +26 -28
  2182. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +9 -1
  2183. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +9 -1
  2184. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +19 -3
  2185. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +26 -23
  2186. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +37 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +9 -1
  2188. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/urandom.c +19 -19
  2189. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +8 -1
  2190. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +2 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  2192. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  2193. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  2194. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
  2195. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  2196. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  2197. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  2198. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  2199. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  2201. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  2202. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
  2203. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
  2204. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  2205. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  2206. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  2207. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +14 -1
  2208. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
  2209. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
  2210. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -9
  2211. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  2212. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
  2213. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  2214. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  2215. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  2216. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  2217. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  2218. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  2219. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +129 -0
  2220. data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
  2221. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  2222. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +8 -6
  2223. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +136 -0
  2224. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +246 -0
  2225. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +3 -0
  2226. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  2227. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +66 -57
  2228. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  2229. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +2 -2
  2230. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +48 -12
  2231. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +393 -107
  2232. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  2233. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  2234. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  2235. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
  2236. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -12
  2237. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +6 -0
  2238. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +10 -5
  2239. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +14 -2
  2240. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +301 -66
  2241. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  2242. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +66 -58
  2243. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  2244. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  2245. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +138 -54
  2246. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -117
  2247. data/third_party/boringssl-with-bazel/src/ssl/internal.h +349 -202
  2248. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +45 -17
  2249. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  2250. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -1
  2251. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +86 -1
  2252. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +7 -4
  2253. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
  2254. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  2255. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  2256. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  2257. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +99 -4
  2258. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +139 -83
  2259. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
  2260. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  2261. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -1
  2262. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  2263. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
  2264. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +54 -7
  2265. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +96 -34
  2266. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +68 -23
  2267. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +4 -24
  2268. data/third_party/upb/upb/base/string_view.h +1 -1
  2269. data/third_party/upb/upb/json/decode.c +60 -13
  2270. data/third_party/upb/upb/json/decode.h +26 -3
  2271. data/third_party/upb/upb/json/encode.c +2 -2
  2272. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2273. data/third_party/upb/upb/mem/arena.c +80 -4
  2274. data/third_party/upb/upb/mem/arena.h +20 -9
  2275. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2276. data/third_party/upb/upb/mem/internal/arena.h +11 -8
  2277. data/third_party/upb/upb/message/accessors.c +6 -7
  2278. data/third_party/upb/upb/message/accessors.h +186 -376
  2279. data/third_party/upb/upb/message/array.c +26 -3
  2280. data/third_party/upb/upb/message/array.h +17 -9
  2281. data/third_party/upb/upb/message/compat.c +5 -5
  2282. data/third_party/upb/upb/message/compat.h +3 -3
  2283. data/third_party/upb/upb/message/copy.c +23 -20
  2284. data/third_party/upb/upb/message/internal/accessors.h +617 -55
  2285. data/third_party/upb/upb/message/internal/array.h +23 -15
  2286. data/third_party/upb/upb/message/internal/compare_unknown.c +289 -0
  2287. data/third_party/upb/upb/message/internal/compare_unknown.h +49 -0
  2288. data/third_party/upb/upb/message/internal/extension.c +12 -12
  2289. data/third_party/upb/upb/message/internal/extension.h +9 -12
  2290. data/third_party/upb/upb/message/internal/map.h +15 -0
  2291. data/third_party/upb/upb/message/internal/map_sorter.h +4 -5
  2292. data/third_party/upb/upb/message/internal/message.c +22 -6
  2293. data/third_party/upb/upb/message/internal/message.h +11 -0
  2294. data/third_party/upb/upb/message/internal/tagged_ptr.h +5 -5
  2295. data/third_party/upb/upb/message/internal/types.h +41 -1
  2296. data/third_party/upb/upb/message/map.c +25 -0
  2297. data/third_party/upb/upb/message/map.h +11 -7
  2298. data/third_party/upb/upb/message/merge.c +38 -0
  2299. data/third_party/upb/upb/message/merge.h +26 -0
  2300. data/third_party/upb/upb/message/message.c +83 -4
  2301. data/third_party/upb/upb/message/message.h +16 -1
  2302. data/third_party/upb/upb/message/tagged_ptr.h +4 -8
  2303. data/third_party/upb/upb/message/value.h +26 -0
  2304. data/third_party/upb/upb/mini_descriptor/build_enum.c +3 -3
  2305. data/third_party/upb/upb/mini_descriptor/build_enum.h +6 -14
  2306. data/third_party/upb/upb/mini_descriptor/decode.c +19 -3
  2307. data/third_party/upb/upb/mini_descriptor/link.c +23 -21
  2308. data/third_party/upb/upb/mini_table/enum.h +2 -4
  2309. data/third_party/upb/upb/mini_table/extension.h +4 -12
  2310. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2311. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2312. data/third_party/upb/upb/mini_table/field.h +12 -38
  2313. data/third_party/upb/upb/mini_table/file.h +6 -19
  2314. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2315. data/third_party/upb/upb/mini_table/internal/extension.h +18 -9
  2316. data/third_party/upb/upb/mini_table/internal/field.h +23 -23
  2317. data/third_party/upb/upb/mini_table/internal/file.h +7 -7
  2318. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2319. data/third_party/upb/upb/mini_table/internal/message.h +80 -36
  2320. data/third_party/upb/upb/mini_table/internal/sub.h +9 -4
  2321. data/third_party/upb/upb/mini_table/message.h +23 -22
  2322. data/third_party/upb/upb/mini_table/sub.h +4 -12
  2323. data/third_party/upb/upb/port/def.inc +108 -12
  2324. data/third_party/upb/upb/port/undef.inc +8 -1
  2325. data/third_party/upb/upb/reflection/common.h +1 -11
  2326. data/third_party/upb/upb/reflection/def.hpp +35 -0
  2327. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2328. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2329. data/third_party/upb/upb/reflection/enum_def.c +5 -1
  2330. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  2331. data/third_party/upb/upb/reflection/enum_value_def.c +3 -8
  2332. data/third_party/upb/upb/reflection/field_def.c +72 -46
  2333. data/third_party/upb/upb/reflection/field_def.h +4 -0
  2334. data/third_party/upb/upb/reflection/file_def.c +30 -4
  2335. data/third_party/upb/upb/reflection/file_def.h +3 -0
  2336. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2337. data/third_party/upb/upb/reflection/message.c +26 -9
  2338. data/third_party/upb/upb/reflection/message.h +2 -2
  2339. data/third_party/upb/upb/reflection/message_def.c +14 -9
  2340. data/third_party/upb/upb/reflection/method_def.h +8 -7
  2341. data/third_party/upb/upb/reflection/service_def.h +6 -5
  2342. data/third_party/upb/upb/text/encode.c +53 -389
  2343. data/third_party/upb/upb/text/encode.h +1 -11
  2344. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2345. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2346. data/third_party/upb/upb/text/options.h +22 -0
  2347. data/third_party/upb/upb/wire/decode.c +160 -94
  2348. data/third_party/upb/upb/wire/decode.h +15 -2
  2349. data/third_party/upb/upb/wire/encode.c +89 -48
  2350. data/third_party/upb/upb/wire/encode.h +12 -1
  2351. data/third_party/upb/upb/wire/eps_copy_input_stream.h +3 -3
  2352. data/third_party/upb/upb/wire/internal/decode_fast.c +28 -29
  2353. data/third_party/upb/upb/wire/internal/reader.h +3 -3
  2354. data/third_party/upb/upb/wire/reader.c +1 -2
  2355. data/third_party/upb/upb/wire/reader.h +4 -8
  2356. metadata +472 -383
  2357. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  2358. data/src/core/client_channel/client_channel_channelz.h +0 -85
  2359. data/src/core/client_channel/config_selector.cc +0 -60
  2360. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  2361. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  2362. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  2363. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  2364. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -44
  2365. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2366. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  2367. data/src/core/ext/xds/xds_client_stats.cc +0 -173
  2368. data/src/core/ext/xds/xds_client_stats.h +0 -258
  2369. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  2370. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  2371. data/src/core/lib/channel/context.h +0 -77
  2372. data/src/core/lib/channel/metrics.cc +0 -396
  2373. data/src/core/lib/channel/metrics.h +0 -406
  2374. data/src/core/lib/event_engine/trace.cc +0 -25
  2375. data/src/core/lib/event_engine/trace.h +0 -49
  2376. data/src/core/lib/gpr/android/log.cc +0 -79
  2377. data/src/core/lib/gpr/linux/log.cc +0 -114
  2378. data/src/core/lib/gpr/log.cc +0 -166
  2379. data/src/core/lib/gpr/log_internal.h +0 -55
  2380. data/src/core/lib/gpr/posix/log.cc +0 -111
  2381. data/src/core/lib/gpr/windows/log.cc +0 -116
  2382. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  2383. data/src/core/lib/promise/trace.cc +0 -20
  2384. data/src/core/lib/promise/trace.h +0 -24
  2385. data/src/core/lib/resource_quota/trace.cc +0 -19
  2386. data/src/core/lib/resource_quota/trace.h +0 -24
  2387. data/src/core/lib/security/transport/tsi_error.cc +0 -31
  2388. data/src/core/lib/security/transport/tsi_error.h +0 -30
  2389. data/src/core/lib/slice/slice_refcount.cc +0 -20
  2390. data/src/core/lib/surface/api_trace.cc +0 -25
  2391. data/src/core/lib/surface/api_trace.h +0 -53
  2392. data/src/core/lib/surface/call_trace.h +0 -24
  2393. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  2394. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  2395. data/src/core/lib/transport/batch_builder.cc +0 -170
  2396. data/src/core/lib/transport/batch_builder.h +0 -476
  2397. data/src/core/lib/transport/call_size_estimator.cc +0 -41
  2398. data/src/core/lib/transport/call_size_estimator.h +0 -52
  2399. data/src/core/lib/transport/handshaker.cc +0 -229
  2400. data/src/core/resolver/binder/binder_resolver.cc +0 -154
  2401. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  2402. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2403. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  2404. data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
  2405. data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
  2406. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c → aes_nohw.c.inc} +0 -0
  2407. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c → key_wrap.c.inc} +0 -0
  2408. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c → mode_wrappers.c.inc} +0 -0
  2409. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c → add.c.inc} +0 -0
  2410. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c → x86_64-gcc.c.inc} +0 -0
  2411. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c → bn.c.inc} +0 -0
  2412. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c → cmp.c.inc} +0 -0
  2413. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c → ctx.c.inc} +0 -0
  2414. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c → gcd.c.inc} +0 -0
  2415. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c → generic.c.inc} +0 -0
  2416. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c → jacobi.c.inc} +0 -0
  2417. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c → montgomery.c.inc} +0 -0
  2418. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c → rsaz_exp.c.inc} +0 -0
  2419. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c → shift.c.inc} +0 -0
  2420. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c → aead.c.inc} +0 -0
  2421. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c → cipher.c.inc} +0 -0
  2422. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c → e_aesccm.c.inc} +0 -0
  2423. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c → cmac.c.inc} +0 -0
  2424. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c → check.c.inc} +0 -0
  2425. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c → dh.c.inc} +0 -0
  2426. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c → digest.c.inc} +0 -0
  2427. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c → digests.c.inc} +0 -0
  2428. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c → digestsign.c.inc} +0 -0
  2429. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c → ec.c.inc} +0 -0
  2430. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c → ec_montgomery.c.inc} +0 -0
  2431. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c → felem.c.inc} +0 -0
  2432. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c → oct.c.inc} +0 -0
  2433. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c → p224-64.c.inc} +0 -0
  2434. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c → p256.c.inc} +0 -0
  2435. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c → simple.c.inc} +0 -0
  2436. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c → simple_mul.c.inc} +0 -0
  2437. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c → util.c.inc} +0 -0
  2438. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c → wnaf.c.inc} +0 -0
  2439. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c → ecdh.c.inc} +0 -0
  2440. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c → hkdf.c.inc} +0 -0
  2441. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c → hmac.c.inc} +0 -0
  2442. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/{md4.c → md4.c.inc} +0 -0
  2443. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/{md5.c → md5.c.inc} +0 -0
  2444. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c → cbc.c.inc} +0 -0
  2445. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c → cfb.c.inc} +0 -0
  2446. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c → ctr.c.inc} +0 -0
  2447. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c → gcm.c.inc} +0 -0
  2448. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c → gcm_nohw.c.inc} +0 -0
  2449. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c → ofb.c.inc} +0 -0
  2450. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c → polyval.c.inc} +0 -0
  2451. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c → ctrdrbg.c.inc} +0 -0
  2452. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c → blinding.c.inc} +0 -0
  2453. /data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/getrandom_fillin.h +0 -0
@@ -14,10 +14,12 @@
14
14
  // limitations under the License.
15
15
  //
16
16
 
17
- #include <grpc/support/port_platform.h>
18
-
19
17
  #include "src/core/load_balancing/pick_first/pick_first.h"
20
18
 
19
+ #include <grpc/event_engine/event_engine.h>
20
+ #include <grpc/impl/channel_arg_names.h>
21
+ #include <grpc/impl/connectivity_state.h>
22
+ #include <grpc/support/port_platform.h>
21
23
  #include <inttypes.h>
22
24
  #include <string.h>
23
25
 
@@ -29,95 +31,1068 @@
29
31
  #include <vector>
30
32
 
31
33
  #include "absl/algorithm/container.h"
34
+ #include "absl/log/check.h"
35
+ #include "absl/log/log.h"
32
36
  #include "absl/random/random.h"
33
37
  #include "absl/status/status.h"
34
38
  #include "absl/status/statusor.h"
35
39
  #include "absl/strings/str_cat.h"
36
40
  #include "absl/strings/string_view.h"
37
41
  #include "absl/types/optional.h"
38
-
39
- #include <grpc/event_engine/event_engine.h>
40
- #include <grpc/impl/channel_arg_names.h>
41
- #include <grpc/impl/connectivity_state.h>
42
- #include <grpc/support/log.h>
43
-
44
- #include "src/core/load_balancing/health_check_client.h"
42
+ #include "src/core/config/core_configuration.h"
45
43
  #include "src/core/lib/address_utils/sockaddr_utils.h"
46
44
  #include "src/core/lib/channel/channel_args.h"
47
- #include "src/core/lib/channel/metrics.h"
48
- #include "src/core/lib/config/core_configuration.h"
49
45
  #include "src/core/lib/debug/trace.h"
50
- #include "src/core/lib/gpr/useful.h"
51
- #include "src/core/lib/gprpp/crash.h"
52
- #include "src/core/lib/gprpp/debug_location.h"
53
- #include "src/core/lib/gprpp/orphanable.h"
54
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
55
- #include "src/core/lib/gprpp/time.h"
56
- #include "src/core/lib/gprpp/work_serializer.h"
46
+ #include "src/core/lib/experiments/experiments.h"
57
47
  #include "src/core/lib/iomgr/exec_ctx.h"
58
48
  #include "src/core/lib/iomgr/iomgr_fwd.h"
59
49
  #include "src/core/lib/iomgr/resolved_address.h"
60
- #include "src/core/lib/json/json.h"
61
- #include "src/core/lib/json/json_args.h"
62
- #include "src/core/lib/json/json_object_loader.h"
63
50
  #include "src/core/lib/transport/connectivity_state.h"
51
+ #include "src/core/load_balancing/health_check_client.h"
64
52
  #include "src/core/load_balancing/lb_policy.h"
65
53
  #include "src/core/load_balancing/lb_policy_factory.h"
66
54
  #include "src/core/load_balancing/subchannel_interface.h"
67
55
  #include "src/core/resolver/endpoint_addresses.h"
56
+ #include "src/core/telemetry/metrics.h"
57
+ #include "src/core/util/crash.h"
58
+ #include "src/core/util/debug_location.h"
59
+ #include "src/core/util/json/json.h"
60
+ #include "src/core/util/json/json_args.h"
61
+ #include "src/core/util/json/json_object_loader.h"
62
+ #include "src/core/util/orphanable.h"
63
+ #include "src/core/util/ref_counted_ptr.h"
64
+ #include "src/core/util/time.h"
65
+ #include "src/core/util/useful.h"
66
+ #include "src/core/util/work_serializer.h"
68
67
 
69
68
  namespace grpc_core {
70
69
 
71
- TraceFlag grpc_lb_pick_first_trace(false, "pick_first");
70
+ namespace {
71
+
72
+ //
73
+ // pick_first LB policy
74
+ //
75
+
76
+ constexpr absl::string_view kPickFirst = "pick_first";
77
+
78
+ const auto kMetricDisconnections =
79
+ GlobalInstrumentsRegistry::RegisterUInt64Counter(
80
+ "grpc.lb.pick_first.disconnections",
81
+ "EXPERIMENTAL. Number of times the selected subchannel becomes "
82
+ "disconnected.",
83
+ "{disconnection}", false)
84
+ .Labels(kMetricLabelTarget)
85
+ .Build();
86
+
87
+ const auto kMetricConnectionAttemptsSucceeded =
88
+ GlobalInstrumentsRegistry::RegisterUInt64Counter(
89
+ "grpc.lb.pick_first.connection_attempts_succeeded",
90
+ "EXPERIMENTAL. Number of successful connection attempts.", "{attempt}",
91
+ false)
92
+ .Labels(kMetricLabelTarget)
93
+ .Build();
94
+
95
+ const auto kMetricConnectionAttemptsFailed =
96
+ GlobalInstrumentsRegistry::RegisterUInt64Counter(
97
+ "grpc.lb.pick_first.connection_attempts_failed",
98
+ "EXPERIMENTAL. Number of failed connection attempts.", "{attempt}",
99
+ false)
100
+ .Labels(kMetricLabelTarget)
101
+ .Build();
102
+
103
+ class PickFirstConfig final : public LoadBalancingPolicy::Config {
104
+ public:
105
+ absl::string_view name() const override { return kPickFirst; }
106
+ bool shuffle_addresses() const { return shuffle_addresses_; }
107
+
108
+ static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
109
+ static const auto kJsonLoader =
110
+ JsonObjectLoader<PickFirstConfig>()
111
+ .OptionalField("shuffleAddressList",
112
+ &PickFirstConfig::shuffle_addresses_)
113
+ .Finish();
114
+ return kJsonLoader;
115
+ }
116
+
117
+ private:
118
+ bool shuffle_addresses_ = false;
119
+ };
120
+
121
+ class PickFirst final : public LoadBalancingPolicy {
122
+ public:
123
+ explicit PickFirst(Args args);
124
+
125
+ absl::string_view name() const override { return kPickFirst; }
126
+
127
+ absl::Status UpdateLocked(UpdateArgs args) override;
128
+ void ExitIdleLocked() override;
129
+ void ResetBackoffLocked() override;
130
+
131
+ private:
132
+ ~PickFirst() override;
133
+
134
+ // A list of subchannels that we will attempt connections on.
135
+ class SubchannelList final : public InternallyRefCounted<SubchannelList> {
136
+ public:
137
+ // Data about the subchannel that is needed only while attempting to
138
+ // connect.
139
+ class SubchannelData final {
140
+ public:
141
+ // Stores the subchannel and its watcher. This is the state that
142
+ // is retained once a subchannel is chosen.
143
+ class SubchannelState final
144
+ : public InternallyRefCounted<SubchannelState> {
145
+ public:
146
+ SubchannelState(SubchannelData* subchannel_data,
147
+ RefCountedPtr<SubchannelInterface> subchannel);
148
+
149
+ void Orphan() override;
150
+
151
+ SubchannelInterface* subchannel() const { return subchannel_.get(); }
152
+
153
+ void RequestConnection() { subchannel_->RequestConnection(); }
154
+
155
+ void ResetBackoffLocked() { subchannel_->ResetBackoff(); }
156
+
157
+ private:
158
+ // Watcher for subchannel connectivity state.
159
+ class Watcher
160
+ : public SubchannelInterface::ConnectivityStateWatcherInterface {
161
+ public:
162
+ explicit Watcher(RefCountedPtr<SubchannelState> subchannel_state)
163
+ : subchannel_state_(std::move(subchannel_state)) {}
164
+
165
+ ~Watcher() override {
166
+ subchannel_state_.reset(DEBUG_LOCATION, "Watcher dtor");
167
+ }
168
+
169
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
170
+ absl::Status status) override {
171
+ subchannel_state_->OnConnectivityStateChange(new_state,
172
+ std::move(status));
173
+ }
174
+
175
+ grpc_pollset_set* interested_parties() override {
176
+ return subchannel_state_->pick_first_->interested_parties();
177
+ }
178
+
179
+ private:
180
+ RefCountedPtr<SubchannelState> subchannel_state_;
181
+ };
182
+
183
+ // Selects this subchannel. Called when the subchannel reports READY.
184
+ void Select();
185
+
186
+ // This method will be invoked once soon after instantiation to report
187
+ // the current connectivity state, and it will then be invoked again
188
+ // whenever the connectivity state changes.
189
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
190
+ absl::Status status);
191
+
192
+ // If non-null, then we are still part of a subchannel list
193
+ // trying to connect.
194
+ SubchannelData* subchannel_data_;
195
+
196
+ // TODO(roth): Once we remove pollset_set, we should no longer
197
+ // need to hold a ref to PickFirst. Instead, we can make this a
198
+ // raw pointer and put it in an absl::variant with subchannel_data_.
199
+ RefCountedPtr<PickFirst> pick_first_;
200
+
201
+ RefCountedPtr<SubchannelInterface> subchannel_;
202
+ SubchannelInterface::ConnectivityStateWatcherInterface* watcher_ =
203
+ nullptr;
204
+ };
205
+
206
+ SubchannelData(SubchannelList* subchannel_list, size_t index,
207
+ RefCountedPtr<SubchannelInterface> subchannel);
208
+
209
+ absl::optional<grpc_connectivity_state> connectivity_state() const {
210
+ return connectivity_state_;
211
+ }
212
+ const absl::Status& connectivity_status() const {
213
+ return connectivity_status_;
214
+ }
215
+
216
+ void RequestConnection() { subchannel_state_->RequestConnection(); }
217
+
218
+ // Resets the connection backoff.
219
+ void ResetBackoffLocked() { subchannel_state_->ResetBackoffLocked(); }
220
+
221
+ // Requests a connection attempt to start on this subchannel,
222
+ // with appropriate Connection Attempt Delay.
223
+ // Used only during the Happy Eyeballs pass.
224
+ void RequestConnectionWithTimer();
225
+
226
+ bool seen_transient_failure() const { return seen_transient_failure_; }
227
+
228
+ private:
229
+ // This method will be invoked once soon after instantiation to report
230
+ // the current connectivity state, and it will then be invoked again
231
+ // whenever the connectivity state changes.
232
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
233
+ absl::Status status);
234
+
235
+ // Backpointer to owning subchannel list. Not owned.
236
+ SubchannelList* subchannel_list_;
237
+ // Our index within subchannel_list_.
238
+ const size_t index_;
239
+ // Subchannel state.
240
+ OrphanablePtr<SubchannelState> subchannel_state_;
241
+ // Data updated by the watcher.
242
+ absl::optional<grpc_connectivity_state> connectivity_state_;
243
+ absl::Status connectivity_status_;
244
+ bool seen_transient_failure_ = false;
245
+ };
246
+
247
+ SubchannelList(RefCountedPtr<PickFirst> policy,
248
+ EndpointAddressesIterator* addresses,
249
+ const ChannelArgs& args);
250
+
251
+ ~SubchannelList() override;
252
+
253
+ void Orphan() override;
254
+
255
+ // The number of subchannels in the list.
256
+ size_t size() const { return subchannels_.size(); }
257
+
258
+ // Resets connection backoff of all subchannels.
259
+ void ResetBackoffLocked();
260
+
261
+ bool IsHappyEyeballsPassComplete() const {
262
+ // Checking attempting_index_ here is just an optimization -- if
263
+ // we haven't actually tried all subchannels yet, then we don't
264
+ // need to iterate.
265
+ if (attempting_index_ < size()) return false;
266
+ for (const auto& sd : subchannels_) {
267
+ if (!sd->seen_transient_failure()) return false;
268
+ }
269
+ return true;
270
+ }
271
+
272
+ private:
273
+ // Returns true if all subchannels have seen their initial
274
+ // connectivity state notifications.
275
+ bool AllSubchannelsSeenInitialState() const {
276
+ return num_subchannels_seen_initial_notification_ == size();
277
+ }
278
+
279
+ // Looks through subchannels_ starting from attempting_index_ to
280
+ // find the first one not currently in TRANSIENT_FAILURE, then
281
+ // triggers a connection attempt for that subchannel. If there are
282
+ // no more subchannels not in TRANSIENT_FAILURE, calls
283
+ // MaybeFinishHappyEyeballsPass().
284
+ void StartConnectingNextSubchannel();
285
+
286
+ // Checks to see if the initial Happy Eyeballs pass is complete --
287
+ // i.e., all subchannels have seen TRANSIENT_FAILURE state at least once.
288
+ // If so, transitions to a mode where we try to connect to all subchannels
289
+ // in parallel and returns true.
290
+ void MaybeFinishHappyEyeballsPass();
291
+
292
+ // Backpointer to owning policy.
293
+ RefCountedPtr<PickFirst> policy_;
294
+
295
+ ChannelArgs args_;
296
+
297
+ // The list of subchannels.
298
+ std::vector<std::unique_ptr<SubchannelData>> subchannels_;
299
+
300
+ // Is this list shutting down? This may be true due to the shutdown of the
301
+ // policy itself or because a newer update has arrived while this one hadn't
302
+ // finished processing.
303
+ bool shutting_down_ = false;
304
+
305
+ size_t num_subchannels_seen_initial_notification_ = 0;
306
+
307
+ // The index into subchannels_ to which we are currently attempting
308
+ // to connect during the initial Happy Eyeballs pass. Once the
309
+ // initial pass is over, this will be equal to size().
310
+ size_t attempting_index_ = 0;
311
+ // Happy Eyeballs timer handle.
312
+ absl::optional<grpc_event_engine::experimental::EventEngine::TaskHandle>
313
+ timer_handle_;
314
+
315
+ // After the initial Happy Eyeballs pass, the number of failures
316
+ // we've seen. Every size() failures, we trigger re-resolution.
317
+ size_t num_failures_ = 0;
318
+
319
+ // The status from the last subchannel that reported TRANSIENT_FAILURE.
320
+ absl::Status last_failure_;
321
+ };
322
+
323
+ class HealthWatcher final
324
+ : public SubchannelInterface::ConnectivityStateWatcherInterface {
325
+ public:
326
+ explicit HealthWatcher(RefCountedPtr<PickFirst> policy)
327
+ : policy_(std::move(policy)) {}
328
+
329
+ ~HealthWatcher() override {
330
+ policy_.reset(DEBUG_LOCATION, "HealthWatcher dtor");
331
+ }
332
+
333
+ void OnConnectivityStateChange(grpc_connectivity_state new_state,
334
+ absl::Status status) override;
335
+
336
+ grpc_pollset_set* interested_parties() override {
337
+ return policy_->interested_parties();
338
+ }
339
+
340
+ private:
341
+ RefCountedPtr<PickFirst> policy_;
342
+ };
343
+
344
+ class Picker final : public SubchannelPicker {
345
+ public:
346
+ explicit Picker(RefCountedPtr<SubchannelInterface> subchannel)
347
+ : subchannel_(std::move(subchannel)) {}
348
+
349
+ PickResult Pick(PickArgs /*args*/) override {
350
+ return PickResult::Complete(subchannel_);
351
+ }
352
+
353
+ private:
354
+ RefCountedPtr<SubchannelInterface> subchannel_;
355
+ };
356
+
357
+ void ShutdownLocked() override;
358
+
359
+ void UpdateState(grpc_connectivity_state state, const absl::Status& status,
360
+ RefCountedPtr<SubchannelPicker> picker);
361
+
362
+ void AttemptToConnectUsingLatestUpdateArgsLocked();
363
+
364
+ void UnsetSelectedSubchannel();
365
+
366
+ void GoIdle();
367
+
368
+ // When ExitIdleLocked() is called, we create a subchannel_list_ and start
369
+ // trying to connect, but we don't actually change state_ until the first
370
+ // subchannel reports CONNECTING. So in order to know if we're really
371
+ // idle, we need to check both state_ and subchannel_list_.
372
+ bool IsIdle() const {
373
+ return state_ == GRPC_CHANNEL_IDLE && subchannel_list_ == nullptr;
374
+ }
375
+
376
+ // Whether we should enable health watching.
377
+ const bool enable_health_watch_;
378
+ // Whether we should omit our status message prefix.
379
+ const bool omit_status_message_prefix_;
380
+ // Connection Attempt Delay for Happy Eyeballs.
381
+ const Duration connection_attempt_delay_;
382
+
383
+ // Lateset update args.
384
+ UpdateArgs latest_update_args_;
385
+ // The list of subchannels that we're currently trying to connect to.
386
+ // Will generally be null when selected_ is set, except when we get a
387
+ // resolver update and need to check initial connectivity states for
388
+ // the new list to decide whether we keep using the existing
389
+ // connection or go IDLE.
390
+ OrphanablePtr<SubchannelList> subchannel_list_;
391
+ // Selected subchannel. Will generally be null when subchannel_list_
392
+ // is non-null, with the exception mentioned above.
393
+ OrphanablePtr<SubchannelList::SubchannelData::SubchannelState> selected_;
394
+ // Health watcher for the selected subchannel.
395
+ SubchannelInterface::ConnectivityStateWatcherInterface* health_watcher_ =
396
+ nullptr;
397
+ SubchannelInterface::DataWatcherInterface* health_data_watcher_ = nullptr;
398
+ // Current connectivity state.
399
+ grpc_connectivity_state state_ = GRPC_CHANNEL_CONNECTING;
400
+ // Are we shut down?
401
+ bool shutdown_ = false;
402
+ // Random bit generator used for shuffling addresses if configured
403
+ absl::BitGen bit_gen_;
404
+ };
405
+
406
+ PickFirst::PickFirst(Args args)
407
+ : LoadBalancingPolicy(std::move(args)),
408
+ enable_health_watch_(
409
+ channel_args()
410
+ .GetBool(GRPC_ARG_INTERNAL_PICK_FIRST_ENABLE_HEALTH_CHECKING)
411
+ .value_or(false)),
412
+ omit_status_message_prefix_(
413
+ channel_args()
414
+ .GetBool(GRPC_ARG_INTERNAL_PICK_FIRST_OMIT_STATUS_MESSAGE_PREFIX)
415
+ .value_or(false)),
416
+ connection_attempt_delay_(Duration::Milliseconds(
417
+ Clamp(channel_args()
418
+ .GetInt(GRPC_ARG_HAPPY_EYEBALLS_CONNECTION_ATTEMPT_DELAY_MS)
419
+ .value_or(250),
420
+ 100, 2000))) {
421
+ GRPC_TRACE_LOG(pick_first, INFO) << "Pick First " << this << " created.";
422
+ }
423
+
424
+ PickFirst::~PickFirst() {
425
+ GRPC_TRACE_LOG(pick_first, INFO) << "Destroying Pick First " << this;
426
+ CHECK_EQ(subchannel_list_.get(), nullptr);
427
+ }
428
+
429
+ void PickFirst::ShutdownLocked() {
430
+ GRPC_TRACE_LOG(pick_first, INFO) << "Pick First " << this << " Shutting down";
431
+ shutdown_ = true;
432
+ UnsetSelectedSubchannel();
433
+ subchannel_list_.reset();
434
+ }
435
+
436
+ void PickFirst::ExitIdleLocked() {
437
+ if (shutdown_) return;
438
+ if (IsIdle()) {
439
+ GRPC_TRACE_LOG(pick_first, INFO)
440
+ << "Pick First " << this << " exiting idle";
441
+ AttemptToConnectUsingLatestUpdateArgsLocked();
442
+ }
443
+ }
444
+
445
+ void PickFirst::ResetBackoffLocked() {
446
+ if (subchannel_list_ != nullptr) subchannel_list_->ResetBackoffLocked();
447
+ }
448
+
449
+ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
450
+ // Create a subchannel list from latest_update_args_.
451
+ EndpointAddressesIterator* addresses = nullptr;
452
+ if (latest_update_args_.addresses.ok()) {
453
+ addresses = latest_update_args_.addresses->get();
454
+ }
455
+ // Replace subchannel_list_.
456
+ if (GRPC_TRACE_FLAG_ENABLED(pick_first) && subchannel_list_ != nullptr) {
457
+ LOG(INFO) << "[PF " << this << "] Shutting down previous subchannel list "
458
+ << subchannel_list_.get();
459
+ }
460
+ subchannel_list_ = MakeOrphanable<SubchannelList>(
461
+ RefAsSubclass<PickFirst>(DEBUG_LOCATION, "SubchannelList"), addresses,
462
+ latest_update_args_.args);
463
+ // Empty update or no valid subchannels. Put the channel in
464
+ // TRANSIENT_FAILURE and request re-resolution. Also unset the
465
+ // current selected subchannel.
466
+ if (subchannel_list_->size() == 0) {
467
+ channel_control_helper()->RequestReresolution();
468
+ absl::Status status =
469
+ latest_update_args_.addresses.ok()
470
+ ? absl::UnavailableError(absl::StrCat(
471
+ "empty address list: ", latest_update_args_.resolution_note))
472
+ : latest_update_args_.addresses.status();
473
+ UpdateState(GRPC_CHANNEL_TRANSIENT_FAILURE, status,
474
+ MakeRefCounted<TransientFailurePicker>(status));
475
+ UnsetSelectedSubchannel();
476
+ }
477
+ }
478
+
479
+ absl::string_view GetAddressFamily(const grpc_resolved_address& address) {
480
+ const char* uri_scheme = grpc_sockaddr_get_uri_scheme(&address);
481
+ return absl::string_view(uri_scheme == nullptr ? "other" : uri_scheme);
482
+ };
483
+
484
+ // An endpoint list iterator that returns only entries for a specific
485
+ // address family, as indicated by the URI scheme.
486
+ class AddressFamilyIterator final {
487
+ public:
488
+ AddressFamilyIterator(absl::string_view scheme, size_t index)
489
+ : scheme_(scheme), index_(index) {}
490
+
491
+ EndpointAddresses* Next(EndpointAddressesList& endpoints,
492
+ std::vector<bool>* endpoints_moved) {
493
+ for (; index_ < endpoints.size(); ++index_) {
494
+ if (!(*endpoints_moved)[index_] &&
495
+ GetAddressFamily(endpoints[index_].address()) == scheme_) {
496
+ (*endpoints_moved)[index_] = true;
497
+ return &endpoints[index_++];
498
+ }
499
+ }
500
+ return nullptr;
501
+ }
502
+
503
+ private:
504
+ absl::string_view scheme_;
505
+ size_t index_;
506
+ };
507
+
508
+ absl::Status PickFirst::UpdateLocked(UpdateArgs args) {
509
+ if (GRPC_TRACE_FLAG_ENABLED(pick_first)) {
510
+ if (args.addresses.ok()) {
511
+ LOG(INFO) << "Pick First " << this << " received update";
512
+ } else {
513
+ LOG(INFO) << "Pick First " << this
514
+ << " received update with address error: "
515
+ << args.addresses.status();
516
+ }
517
+ }
518
+ // Set return status based on the address list.
519
+ absl::Status status;
520
+ if (!args.addresses.ok()) {
521
+ status = args.addresses.status();
522
+ } else {
523
+ EndpointAddressesList endpoints;
524
+ (*args.addresses)->ForEach([&](const EndpointAddresses& endpoint) {
525
+ endpoints.push_back(endpoint);
526
+ });
527
+ if (endpoints.empty()) {
528
+ status = absl::UnavailableError("address list must not be empty");
529
+ } else {
530
+ // Shuffle the list if needed.
531
+ auto config = static_cast<PickFirstConfig*>(args.config.get());
532
+ if (config->shuffle_addresses()) {
533
+ absl::c_shuffle(endpoints, bit_gen_);
534
+ }
535
+ // Flatten the list so that we have one address per endpoint.
536
+ // While we're iterating, also determine the desired address family
537
+ // order and the index of the first element of each family, for use in
538
+ // the interleaving below.
539
+ std::set<absl::string_view> address_families;
540
+ std::vector<AddressFamilyIterator> address_family_order;
541
+ EndpointAddressesList flattened_endpoints;
542
+ for (const auto& endpoint : endpoints) {
543
+ for (const auto& address : endpoint.addresses()) {
544
+ flattened_endpoints.emplace_back(address, endpoint.args());
545
+ absl::string_view scheme = GetAddressFamily(address);
546
+ bool inserted = address_families.insert(scheme).second;
547
+ if (inserted) {
548
+ address_family_order.emplace_back(scheme,
549
+ flattened_endpoints.size() - 1);
550
+ }
551
+ }
552
+ }
553
+ endpoints = std::move(flattened_endpoints);
554
+ // Interleave addresses as per RFC-8305 section 4.
555
+ EndpointAddressesList interleaved_endpoints;
556
+ interleaved_endpoints.reserve(endpoints.size());
557
+ std::vector<bool> endpoints_moved(endpoints.size());
558
+ size_t scheme_index = 0;
559
+ for (size_t i = 0; i < endpoints.size(); ++i) {
560
+ EndpointAddresses* endpoint;
561
+ do {
562
+ auto& iterator = address_family_order[scheme_index++ %
563
+ address_family_order.size()];
564
+ endpoint = iterator.Next(endpoints, &endpoints_moved);
565
+ } while (endpoint == nullptr);
566
+ interleaved_endpoints.emplace_back(std::move(*endpoint));
567
+ }
568
+ endpoints = std::move(interleaved_endpoints);
569
+ args.addresses =
570
+ std::make_shared<EndpointAddressesListIterator>(std::move(endpoints));
571
+ }
572
+ }
573
+ // If the update contains a resolver error and we have a previous update
574
+ // that was not a resolver error, keep using the previous addresses.
575
+ if (!args.addresses.ok() && latest_update_args_.config != nullptr) {
576
+ args.addresses = std::move(latest_update_args_.addresses);
577
+ }
578
+ // Update latest_update_args_.
579
+ latest_update_args_ = std::move(args);
580
+ // If we are not in idle, start connection attempt immediately.
581
+ // Otherwise, we defer the attempt into ExitIdleLocked().
582
+ if (!IsIdle()) {
583
+ AttemptToConnectUsingLatestUpdateArgsLocked();
584
+ }
585
+ return status;
586
+ }
587
+
588
+ void PickFirst::UpdateState(grpc_connectivity_state state,
589
+ const absl::Status& status,
590
+ RefCountedPtr<SubchannelPicker> picker) {
591
+ state_ = state;
592
+ channel_control_helper()->UpdateState(state, status, std::move(picker));
593
+ }
594
+
595
+ void PickFirst::UnsetSelectedSubchannel() {
596
+ if (selected_ != nullptr && health_data_watcher_ != nullptr) {
597
+ selected_->subchannel()->CancelDataWatcher(health_data_watcher_);
598
+ }
599
+ selected_.reset();
600
+ health_watcher_ = nullptr;
601
+ health_data_watcher_ = nullptr;
602
+ }
603
+
604
+ void PickFirst::GoIdle() {
605
+ // Unset the selected subchannel.
606
+ UnsetSelectedSubchannel();
607
+ // Drop the current subchannel list, if any.
608
+ subchannel_list_.reset();
609
+ // Request a re-resolution.
610
+ // TODO(qianchengz): We may want to request re-resolution in
611
+ // ExitIdleLocked() instead.
612
+ channel_control_helper()->RequestReresolution();
613
+ // Enter idle.
614
+ UpdateState(GRPC_CHANNEL_IDLE, absl::Status(),
615
+ MakeRefCounted<QueuePicker>(Ref(DEBUG_LOCATION, "QueuePicker")));
616
+ }
617
+
618
+ //
619
+ // PickFirst::HealthWatcher
620
+ //
621
+
622
+ void PickFirst::HealthWatcher::OnConnectivityStateChange(
623
+ grpc_connectivity_state new_state, absl::Status status) {
624
+ if (policy_->health_watcher_ != this) return;
625
+ GRPC_TRACE_LOG(pick_first, INFO)
626
+ << "[PF " << policy_.get()
627
+ << "] health watch state update: " << ConnectivityStateName(new_state)
628
+ << " (" << status << ")";
629
+ switch (new_state) {
630
+ case GRPC_CHANNEL_READY:
631
+ policy_->channel_control_helper()->UpdateState(
632
+ GRPC_CHANNEL_READY, absl::OkStatus(),
633
+ MakeRefCounted<Picker>(policy_->selected_->subchannel()->Ref()));
634
+ break;
635
+ case GRPC_CHANNEL_IDLE:
636
+ // If the subchannel becomes disconnected, the health watcher
637
+ // might happen to see the change before the raw connectivity
638
+ // state watcher does. In this case, ignore it, since the raw
639
+ // connectivity state watcher will handle it shortly.
640
+ break;
641
+ case GRPC_CHANNEL_CONNECTING:
642
+ policy_->channel_control_helper()->UpdateState(
643
+ new_state, absl::OkStatus(),
644
+ MakeRefCounted<QueuePicker>(policy_->Ref()));
645
+ break;
646
+ case GRPC_CHANNEL_TRANSIENT_FAILURE:
647
+ policy_->channel_control_helper()->UpdateState(
648
+ GRPC_CHANNEL_TRANSIENT_FAILURE, status,
649
+ MakeRefCounted<TransientFailurePicker>(absl::UnavailableError(
650
+ absl::StrCat("health watch: ", status.message()))));
651
+ break;
652
+ case GRPC_CHANNEL_SHUTDOWN:
653
+ Crash("health watcher reported state SHUTDOWN");
654
+ }
655
+ }
656
+
657
+ //
658
+ // PickFirst::SubchannelList::SubchannelData::SubchannelState
659
+ //
660
+
661
+ PickFirst::SubchannelList::SubchannelData::SubchannelState::SubchannelState(
662
+ SubchannelData* subchannel_data,
663
+ RefCountedPtr<SubchannelInterface> subchannel)
664
+ : subchannel_data_(subchannel_data),
665
+ pick_first_(subchannel_data_->subchannel_list_->policy_),
666
+ subchannel_(std::move(subchannel)) {
667
+ GRPC_TRACE_LOG(pick_first, INFO)
668
+ << "[PF " << pick_first_.get() << "] subchannel state " << this
669
+ << " (subchannel " << subchannel_.get() << "): starting watch";
670
+ auto watcher = std::make_unique<Watcher>(Ref(DEBUG_LOCATION, "Watcher"));
671
+ watcher_ = watcher.get();
672
+ subchannel_->WatchConnectivityState(std::move(watcher));
673
+ }
674
+
675
+ void PickFirst::SubchannelList::SubchannelData::SubchannelState::Orphan() {
676
+ GRPC_TRACE_LOG(pick_first, INFO)
677
+ << "[PF " << pick_first_.get() << "] subchannel state " << this
678
+ << " (subchannel " << subchannel_.get()
679
+ << "): cancelling watch and unreffing subchannel";
680
+ subchannel_data_ = nullptr;
681
+ subchannel_->CancelConnectivityStateWatch(watcher_);
682
+ watcher_ = nullptr;
683
+ subchannel_.reset();
684
+ pick_first_.reset();
685
+ Unref();
686
+ }
687
+
688
+ void PickFirst::SubchannelList::SubchannelData::SubchannelState::Select() {
689
+ GRPC_TRACE_LOG(pick_first, INFO)
690
+ << "Pick First " << pick_first_.get() << " selected subchannel "
691
+ << subchannel_.get();
692
+ CHECK_NE(subchannel_data_, nullptr);
693
+ pick_first_->UnsetSelectedSubchannel(); // Cancel health watch, if any.
694
+ pick_first_->selected_ = std::move(subchannel_data_->subchannel_state_);
695
+ // If health checking is enabled, start the health watch, but don't
696
+ // report a new picker -- we want to stay in CONNECTING while we wait
697
+ // for the health status notification.
698
+ // If health checking is NOT enabled, report READY.
699
+ if (pick_first_->enable_health_watch_) {
700
+ GRPC_TRACE_LOG(pick_first, INFO)
701
+ << "[PF " << pick_first_.get() << "] starting health watch";
702
+ auto watcher = std::make_unique<HealthWatcher>(
703
+ pick_first_.Ref(DEBUG_LOCATION, "HealthWatcher"));
704
+ pick_first_->health_watcher_ = watcher.get();
705
+ auto health_data_watcher = MakeHealthCheckWatcher(
706
+ pick_first_->work_serializer(),
707
+ subchannel_data_->subchannel_list_->args_, std::move(watcher));
708
+ pick_first_->health_data_watcher_ = health_data_watcher.get();
709
+ subchannel_->AddDataWatcher(std::move(health_data_watcher));
710
+ } else {
711
+ pick_first_->UpdateState(GRPC_CHANNEL_READY, absl::Status(),
712
+ MakeRefCounted<Picker>(subchannel_));
713
+ }
714
+ // Report successful connection.
715
+ // We consider it a successful connection attempt only if the
716
+ // previous state was CONNECTING. In particular, we don't want to
717
+ // increment this counter if we got a new address list and found the
718
+ // existing connection already in state READY.
719
+ if (subchannel_data_->connectivity_state_ == GRPC_CHANNEL_CONNECTING) {
720
+ auto& stats_plugins =
721
+ pick_first_->channel_control_helper()->GetStatsPluginGroup();
722
+ stats_plugins.AddCounter(
723
+ kMetricConnectionAttemptsSucceeded, 1,
724
+ {pick_first_->channel_control_helper()->GetTarget()}, {});
725
+ }
726
+ // Drop our pointer to subchannel_data_, so that we know not to
727
+ // interact with it on subsequent connectivity state updates.
728
+ subchannel_data_ = nullptr;
729
+ // Clean up subchannel list.
730
+ pick_first_->subchannel_list_.reset();
731
+ }
732
+
733
+ void PickFirst::SubchannelList::SubchannelData::SubchannelState::
734
+ OnConnectivityStateChange(grpc_connectivity_state new_state,
735
+ absl::Status status) {
736
+ if (watcher_ == nullptr) return;
737
+ GRPC_TRACE_LOG(pick_first, INFO)
738
+ << "[PF " << pick_first_.get() << "] subchannel state " << this
739
+ << " (subchannel " << subchannel_.get()
740
+ << "): connectivity changed: new_state="
741
+ << ConnectivityStateName(new_state) << ", status=" << status
742
+ << ", watcher=" << watcher_ << ", subchannel_data_=" << subchannel_data_
743
+ << ", pick_first_->selected_=" << pick_first_->selected_.get();
744
+ // If we're still part of a subchannel list trying to connect, check
745
+ // if we're connected.
746
+ if (subchannel_data_ != nullptr) {
747
+ CHECK_EQ(pick_first_->subchannel_list_.get(),
748
+ subchannel_data_->subchannel_list_);
749
+ // If the subchannel is READY, use it.
750
+ // Otherwise, tell the subchannel list to keep trying.
751
+ if (new_state == GRPC_CHANNEL_READY) {
752
+ Select();
753
+ } else {
754
+ subchannel_data_->OnConnectivityStateChange(new_state, std::move(status));
755
+ }
756
+ return;
757
+ }
758
+ // We aren't trying to connect, so we must be the selected subchannel.
759
+ CHECK_EQ(pick_first_->selected_.get(), this);
760
+ GRPC_TRACE_LOG(pick_first, INFO)
761
+ << "Pick First " << pick_first_.get()
762
+ << " selected subchannel connectivity changed to "
763
+ << ConnectivityStateName(new_state);
764
+ // Any state change is considered to be a failure of the existing
765
+ // connection. Report the failure.
766
+ auto& stats_plugins =
767
+ pick_first_->channel_control_helper()->GetStatsPluginGroup();
768
+ stats_plugins.AddCounter(kMetricDisconnections, 1,
769
+ {pick_first_->channel_control_helper()->GetTarget()},
770
+ {});
771
+ // Report IDLE.
772
+ pick_first_->GoIdle();
773
+ }
774
+
775
+ //
776
+ // PickFirst::SubchannelList::SubchannelData
777
+ //
778
+
779
+ PickFirst::SubchannelList::SubchannelData::SubchannelData(
780
+ SubchannelList* subchannel_list, size_t index,
781
+ RefCountedPtr<SubchannelInterface> subchannel)
782
+ : subchannel_list_(subchannel_list), index_(index) {
783
+ GRPC_TRACE_LOG(pick_first, INFO)
784
+ << "[PF " << subchannel_list_->policy_.get() << "] subchannel list "
785
+ << subchannel_list_ << " index " << index_
786
+ << ": creating subchannel data";
787
+ subchannel_state_ =
788
+ MakeOrphanable<SubchannelState>(this, std::move(subchannel));
789
+ }
790
+
791
+ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
792
+ grpc_connectivity_state new_state, absl::Status status) {
793
+ PickFirst* p = subchannel_list_->policy_.get();
794
+ GRPC_TRACE_LOG(pick_first, INFO)
795
+ << "[PF " << p << "] subchannel list " << subchannel_list_ << " index "
796
+ << index_ << " of " << subchannel_list_->size() << " (subchannel_state "
797
+ << subchannel_state_.get() << "): connectivity changed: old_state="
798
+ << (connectivity_state_.has_value()
799
+ ? ConnectivityStateName(*connectivity_state_)
800
+ : "N/A")
801
+ << ", new_state=" << ConnectivityStateName(new_state)
802
+ << ", status=" << status
803
+ << ", seen_transient_failure=" << seen_transient_failure_
804
+ << ", p->selected_=" << p->selected_.get()
805
+ << ", p->subchannel_list_=" << p->subchannel_list_.get()
806
+ << ", p->subchannel_list_->shutting_down_="
807
+ << p->subchannel_list_->shutting_down_;
808
+ if (subchannel_list_->shutting_down_) return;
809
+ // The notification must be for a subchannel in the current list.
810
+ CHECK_EQ(subchannel_list_, p->subchannel_list_.get());
811
+ // SHUTDOWN should never happen.
812
+ CHECK_NE(new_state, GRPC_CHANNEL_SHUTDOWN);
813
+ // READY should be caught by SubchannelState, in which case it will
814
+ // not call us in the first place.
815
+ CHECK_NE(new_state, GRPC_CHANNEL_READY);
816
+ // Update state.
817
+ absl::optional<grpc_connectivity_state> old_state = connectivity_state_;
818
+ connectivity_state_ = new_state;
819
+ connectivity_status_ = std::move(status);
820
+ // Make sure we note when a subchannel has seen TRANSIENT_FAILURE.
821
+ bool prev_seen_transient_failure = seen_transient_failure_;
822
+ if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
823
+ seen_transient_failure_ = true;
824
+ subchannel_list_->last_failure_ = connectivity_status_;
825
+ }
826
+ // If this is the initial connectivity state update for this subchannel,
827
+ // increment the counter in the subchannel list.
828
+ if (!old_state.has_value()) {
829
+ ++subchannel_list_->num_subchannels_seen_initial_notification_;
830
+ }
831
+ // If we haven't yet seen the initial connectivity state notification
832
+ // for all subchannels, do nothing.
833
+ if (!subchannel_list_->AllSubchannelsSeenInitialState()) return;
834
+ // If we're still here and this is the initial connectivity state
835
+ // notification for this subchannel, that means it was the last one to
836
+ // see its initial notification. So we now have enough state to
837
+ // figure out how to proceed.
838
+ if (!old_state.has_value()) {
839
+ // If we already have a selected subchannel and we got here, that
840
+ // means that none of the subchannels on the new list are in READY
841
+ // state, which means that the address we're currently connected to
842
+ // is not in the new list. In that case, we drop the current
843
+ // connection and report IDLE.
844
+ if (p->selected_ != nullptr) {
845
+ GRPC_TRACE_LOG(pick_first, INFO)
846
+ << "[PF " << p << "] subchannel list " << subchannel_list_
847
+ << ": new update has no subchannels in state READY; dropping "
848
+ "existing connection and going IDLE";
849
+ p->GoIdle();
850
+ } else {
851
+ // Start trying to connect, starting with the first subchannel.
852
+ subchannel_list_->StartConnectingNextSubchannel();
853
+ }
854
+ return;
855
+ }
856
+ // We've already started trying to connect. Any subchannel that
857
+ // reports TF is a connection attempt failure.
858
+ if (new_state == GRPC_CHANNEL_TRANSIENT_FAILURE) {
859
+ auto& stats_plugins = subchannel_list_->policy_->channel_control_helper()
860
+ ->GetStatsPluginGroup();
861
+ stats_plugins.AddCounter(
862
+ kMetricConnectionAttemptsFailed, 1,
863
+ {subchannel_list_->policy_->channel_control_helper()->GetTarget()}, {});
864
+ }
865
+ // Otherwise, process connectivity state change.
866
+ switch (*connectivity_state_) {
867
+ case GRPC_CHANNEL_TRANSIENT_FAILURE: {
868
+ // If this is the first failure we've seen on this subchannel,
869
+ // then we're still in the Happy Eyeballs pass.
870
+ if (!prev_seen_transient_failure && seen_transient_failure_) {
871
+ // If a connection attempt fails before the timer fires, then
872
+ // cancel the timer and start connecting on the next subchannel.
873
+ if (index_ == subchannel_list_->attempting_index_) {
874
+ if (subchannel_list_->timer_handle_.has_value()) {
875
+ p->channel_control_helper()->GetEventEngine()->Cancel(
876
+ *subchannel_list_->timer_handle_);
877
+ }
878
+ ++subchannel_list_->attempting_index_;
879
+ subchannel_list_->StartConnectingNextSubchannel();
880
+ } else {
881
+ // If this was the last subchannel to fail, check if the Happy
882
+ // Eyeballs pass is complete.
883
+ subchannel_list_->MaybeFinishHappyEyeballsPass();
884
+ }
885
+ } else if (subchannel_list_->IsHappyEyeballsPassComplete()) {
886
+ // We're done with the initial Happy Eyeballs pass and in a mode
887
+ // where we're attempting to connect to every subchannel in
888
+ // parallel. We count the number of failed connection attempts,
889
+ // and when that is equal to the number of subchannels, request
890
+ // re-resolution and report TRANSIENT_FAILURE again, so that the
891
+ // caller has the most recent status message. Note that this
892
+ // isn't necessarily the same as saying that we've seen one
893
+ // failure for each subchannel in the list, because the backoff
894
+ // state may be different in each subchannel, so we may have seen
895
+ // one subchannel fail more than once and another subchannel not
896
+ // fail at all. But it's a good enough heuristic.
897
+ ++subchannel_list_->num_failures_;
898
+ if (subchannel_list_->num_failures_ % subchannel_list_->size() == 0) {
899
+ p->channel_control_helper()->RequestReresolution();
900
+ status = absl::UnavailableError(absl::StrCat(
901
+ (p->omit_status_message_prefix_
902
+ ? ""
903
+ : "failed to connect to all addresses; last error: "),
904
+ connectivity_status_.ToString()));
905
+ p->UpdateState(GRPC_CHANNEL_TRANSIENT_FAILURE, status,
906
+ MakeRefCounted<TransientFailurePicker>(status));
907
+ }
908
+ }
909
+ break;
910
+ }
911
+ case GRPC_CHANNEL_IDLE:
912
+ // If we've finished the first Happy Eyeballs pass, then we go
913
+ // into a mode where we immediately try to connect to every
914
+ // subchannel in parallel.
915
+ if (subchannel_list_->IsHappyEyeballsPassComplete()) {
916
+ subchannel_state_->RequestConnection();
917
+ }
918
+ break;
919
+ case GRPC_CHANNEL_CONNECTING:
920
+ // Only update connectivity state only if we're not already in
921
+ // TRANSIENT_FAILURE.
922
+ // TODO(roth): Squelch duplicate CONNECTING updates.
923
+ if (p->state_ != GRPC_CHANNEL_TRANSIENT_FAILURE) {
924
+ p->UpdateState(GRPC_CHANNEL_CONNECTING, absl::Status(),
925
+ MakeRefCounted<QueuePicker>(nullptr));
926
+ }
927
+ break;
928
+ default:
929
+ // We handled READY above, and we should never see SHUTDOWN.
930
+ GPR_UNREACHABLE_CODE(break);
931
+ }
932
+ }
72
933
 
73
- namespace {
934
+ void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() {
935
+ CHECK(connectivity_state_.has_value());
936
+ if (connectivity_state_ == GRPC_CHANNEL_IDLE) {
937
+ subchannel_state_->RequestConnection();
938
+ } else {
939
+ CHECK_EQ(connectivity_state_.value(), GRPC_CHANNEL_CONNECTING);
940
+ }
941
+ // If this is not the last subchannel in the list, start the timer.
942
+ if (index_ != subchannel_list_->size() - 1) {
943
+ PickFirst* p = subchannel_list_->policy_.get();
944
+ GRPC_TRACE_LOG(pick_first, INFO)
945
+ << "Pick First " << p << " subchannel list " << subchannel_list_
946
+ << ": starting Connection Attempt Delay timer for "
947
+ << p->connection_attempt_delay_.millis() << "ms for index " << index_;
948
+ subchannel_list_->timer_handle_ =
949
+ p->channel_control_helper()->GetEventEngine()->RunAfter(
950
+ p->connection_attempt_delay_,
951
+ [subchannel_list =
952
+ subchannel_list_->Ref(DEBUG_LOCATION, "timer")]() mutable {
953
+ ApplicationCallbackExecCtx application_exec_ctx;
954
+ ExecCtx exec_ctx;
955
+ auto* sl = subchannel_list.get();
956
+ sl->policy_->work_serializer()->Run(
957
+ [subchannel_list = std::move(subchannel_list)]() {
958
+ GRPC_TRACE_LOG(pick_first, INFO)
959
+ << "Pick First " << subchannel_list->policy_.get()
960
+ << " subchannel list " << subchannel_list.get()
961
+ << ": Connection Attempt Delay timer fired "
962
+ "(shutting_down="
963
+ << subchannel_list->shutting_down_ << ", selected="
964
+ << subchannel_list->policy_->selected_.get() << ")";
965
+ if (subchannel_list->shutting_down_) return;
966
+ if (subchannel_list->policy_->selected_ != nullptr) return;
967
+ ++subchannel_list->attempting_index_;
968
+ subchannel_list->StartConnectingNextSubchannel();
969
+ },
970
+ DEBUG_LOCATION);
971
+ });
972
+ }
973
+ }
74
974
 
75
975
  //
76
- // pick_first LB policy
976
+ // PickFirst::SubchannelList
77
977
  //
78
978
 
79
- constexpr absl::string_view kPickFirst = "pick_first";
80
-
81
- const auto kMetricDisconnections =
82
- GlobalInstrumentsRegistry::RegisterUInt64Counter(
83
- "grpc.lb.pick_first.disconnections",
84
- "EXPERIMENTAL. Number of times the selected subchannel becomes "
85
- "disconnected.",
86
- "{disconnection}", {kMetricLabelTarget}, {}, false);
979
+ PickFirst::SubchannelList::SubchannelList(RefCountedPtr<PickFirst> policy,
980
+ EndpointAddressesIterator* addresses,
981
+ const ChannelArgs& args)
982
+ : InternallyRefCounted<SubchannelList>(
983
+ GRPC_TRACE_FLAG_ENABLED(pick_first) ? "SubchannelList" : nullptr),
984
+ policy_(std::move(policy)),
985
+ args_(args.Remove(GRPC_ARG_INTERNAL_PICK_FIRST_ENABLE_HEALTH_CHECKING)
986
+ .Remove(
987
+ GRPC_ARG_INTERNAL_PICK_FIRST_OMIT_STATUS_MESSAGE_PREFIX)) {
988
+ GRPC_TRACE_LOG(pick_first, INFO)
989
+ << "[PF " << policy_.get() << "] Creating subchannel list " << this
990
+ << " - channel args: " << args_.ToString();
991
+ if (addresses == nullptr) return;
992
+ // Create a subchannel for each address.
993
+ addresses->ForEach([&](const EndpointAddresses& address) {
994
+ CHECK_EQ(address.addresses().size(), 1u);
995
+ RefCountedPtr<SubchannelInterface> subchannel =
996
+ policy_->channel_control_helper()->CreateSubchannel(
997
+ address.address(), address.args(), args_);
998
+ if (subchannel == nullptr) {
999
+ // Subchannel could not be created.
1000
+ GRPC_TRACE_LOG(pick_first, INFO)
1001
+ << "[PF " << policy_.get()
1002
+ << "] could not create subchannel for address " << address.ToString()
1003
+ << ", ignoring";
1004
+ return;
1005
+ }
1006
+ GRPC_TRACE_LOG(pick_first, INFO)
1007
+ << "[PF " << policy_.get() << "] subchannel list " << this << " index "
1008
+ << subchannels_.size() << ": Created subchannel " << subchannel.get()
1009
+ << " for address " << address.ToString();
1010
+ subchannels_.emplace_back(std::make_unique<SubchannelData>(
1011
+ this, subchannels_.size(), std::move(subchannel)));
1012
+ });
1013
+ }
87
1014
 
88
- const auto kMetricConnectionAttemptsSucceeded =
89
- GlobalInstrumentsRegistry::RegisterUInt64Counter(
90
- "grpc.lb.pick_first.connection_attempts_succeeded",
91
- "EXPERIMENTAL. Number of successful connection attempts.",
92
- "{attempt}", {kMetricLabelTarget}, {}, false);
1015
+ PickFirst::SubchannelList::~SubchannelList() {
1016
+ GRPC_TRACE_LOG(pick_first, INFO)
1017
+ << "[PF " << policy_.get() << "] Destroying subchannel_list " << this;
1018
+ }
93
1019
 
94
- const auto kMetricConnectionAttemptsFailed =
95
- GlobalInstrumentsRegistry::RegisterUInt64Counter(
96
- "grpc.lb.pick_first.connection_attempts_failed",
97
- "EXPERIMENTAL. Number of failed connection attempts.",
98
- "{attempt}", {kMetricLabelTarget}, {}, false);
1020
+ void PickFirst::SubchannelList::Orphan() {
1021
+ GRPC_TRACE_LOG(pick_first, INFO)
1022
+ << "[PF " << policy_.get() << "] Shutting down subchannel_list " << this;
1023
+ CHECK(!shutting_down_);
1024
+ shutting_down_ = true;
1025
+ // Shut down subchannels.
1026
+ subchannels_.clear();
1027
+ // Cancel Happy Eyeballs timer, if any.
1028
+ if (timer_handle_.has_value()) {
1029
+ policy_->channel_control_helper()->GetEventEngine()->Cancel(*timer_handle_);
1030
+ }
1031
+ Unref();
1032
+ }
99
1033
 
100
- class PickFirstConfig final : public LoadBalancingPolicy::Config {
101
- public:
102
- absl::string_view name() const override { return kPickFirst; }
103
- bool shuffle_addresses() const { return shuffle_addresses_; }
1034
+ void PickFirst::SubchannelList::ResetBackoffLocked() {
1035
+ for (auto& sd : subchannels_) {
1036
+ sd->ResetBackoffLocked();
1037
+ }
1038
+ }
104
1039
 
105
- static const JsonLoaderInterface* JsonLoader(const JsonArgs&) {
106
- static const auto kJsonLoader =
107
- JsonObjectLoader<PickFirstConfig>()
108
- .OptionalField("shuffleAddressList",
109
- &PickFirstConfig::shuffle_addresses_)
110
- .Finish();
111
- return kJsonLoader;
1040
+ void PickFirst::SubchannelList::StartConnectingNextSubchannel() {
1041
+ // Find the next subchannel not in state TRANSIENT_FAILURE.
1042
+ // We skip subchannels in state TRANSIENT_FAILURE to avoid a
1043
+ // large recursion that could overflow the stack.
1044
+ for (; attempting_index_ < size(); ++attempting_index_) {
1045
+ SubchannelData* sc = subchannels_[attempting_index_].get();
1046
+ CHECK(sc->connectivity_state().has_value());
1047
+ if (sc->connectivity_state() != GRPC_CHANNEL_TRANSIENT_FAILURE) {
1048
+ // Found a subchannel not in TRANSIENT_FAILURE, so trigger a
1049
+ // connection attempt.
1050
+ sc->RequestConnectionWithTimer();
1051
+ return;
1052
+ }
112
1053
  }
1054
+ // If we didn't find a subchannel to request a connection on, check to
1055
+ // see if the Happy Eyeballs pass is complete.
1056
+ MaybeFinishHappyEyeballsPass();
1057
+ }
113
1058
 
114
- private:
115
- bool shuffle_addresses_ = false;
116
- };
1059
+ void PickFirst::SubchannelList::MaybeFinishHappyEyeballsPass() {
1060
+ // Make sure all subchannels have finished a connection attempt before
1061
+ // we consider the Happy Eyeballs pass complete.
1062
+ if (!IsHappyEyeballsPassComplete()) return;
1063
+ // We didn't find another subchannel not in state TRANSIENT_FAILURE,
1064
+ // so report TRANSIENT_FAILURE and switch to a mode in which we try to
1065
+ // connect to all addresses in parallel.
1066
+ GRPC_TRACE_LOG(pick_first, INFO)
1067
+ << "Pick First " << policy_.get() << " subchannel list " << this
1068
+ << " failed to connect to all subchannels";
1069
+ // Re-resolve and report TRANSIENT_FAILURE.
1070
+ policy_->channel_control_helper()->RequestReresolution();
1071
+ absl::Status status = absl::UnavailableError(
1072
+ absl::StrCat((policy_->omit_status_message_prefix_
1073
+ ? ""
1074
+ : "failed to connect to all addresses; last error: "),
1075
+ last_failure_.ToString()));
1076
+ policy_->UpdateState(GRPC_CHANNEL_TRANSIENT_FAILURE, status,
1077
+ MakeRefCounted<TransientFailurePicker>(status));
1078
+ // Drop the existing (working) connection, if any. This may be
1079
+ // sub-optimal, but we can't ignore what the control plane told us.
1080
+ policy_->UnsetSelectedSubchannel();
1081
+ // We now transition into a mode where we try to connect to all
1082
+ // subchannels in parallel. For any subchannel currently in IDLE,
1083
+ // trigger a connection attempt. For any subchannel not currently in
1084
+ // IDLE, we will trigger a connection attempt when it does report IDLE.
1085
+ for (auto& sd : subchannels_) {
1086
+ if (sd->connectivity_state() == GRPC_CHANNEL_IDLE) {
1087
+ sd->RequestConnection();
1088
+ }
1089
+ }
1090
+ }
117
1091
 
118
- class PickFirst final : public LoadBalancingPolicy {
1092
+ // TODO(roth): Remove this when the pick_first_new experiment is removed.
1093
+ class OldPickFirst final : public LoadBalancingPolicy {
119
1094
  public:
120
- explicit PickFirst(Args args);
1095
+ explicit OldPickFirst(Args args);
121
1096
 
122
1097
  absl::string_view name() const override { return kPickFirst; }
123
1098
 
@@ -126,7 +1101,7 @@ class PickFirst final : public LoadBalancingPolicy {
126
1101
  void ResetBackoffLocked() override;
127
1102
 
128
1103
  private:
129
- ~PickFirst() override;
1104
+ ~OldPickFirst() override;
130
1105
 
131
1106
  class SubchannelList final : public InternallyRefCounted<SubchannelList> {
132
1107
  public:
@@ -211,7 +1186,7 @@ class PickFirst final : public LoadBalancingPolicy {
211
1186
  bool seen_transient_failure_ = false;
212
1187
  };
213
1188
 
214
- SubchannelList(RefCountedPtr<PickFirst> policy,
1189
+ SubchannelList(RefCountedPtr<OldPickFirst> policy,
215
1190
  EndpointAddressesIterator* addresses,
216
1191
  const ChannelArgs& args);
217
1192
 
@@ -257,7 +1232,7 @@ class PickFirst final : public LoadBalancingPolicy {
257
1232
  void MaybeFinishHappyEyeballsPass();
258
1233
 
259
1234
  // Backpointer to owning policy.
260
- RefCountedPtr<PickFirst> policy_;
1235
+ RefCountedPtr<OldPickFirst> policy_;
261
1236
 
262
1237
  ChannelArgs args_;
263
1238
 
@@ -290,7 +1265,7 @@ class PickFirst final : public LoadBalancingPolicy {
290
1265
  class HealthWatcher final
291
1266
  : public SubchannelInterface::ConnectivityStateWatcherInterface {
292
1267
  public:
293
- explicit HealthWatcher(RefCountedPtr<PickFirst> policy)
1268
+ explicit HealthWatcher(RefCountedPtr<OldPickFirst> policy)
294
1269
  : policy_(std::move(policy)) {}
295
1270
 
296
1271
  ~HealthWatcher() override {
@@ -305,7 +1280,7 @@ class PickFirst final : public LoadBalancingPolicy {
305
1280
  }
306
1281
 
307
1282
  private:
308
- RefCountedPtr<PickFirst> policy_;
1283
+ RefCountedPtr<OldPickFirst> policy_;
309
1284
  };
310
1285
 
311
1286
  class Picker final : public SubchannelPicker {
@@ -365,7 +1340,7 @@ class PickFirst final : public LoadBalancingPolicy {
365
1340
  absl::BitGen bit_gen_;
366
1341
  };
367
1342
 
368
- PickFirst::PickFirst(Args args)
1343
+ OldPickFirst::OldPickFirst(Args args)
369
1344
  : LoadBalancingPolicy(std::move(args)),
370
1345
  enable_health_watch_(
371
1346
  channel_args()
@@ -380,61 +1355,54 @@ PickFirst::PickFirst(Args args)
380
1355
  .GetInt(GRPC_ARG_HAPPY_EYEBALLS_CONNECTION_ATTEMPT_DELAY_MS)
381
1356
  .value_or(250),
382
1357
  100, 2000))) {
383
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
384
- gpr_log(GPR_INFO, "Pick First %p created.", this);
385
- }
1358
+ GRPC_TRACE_LOG(pick_first, INFO) << "Pick First " << this << " created.";
386
1359
  }
387
1360
 
388
- PickFirst::~PickFirst() {
389
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
390
- gpr_log(GPR_INFO, "Destroying Pick First %p", this);
391
- }
392
- GPR_ASSERT(subchannel_list_ == nullptr);
393
- GPR_ASSERT(latest_pending_subchannel_list_ == nullptr);
1361
+ OldPickFirst::~OldPickFirst() {
1362
+ GRPC_TRACE_LOG(pick_first, INFO) << "Destroying Pick First " << this;
1363
+ CHECK(subchannel_list_ == nullptr);
1364
+ CHECK(latest_pending_subchannel_list_ == nullptr);
394
1365
  }
395
1366
 
396
- void PickFirst::ShutdownLocked() {
397
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
398
- gpr_log(GPR_INFO, "Pick First %p Shutting down", this);
399
- }
1367
+ void OldPickFirst::ShutdownLocked() {
1368
+ GRPC_TRACE_LOG(pick_first, INFO) << "Pick First " << this << " Shutting down";
400
1369
  shutdown_ = true;
401
1370
  UnsetSelectedSubchannel();
402
1371
  subchannel_list_.reset();
403
1372
  latest_pending_subchannel_list_.reset();
404
1373
  }
405
1374
 
406
- void PickFirst::ExitIdleLocked() {
1375
+ void OldPickFirst::ExitIdleLocked() {
407
1376
  if (shutdown_) return;
408
1377
  if (IsIdle()) {
409
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
410
- gpr_log(GPR_INFO, "Pick First %p exiting idle", this);
411
- }
1378
+ GRPC_TRACE_LOG(pick_first, INFO)
1379
+ << "Pick First " << this << " exiting idle";
412
1380
  AttemptToConnectUsingLatestUpdateArgsLocked();
413
1381
  }
414
1382
  }
415
1383
 
416
- void PickFirst::ResetBackoffLocked() {
1384
+ void OldPickFirst::ResetBackoffLocked() {
417
1385
  if (subchannel_list_ != nullptr) subchannel_list_->ResetBackoffLocked();
418
1386
  if (latest_pending_subchannel_list_ != nullptr) {
419
1387
  latest_pending_subchannel_list_->ResetBackoffLocked();
420
1388
  }
421
1389
  }
422
1390
 
423
- void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
1391
+ void OldPickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
424
1392
  // Create a subchannel list from latest_update_args_.
425
1393
  EndpointAddressesIterator* addresses = nullptr;
426
1394
  if (latest_update_args_.addresses.ok()) {
427
1395
  addresses = latest_update_args_.addresses->get();
428
1396
  }
429
1397
  // Replace latest_pending_subchannel_list_.
430
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace) &&
1398
+ if (GRPC_TRACE_FLAG_ENABLED(pick_first) &&
431
1399
  latest_pending_subchannel_list_ != nullptr) {
432
- gpr_log(GPR_INFO,
433
- "[PF %p] Shutting down previous pending subchannel list %p", this,
434
- latest_pending_subchannel_list_.get());
1400
+ LOG(INFO) << "[PF " << this
1401
+ << "] Shutting down previous pending subchannel list "
1402
+ << latest_pending_subchannel_list_.get();
435
1403
  }
436
1404
  latest_pending_subchannel_list_ = MakeOrphanable<SubchannelList>(
437
- RefAsSubclass<PickFirst>(), addresses, latest_update_args_.args);
1405
+ RefAsSubclass<OldPickFirst>(), addresses, latest_update_args_.args);
438
1406
  // Empty update or no valid subchannels. Put the channel in
439
1407
  // TRANSIENT_FAILURE and request re-resolution.
440
1408
  if (latest_pending_subchannel_list_->size() == 0) {
@@ -451,51 +1419,22 @@ void PickFirst::AttemptToConnectUsingLatestUpdateArgsLocked() {
451
1419
  // the current list, replace the current subchannel list immediately.
452
1420
  if (latest_pending_subchannel_list_->size() == 0 || selected_ == nullptr) {
453
1421
  UnsetSelectedSubchannel();
454
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace) &&
455
- subchannel_list_ != nullptr) {
456
- gpr_log(GPR_INFO, "[PF %p] Shutting down previous subchannel list %p",
457
- this, subchannel_list_.get());
1422
+ if (GRPC_TRACE_FLAG_ENABLED(pick_first) && subchannel_list_ != nullptr) {
1423
+ LOG(INFO) << "[PF " << this << "] Shutting down previous subchannel list "
1424
+ << subchannel_list_.get();
458
1425
  }
459
1426
  subchannel_list_ = std::move(latest_pending_subchannel_list_);
460
1427
  }
461
1428
  }
462
1429
 
463
- absl::string_view GetAddressFamily(const grpc_resolved_address& address) {
464
- const char* uri_scheme = grpc_sockaddr_get_uri_scheme(&address);
465
- return absl::string_view(uri_scheme == nullptr ? "other" : uri_scheme);
466
- };
467
-
468
- // An endpoint list iterator that returns only entries for a specific
469
- // address family, as indicated by the URI scheme.
470
- class AddressFamilyIterator final {
471
- public:
472
- AddressFamilyIterator(absl::string_view scheme, size_t index)
473
- : scheme_(scheme), index_(index) {}
474
-
475
- EndpointAddresses* Next(EndpointAddressesList& endpoints,
476
- std::vector<bool>* endpoints_moved) {
477
- for (; index_ < endpoints.size(); ++index_) {
478
- if (!(*endpoints_moved)[index_] &&
479
- GetAddressFamily(endpoints[index_].address()) == scheme_) {
480
- (*endpoints_moved)[index_] = true;
481
- return &endpoints[index_++];
482
- }
483
- }
484
- return nullptr;
485
- }
486
-
487
- private:
488
- absl::string_view scheme_;
489
- size_t index_;
490
- };
491
-
492
- absl::Status PickFirst::UpdateLocked(UpdateArgs args) {
493
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1430
+ absl::Status OldPickFirst::UpdateLocked(UpdateArgs args) {
1431
+ if (GRPC_TRACE_FLAG_ENABLED(pick_first)) {
494
1432
  if (args.addresses.ok()) {
495
- gpr_log(GPR_INFO, "Pick First %p received update", this);
1433
+ LOG(INFO) << "Pick First " << this << " received update";
496
1434
  } else {
497
- gpr_log(GPR_INFO, "Pick First %p received update with address error: %s",
498
- this, args.addresses.status().ToString().c_str());
1435
+ LOG(INFO) << "Pick First " << this
1436
+ << " received update with address error: "
1437
+ << args.addresses.status();
499
1438
  }
500
1439
  }
501
1440
  // Set return status based on the address list.
@@ -568,14 +1507,14 @@ absl::Status PickFirst::UpdateLocked(UpdateArgs args) {
568
1507
  return status;
569
1508
  }
570
1509
 
571
- void PickFirst::UpdateState(grpc_connectivity_state state,
572
- const absl::Status& status,
573
- RefCountedPtr<SubchannelPicker> picker) {
1510
+ void OldPickFirst::UpdateState(grpc_connectivity_state state,
1511
+ const absl::Status& status,
1512
+ RefCountedPtr<SubchannelPicker> picker) {
574
1513
  state_ = state;
575
1514
  channel_control_helper()->UpdateState(state, status, std::move(picker));
576
1515
  }
577
1516
 
578
- void PickFirst::UnsetSelectedSubchannel() {
1517
+ void OldPickFirst::UnsetSelectedSubchannel() {
579
1518
  if (selected_ != nullptr && health_data_watcher_ != nullptr) {
580
1519
  selected_->subchannel()->CancelDataWatcher(health_data_watcher_);
581
1520
  }
@@ -585,17 +1524,16 @@ void PickFirst::UnsetSelectedSubchannel() {
585
1524
  }
586
1525
 
587
1526
  //
588
- // PickFirst::HealthWatcher
1527
+ // OldPickFirst::HealthWatcher
589
1528
  //
590
1529
 
591
- void PickFirst::HealthWatcher::OnConnectivityStateChange(
1530
+ void OldPickFirst::HealthWatcher::OnConnectivityStateChange(
592
1531
  grpc_connectivity_state new_state, absl::Status status) {
593
1532
  if (policy_->health_watcher_ != this) return;
594
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
595
- gpr_log(GPR_INFO, "[PF %p] health watch state update: %s (%s)",
596
- policy_.get(), ConnectivityStateName(new_state),
597
- status.ToString().c_str());
598
- }
1533
+ GRPC_TRACE_LOG(pick_first, INFO)
1534
+ << "[PF " << policy_.get()
1535
+ << "] health watch state update: " << ConnectivityStateName(new_state)
1536
+ << " (" << status << ")";
599
1537
  switch (new_state) {
600
1538
  case GRPC_CHANNEL_READY:
601
1539
  policy_->channel_control_helper()->UpdateState(
@@ -616,7 +1554,8 @@ void PickFirst::HealthWatcher::OnConnectivityStateChange(
616
1554
  case GRPC_CHANNEL_TRANSIENT_FAILURE:
617
1555
  policy_->channel_control_helper()->UpdateState(
618
1556
  GRPC_CHANNEL_TRANSIENT_FAILURE, status,
619
- MakeRefCounted<TransientFailurePicker>(status));
1557
+ MakeRefCounted<TransientFailurePicker>(absl::UnavailableError(
1558
+ absl::StrCat("health watch: ", status.message()))));
620
1559
  break;
621
1560
  case GRPC_CHANNEL_SHUTDOWN:
622
1561
  Crash("health watcher reported state SHUTDOWN");
@@ -624,84 +1563,75 @@ void PickFirst::HealthWatcher::OnConnectivityStateChange(
624
1563
  }
625
1564
 
626
1565
  //
627
- // PickFirst::SubchannelList::SubchannelData
1566
+ // OldPickFirst::SubchannelList::SubchannelData
628
1567
  //
629
1568
 
630
- PickFirst::SubchannelList::SubchannelData::SubchannelData(
1569
+ OldPickFirst::SubchannelList::SubchannelData::SubchannelData(
631
1570
  SubchannelList* subchannel_list, size_t index,
632
1571
  RefCountedPtr<SubchannelInterface> subchannel)
633
1572
  : subchannel_list_(subchannel_list),
634
1573
  index_(index),
635
1574
  subchannel_(std::move(subchannel)) {
636
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
637
- gpr_log(GPR_INFO,
638
- "[PF %p] subchannel list %p index %" PRIuPTR
639
- " (subchannel %p): starting watch",
640
- subchannel_list_->policy_.get(), subchannel_list_, index_,
641
- subchannel_.get());
642
- }
1575
+ GRPC_TRACE_LOG(pick_first, INFO)
1576
+ << "[PF " << subchannel_list_->policy_.get() << "] subchannel list "
1577
+ << subchannel_list_ << " index " << index_ << " (subchannel "
1578
+ << subchannel_.get() << "): starting watch";
643
1579
  auto watcher = std::make_unique<Watcher>(
644
1580
  subchannel_list_->Ref(DEBUG_LOCATION, "Watcher"), index_);
645
1581
  pending_watcher_ = watcher.get();
646
1582
  subchannel_->WatchConnectivityState(std::move(watcher));
647
1583
  }
648
1584
 
649
- void PickFirst::SubchannelList::SubchannelData::ShutdownLocked() {
1585
+ void OldPickFirst::SubchannelList::SubchannelData::ShutdownLocked() {
650
1586
  if (subchannel_ != nullptr) {
651
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
652
- gpr_log(GPR_INFO,
653
- "[PF %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
654
- " (subchannel %p): cancelling watch and unreffing subchannel",
655
- subchannel_list_->policy_.get(), subchannel_list_, index_,
656
- subchannel_list_->size(), subchannel_.get());
657
- }
1587
+ GRPC_TRACE_LOG(pick_first, INFO)
1588
+ << "[PF " << subchannel_list_->policy_.get() << "] subchannel list "
1589
+ << subchannel_list_ << " index " << index_ << " of "
1590
+ << subchannel_list_->size() << " (subchannel " << subchannel_.get()
1591
+ << "): cancelling watch and unreffing subchannel";
658
1592
  subchannel_->CancelConnectivityStateWatch(pending_watcher_);
659
1593
  pending_watcher_ = nullptr;
660
1594
  subchannel_.reset();
661
1595
  }
662
1596
  }
663
1597
 
664
- void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
1598
+ void OldPickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
665
1599
  grpc_connectivity_state new_state, absl::Status status) {
666
- PickFirst* p = subchannel_list_->policy_.get();
667
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
668
- gpr_log(
669
- GPR_INFO,
670
- "[PF %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
671
- " (subchannel %p): connectivity changed: old_state=%s, new_state=%s, "
672
- "status=%s, shutting_down=%d, pending_watcher=%p, "
673
- "seen_transient_failure=%d, p->selected_=%p, "
674
- "p->subchannel_list_=%p, p->latest_pending_subchannel_list_=%p",
675
- p, subchannel_list_, index_, subchannel_list_->size(),
676
- subchannel_.get(),
677
- (connectivity_state_.has_value()
678
- ? ConnectivityStateName(*connectivity_state_)
679
- : "N/A"),
680
- ConnectivityStateName(new_state), status.ToString().c_str(),
681
- subchannel_list_->shutting_down_, pending_watcher_,
682
- seen_transient_failure_, p->selected_, p->subchannel_list_.get(),
683
- p->latest_pending_subchannel_list_.get());
684
- }
1600
+ OldPickFirst* p = subchannel_list_->policy_.get();
1601
+ GRPC_TRACE_LOG(pick_first, INFO)
1602
+ << "[PF " << p << "] subchannel list " << subchannel_list_ << " index "
1603
+ << index_ << " of " << subchannel_list_->size() << " (subchannel "
1604
+ << subchannel_.get() << "): connectivity changed: old_state="
1605
+ << (connectivity_state_.has_value()
1606
+ ? ConnectivityStateName(*connectivity_state_)
1607
+ : "N/A")
1608
+ << ", new_state=" << ConnectivityStateName(new_state)
1609
+ << ", status=" << status
1610
+ << ", shutting_down=" << subchannel_list_->shutting_down_
1611
+ << ", pending_watcher=" << pending_watcher_
1612
+ << ", seen_transient_failure=" << seen_transient_failure_
1613
+ << ", p->selected_=" << p->selected_
1614
+ << ", p->subchannel_list_=" << p->subchannel_list_.get()
1615
+ << ", p->latest_pending_subchannel_list_="
1616
+ << p->latest_pending_subchannel_list_.get();
1617
+
685
1618
  if (subchannel_list_->shutting_down_ || pending_watcher_ == nullptr) return;
686
- auto& stats_plugins =
687
- subchannel_list_->policy_->channel_control_helper()
688
- ->GetStatsPluginGroup();
1619
+ auto& stats_plugins = subchannel_list_->policy_->channel_control_helper()
1620
+ ->GetStatsPluginGroup();
689
1621
  // The notification must be for a subchannel in either the current or
690
1622
  // latest pending subchannel lists.
691
- GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get() ||
692
- subchannel_list_ == p->latest_pending_subchannel_list_.get());
693
- GPR_ASSERT(new_state != GRPC_CHANNEL_SHUTDOWN);
1623
+ CHECK(subchannel_list_ == p->subchannel_list_.get() ||
1624
+ subchannel_list_ == p->latest_pending_subchannel_list_.get());
1625
+ CHECK(new_state != GRPC_CHANNEL_SHUTDOWN);
694
1626
  absl::optional<grpc_connectivity_state> old_state = connectivity_state_;
695
1627
  connectivity_state_ = new_state;
696
1628
  connectivity_status_ = std::move(status);
697
1629
  // Handle updates for the currently selected subchannel.
698
1630
  if (p->selected_ == this) {
699
- GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get());
700
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
701
- gpr_log(GPR_INFO,
702
- "Pick First %p selected subchannel connectivity changed to %s", p,
703
- ConnectivityStateName(new_state));
704
- }
1631
+ CHECK(subchannel_list_ == p->subchannel_list_.get());
1632
+ GRPC_TRACE_LOG(pick_first, INFO)
1633
+ << "Pick First " << p << " selected subchannel connectivity changed to "
1634
+ << ConnectivityStateName(new_state);
705
1635
  // Any state change is considered to be a failure of the existing
706
1636
  // connection.
707
1637
  stats_plugins.AddCounter(
@@ -716,13 +1646,10 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
716
1646
  p->channel_control_helper()->RequestReresolution();
717
1647
  // If there is a pending update, switch to the pending update.
718
1648
  if (p->latest_pending_subchannel_list_ != nullptr) {
719
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
720
- gpr_log(GPR_INFO,
721
- "Pick First %p promoting pending subchannel list %p to "
722
- "replace %p",
723
- p, p->latest_pending_subchannel_list_.get(),
724
- p->subchannel_list_.get());
725
- }
1649
+ GRPC_TRACE_LOG(pick_first, INFO)
1650
+ << "Pick First " << p << " promoting pending subchannel list "
1651
+ << p->latest_pending_subchannel_list_.get() << " to replace "
1652
+ << p->subchannel_list_.get();
726
1653
  p->UnsetSelectedSubchannel();
727
1654
  p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
728
1655
  // Set our state to that of the pending subchannel list.
@@ -869,23 +1796,21 @@ void PickFirst::SubchannelList::SubchannelData::OnConnectivityStateChange(
869
1796
  }
870
1797
  }
871
1798
 
872
- void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() {
873
- GPR_ASSERT(connectivity_state_.has_value());
1799
+ void OldPickFirst::SubchannelList::SubchannelData::
1800
+ RequestConnectionWithTimer() {
1801
+ CHECK(connectivity_state_.has_value());
874
1802
  if (connectivity_state_ == GRPC_CHANNEL_IDLE) {
875
1803
  subchannel_->RequestConnection();
876
1804
  } else {
877
- GPR_ASSERT(connectivity_state_ == GRPC_CHANNEL_CONNECTING);
1805
+ CHECK(connectivity_state_ == GRPC_CHANNEL_CONNECTING);
878
1806
  }
879
1807
  // If this is not the last subchannel in the list, start the timer.
880
1808
  if (index_ != subchannel_list_->size() - 1) {
881
- PickFirst* p = subchannel_list_->policy_.get();
882
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
883
- gpr_log(GPR_INFO,
884
- "Pick First %p subchannel list %p: starting Connection "
885
- "Attempt Delay timer for %" PRId64 "ms for index %" PRIuPTR,
886
- p, subchannel_list_, p->connection_attempt_delay_.millis(),
887
- index_);
888
- }
1809
+ OldPickFirst* p = subchannel_list_->policy_.get();
1810
+ GRPC_TRACE_LOG(pick_first, INFO)
1811
+ << "Pick First " << p << " subchannel list " << subchannel_list_
1812
+ << ": starting Connection Attempt Delay timer for "
1813
+ << p->connection_attempt_delay_.millis() << "ms for index " << index_;
889
1814
  subchannel_list_->timer_handle_ =
890
1815
  p->channel_control_helper()->GetEventEngine()->RunAfter(
891
1816
  p->connection_attempt_delay_,
@@ -896,16 +1821,13 @@ void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() {
896
1821
  auto* sl = subchannel_list.get();
897
1822
  sl->policy_->work_serializer()->Run(
898
1823
  [subchannel_list = std::move(subchannel_list)]() {
899
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
900
- gpr_log(GPR_INFO,
901
- "Pick First %p subchannel list %p: Connection "
902
- "Attempt Delay timer fired (shutting_down=%d, "
903
- "selected=%p)",
904
- subchannel_list->policy_.get(),
905
- subchannel_list.get(),
906
- subchannel_list->shutting_down_,
907
- subchannel_list->policy_->selected_);
908
- }
1824
+ GRPC_TRACE_LOG(pick_first, INFO)
1825
+ << "Pick First " << subchannel_list->policy_.get()
1826
+ << " subchannel list " << subchannel_list.get()
1827
+ << ": Connection Attempt Delay timer fired "
1828
+ << "(shutting_down=" << subchannel_list->shutting_down_
1829
+ << ", selected=" << subchannel_list->policy_->selected_
1830
+ << ")";
909
1831
  if (subchannel_list->shutting_down_) return;
910
1832
  if (subchannel_list->policy_->selected_ != nullptr) return;
911
1833
  ++subchannel_list->attempting_index_;
@@ -916,8 +1838,9 @@ void PickFirst::SubchannelList::SubchannelData::RequestConnectionWithTimer() {
916
1838
  }
917
1839
  }
918
1840
 
919
- void PickFirst::SubchannelList::SubchannelData::ProcessUnselectedReadyLocked() {
920
- PickFirst* p = subchannel_list_->policy_.get();
1841
+ void OldPickFirst::SubchannelList::SubchannelData::
1842
+ ProcessUnselectedReadyLocked() {
1843
+ OldPickFirst* p = subchannel_list_->policy_.get();
921
1844
  // Cancel Happy Eyeballs timer, if any.
922
1845
  if (subchannel_list_->timer_handle_.has_value()) {
923
1846
  p->channel_control_helper()->GetEventEngine()->Cancel(
@@ -932,36 +1855,30 @@ void PickFirst::SubchannelList::SubchannelData::ProcessUnselectedReadyLocked() {
932
1855
  // for a subchannel in p->latest_pending_subchannel_list_. The
933
1856
  // goal here is to find a subchannel from the update that we can
934
1857
  // select in place of the current one.
935
- GPR_ASSERT(subchannel_list_ == p->subchannel_list_.get() ||
936
- subchannel_list_ == p->latest_pending_subchannel_list_.get());
1858
+ CHECK(subchannel_list_ == p->subchannel_list_.get() ||
1859
+ subchannel_list_ == p->latest_pending_subchannel_list_.get());
937
1860
  // Case 2. Promote p->latest_pending_subchannel_list_ to p->subchannel_list_.
938
1861
  if (subchannel_list_ == p->latest_pending_subchannel_list_.get()) {
939
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
940
- gpr_log(GPR_INFO,
941
- "Pick First %p promoting pending subchannel list %p to "
942
- "replace %p",
943
- p, p->latest_pending_subchannel_list_.get(),
944
- p->subchannel_list_.get());
945
- }
1862
+ GRPC_TRACE_LOG(pick_first, INFO)
1863
+ << "Pick First " << p << " promoting pending subchannel list "
1864
+ << p->latest_pending_subchannel_list_.get() << " to replace "
1865
+ << p->subchannel_list_.get();
946
1866
  p->UnsetSelectedSubchannel();
947
1867
  p->subchannel_list_ = std::move(p->latest_pending_subchannel_list_);
948
1868
  }
949
1869
  // Cases 1 and 2.
950
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
951
- gpr_log(GPR_INFO, "Pick First %p selected subchannel %p", p,
952
- subchannel_.get());
953
- }
1870
+ GRPC_TRACE_LOG(pick_first, INFO)
1871
+ << "Pick First " << p << " selected subchannel " << subchannel_.get();
954
1872
  p->selected_ = this;
955
1873
  // If health checking is enabled, start the health watch, but don't
956
1874
  // report a new picker -- we want to stay in CONNECTING while we wait
957
1875
  // for the health status notification.
958
1876
  // If health checking is NOT enabled, report READY.
959
1877
  if (p->enable_health_watch_) {
960
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
961
- gpr_log(GPR_INFO, "[PF %p] starting health watch", p);
962
- }
1878
+ GRPC_TRACE_LOG(pick_first, INFO)
1879
+ << "[PF " << p << "] starting health watch";
963
1880
  auto watcher = std::make_unique<HealthWatcher>(
964
- p->RefAsSubclass<PickFirst>(DEBUG_LOCATION, "HealthWatcher"));
1881
+ p->RefAsSubclass<OldPickFirst>(DEBUG_LOCATION, "HealthWatcher"));
965
1882
  p->health_watcher_ = watcher.get();
966
1883
  auto health_data_watcher = MakeHealthCheckWatcher(
967
1884
  p->work_serializer(), subchannel_list_->args_, std::move(watcher));
@@ -980,63 +1897,53 @@ void PickFirst::SubchannelList::SubchannelData::ProcessUnselectedReadyLocked() {
980
1897
  }
981
1898
 
982
1899
  //
983
- // PickFirst::SubchannelList
1900
+ // OldPickFirst::SubchannelList
984
1901
  //
985
1902
 
986
- PickFirst::SubchannelList::SubchannelList(RefCountedPtr<PickFirst> policy,
987
- EndpointAddressesIterator* addresses,
988
- const ChannelArgs& args)
1903
+ OldPickFirst::SubchannelList::SubchannelList(
1904
+ RefCountedPtr<OldPickFirst> policy, EndpointAddressesIterator* addresses,
1905
+ const ChannelArgs& args)
989
1906
  : InternallyRefCounted<SubchannelList>(
990
- GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace) ? "SubchannelList"
991
- : nullptr),
1907
+ GRPC_TRACE_FLAG_ENABLED(pick_first) ? "SubchannelList" : nullptr),
992
1908
  policy_(std::move(policy)),
993
1909
  args_(args.Remove(GRPC_ARG_INTERNAL_PICK_FIRST_ENABLE_HEALTH_CHECKING)
994
1910
  .Remove(
995
1911
  GRPC_ARG_INTERNAL_PICK_FIRST_OMIT_STATUS_MESSAGE_PREFIX)) {
996
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
997
- gpr_log(GPR_INFO, "[PF %p] Creating subchannel list %p - channel args: %s",
998
- policy_.get(), this, args_.ToString().c_str());
999
- }
1912
+ GRPC_TRACE_LOG(pick_first, INFO)
1913
+ << "[PF " << policy_.get() << "] Creating subchannel list " << this
1914
+ << " - channel args: " << args_.ToString();
1000
1915
  if (addresses == nullptr) return;
1001
1916
  // Create a subchannel for each address.
1002
1917
  addresses->ForEach([&](const EndpointAddresses& address) {
1003
- GPR_ASSERT(address.addresses().size() == 1);
1918
+ CHECK_EQ(address.addresses().size(), 1u);
1004
1919
  RefCountedPtr<SubchannelInterface> subchannel =
1005
1920
  policy_->channel_control_helper()->CreateSubchannel(
1006
1921
  address.address(), address.args(), args_);
1007
1922
  if (subchannel == nullptr) {
1008
1923
  // Subchannel could not be created.
1009
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1010
- gpr_log(GPR_INFO,
1011
- "[PF %p] could not create subchannel for address %s, ignoring",
1012
- policy_.get(), address.ToString().c_str());
1013
- }
1924
+ GRPC_TRACE_LOG(pick_first, INFO)
1925
+ << "[PF " << policy_.get()
1926
+ << "] could not create subchannel for address " << address.ToString()
1927
+ << ", ignoring";
1014
1928
  return;
1015
1929
  }
1016
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1017
- gpr_log(GPR_INFO,
1018
- "[PF %p] subchannel list %p index %" PRIuPTR
1019
- ": Created subchannel %p for address %s",
1020
- policy_.get(), this, subchannels_.size(), subchannel.get(),
1021
- address.ToString().c_str());
1022
- }
1930
+ GRPC_TRACE_LOG(pick_first, INFO)
1931
+ << "[PF " << policy_.get() << "] subchannel list " << this << " index "
1932
+ << subchannels_.size() << ": Created subchannel " << subchannel.get()
1933
+ << " for address " << address.ToString();
1023
1934
  subchannels_.emplace_back(this, subchannels_.size(), std::move(subchannel));
1024
1935
  });
1025
1936
  }
1026
1937
 
1027
- PickFirst::SubchannelList::~SubchannelList() {
1028
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1029
- gpr_log(GPR_INFO, "[PF %p] Destroying subchannel_list %p", policy_.get(),
1030
- this);
1031
- }
1938
+ OldPickFirst::SubchannelList::~SubchannelList() {
1939
+ GRPC_TRACE_LOG(pick_first, INFO)
1940
+ << "[PF " << policy_.get() << "] Destroying subchannel_list " << this;
1032
1941
  }
1033
1942
 
1034
- void PickFirst::SubchannelList::Orphan() {
1035
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1036
- gpr_log(GPR_INFO, "[PF %p] Shutting down subchannel_list %p", policy_.get(),
1037
- this);
1038
- }
1039
- GPR_ASSERT(!shutting_down_);
1943
+ void OldPickFirst::SubchannelList::Orphan() {
1944
+ GRPC_TRACE_LOG(pick_first, INFO)
1945
+ << "[PF " << policy_.get() << "] Shutting down subchannel_list " << this;
1946
+ CHECK(!shutting_down_);
1040
1947
  shutting_down_ = true;
1041
1948
  for (auto& sd : subchannels_) {
1042
1949
  sd.ShutdownLocked();
@@ -1047,19 +1954,19 @@ void PickFirst::SubchannelList::Orphan() {
1047
1954
  Unref();
1048
1955
  }
1049
1956
 
1050
- void PickFirst::SubchannelList::ResetBackoffLocked() {
1957
+ void OldPickFirst::SubchannelList::ResetBackoffLocked() {
1051
1958
  for (auto& sd : subchannels_) {
1052
1959
  sd.ResetBackoffLocked();
1053
1960
  }
1054
1961
  }
1055
1962
 
1056
- void PickFirst::SubchannelList::StartConnectingNextSubchannel() {
1963
+ void OldPickFirst::SubchannelList::StartConnectingNextSubchannel() {
1057
1964
  // Find the next subchannel not in state TRANSIENT_FAILURE.
1058
1965
  // We skip subchannels in state TRANSIENT_FAILURE to avoid a
1059
1966
  // large recursion that could overflow the stack.
1060
1967
  for (; attempting_index_ < size(); ++attempting_index_) {
1061
1968
  SubchannelData* sc = &subchannels_[attempting_index_];
1062
- GPR_ASSERT(sc->connectivity_state().has_value());
1969
+ CHECK(sc->connectivity_state().has_value());
1063
1970
  if (sc->connectivity_state() != GRPC_CHANNEL_TRANSIENT_FAILURE) {
1064
1971
  // Found a subchannel not in TRANSIENT_FAILURE, so trigger a
1065
1972
  // connection attempt.
@@ -1072,30 +1979,25 @@ void PickFirst::SubchannelList::StartConnectingNextSubchannel() {
1072
1979
  MaybeFinishHappyEyeballsPass();
1073
1980
  }
1074
1981
 
1075
- void PickFirst::SubchannelList::MaybeFinishHappyEyeballsPass() {
1982
+ void OldPickFirst::SubchannelList::MaybeFinishHappyEyeballsPass() {
1076
1983
  // Make sure all subchannels have finished a connection attempt before
1077
1984
  // we consider the Happy Eyeballs pass complete.
1078
1985
  if (!IsHappyEyeballsPassComplete()) return;
1079
1986
  // We didn't find another subchannel not in state TRANSIENT_FAILURE,
1080
1987
  // so report TRANSIENT_FAILURE and switch to a mode in which we try to
1081
1988
  // connect to all addresses in parallel.
1082
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1083
- gpr_log(GPR_INFO,
1084
- "Pick First %p subchannel list %p failed to connect to "
1085
- "all subchannels",
1086
- policy_.get(), this);
1087
- }
1989
+ GRPC_TRACE_LOG(pick_first, INFO)
1990
+ << "Pick First " << policy_.get() << " subchannel list " << this
1991
+ << " failed to connect to all subchannels";
1088
1992
  // In case 2, swap to the new subchannel list. This means reporting
1089
1993
  // TRANSIENT_FAILURE and dropping the existing (working) connection,
1090
1994
  // but we can't ignore what the control plane has told us.
1091
1995
  if (policy_->latest_pending_subchannel_list_.get() == this) {
1092
- if (GRPC_TRACE_FLAG_ENABLED(grpc_lb_pick_first_trace)) {
1093
- gpr_log(GPR_INFO,
1094
- "Pick First %p promoting pending subchannel list %p to "
1095
- "replace %p",
1096
- policy_.get(), policy_->latest_pending_subchannel_list_.get(),
1097
- this);
1098
- }
1996
+ GRPC_TRACE_LOG(pick_first, INFO)
1997
+ << "Pick First " << policy_.get()
1998
+ << " promoting pending subchannel list "
1999
+ << policy_->latest_pending_subchannel_list_.get() << " to replace "
2000
+ << this;
1099
2001
  policy_->UnsetSelectedSubchannel();
1100
2002
  policy_->subchannel_list_ =
1101
2003
  std::move(policy_->latest_pending_subchannel_list_);
@@ -1123,7 +2025,6 @@ void PickFirst::SubchannelList::MaybeFinishHappyEyeballsPass() {
1123
2025
  }
1124
2026
  }
1125
2027
  }
1126
-
1127
2028
  //
1128
2029
  // factory
1129
2030
  //
@@ -1132,6 +2033,9 @@ class PickFirstFactory final : public LoadBalancingPolicyFactory {
1132
2033
  public:
1133
2034
  OrphanablePtr<LoadBalancingPolicy> CreateLoadBalancingPolicy(
1134
2035
  LoadBalancingPolicy::Args args) const override {
2036
+ if (!IsPickFirstNewEnabled()) {
2037
+ return MakeOrphanable<OldPickFirst>(std::move(args));
2038
+ }
1135
2039
  return MakeOrphanable<PickFirst>(std::move(args));
1136
2040
  }
1137
2041