grpc 1.64.3 → 1.71.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 (3205) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +372 -376
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +2 -3
  5. data/include/grpc/event_engine/README.md +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +7 -7
  7. data/include/grpc/event_engine/event_engine.h +83 -20
  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 +1 -2
  16. data/include/grpc/grpc_audit_logging.h +3 -3
  17. data/include/grpc/grpc_crl_provider.h +5 -5
  18. data/include/grpc/grpc_posix.h +1 -2
  19. data/include/grpc/grpc_security.h +1 -2
  20. data/include/grpc/impl/call.h +2 -2
  21. data/include/grpc/impl/channel_arg_names.h +10 -4
  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 +1 -0
  25. data/include/grpc/passive_listener.h +62 -0
  26. data/include/grpc/status.h +1 -1
  27. data/include/grpc/support/alloc.h +1 -2
  28. data/include/grpc/support/atm.h +0 -13
  29. data/include/grpc/support/json.h +17 -18
  30. data/include/grpc/support/log.h +37 -64
  31. data/include/grpc/support/metrics.h +21 -6
  32. data/include/grpc/support/port_platform.h +31 -1
  33. data/include/grpc/support/sync_generic.h +2 -4
  34. data/include/grpc/support/sync_posix.h +1 -2
  35. data/include/grpc/support/time.h +1 -2
  36. data/src/core/call/request_buffer.cc +224 -0
  37. data/src/core/call/request_buffer.h +192 -0
  38. data/src/core/channelz/channel_trace.cc +6 -7
  39. data/src/core/channelz/channel_trace.h +6 -8
  40. data/src/core/channelz/channelz.cc +10 -12
  41. data/src/core/channelz/channelz.h +18 -39
  42. data/src/core/channelz/channelz_registry.cc +10 -18
  43. data/src/core/channelz/channelz_registry.h +4 -5
  44. data/src/core/client_channel/backup_poller.cc +25 -16
  45. data/src/core/client_channel/client_channel.cc +1415 -0
  46. data/src/core/client_channel/client_channel.h +245 -0
  47. data/src/core/client_channel/client_channel_args.h +21 -0
  48. data/src/core/client_channel/client_channel_factory.cc +2 -2
  49. data/src/core/client_channel/client_channel_factory.h +1 -2
  50. data/src/core/client_channel/client_channel_filter.cc +391 -981
  51. data/src/core/client_channel/client_channel_filter.h +32 -83
  52. data/src/core/client_channel/client_channel_internal.h +23 -9
  53. data/src/core/client_channel/client_channel_plugin.cc +4 -18
  54. data/src/core/client_channel/client_channel_service_config.cc +3 -4
  55. data/src/core/client_channel/client_channel_service_config.h +12 -14
  56. data/src/core/client_channel/config_selector.h +21 -22
  57. data/src/core/client_channel/connector.h +3 -3
  58. data/src/core/client_channel/direct_channel.cc +83 -0
  59. data/src/core/client_channel/direct_channel.h +101 -0
  60. data/src/core/client_channel/dynamic_filters.cc +16 -14
  61. data/src/core/client_channel/dynamic_filters.h +9 -10
  62. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  63. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  64. data/src/core/client_channel/lb_metadata.cc +119 -0
  65. data/src/core/client_channel/lb_metadata.h +55 -0
  66. data/src/core/client_channel/load_balanced_call_destination.cc +273 -0
  67. data/src/core/client_channel/load_balanced_call_destination.h +48 -0
  68. data/src/core/client_channel/local_subchannel_pool.cc +2 -5
  69. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  70. data/src/core/client_channel/retry_filter.cc +9 -18
  71. data/src/core/client_channel/retry_filter.h +7 -16
  72. data/src/core/client_channel/retry_filter_legacy_call_data.cc +219 -331
  73. data/src/core/client_channel/retry_filter_legacy_call_data.h +18 -21
  74. data/src/core/client_channel/retry_interceptor.cc +408 -0
  75. data/src/core/client_channel/retry_interceptor.h +157 -0
  76. data/src/core/client_channel/retry_service_config.cc +11 -14
  77. data/src/core/client_channel/retry_service_config.h +22 -11
  78. data/src/core/client_channel/retry_throttle.cc +34 -20
  79. data/src/core/client_channel/retry_throttle.h +6 -9
  80. data/src/core/client_channel/subchannel.cc +324 -239
  81. data/src/core/client_channel/subchannel.h +52 -44
  82. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  83. data/src/core/client_channel/subchannel_pool_interface.cc +1 -5
  84. data/src/core/client_channel/subchannel_pool_interface.h +4 -7
  85. data/src/core/client_channel/subchannel_stream_client.cc +43 -60
  86. data/src/core/client_channel/subchannel_stream_client.h +13 -17
  87. data/src/core/config/config_vars.cc +152 -0
  88. data/src/core/config/config_vars.h +129 -0
  89. data/src/core/config/config_vars_non_generated.cc +49 -0
  90. data/src/core/config/core_configuration.cc +111 -0
  91. data/src/core/config/core_configuration.h +242 -0
  92. data/src/core/config/load_config.cc +78 -0
  93. data/src/core/config/load_config.h +54 -0
  94. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +25 -37
  95. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +9 -7
  96. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  97. data/src/core/ext/filters/census/grpc_context.cc +7 -10
  98. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  99. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  100. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +37 -48
  101. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +12 -8
  102. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +23 -33
  103. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +9 -8
  104. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +3 -4
  105. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +7 -10
  106. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +198 -0
  107. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  108. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  109. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  110. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -13
  111. data/src/core/ext/filters/http/client/http_client_filter.h +6 -4
  112. data/src/core/ext/filters/http/client_authority_filter.cc +14 -18
  113. data/src/core/ext/filters/http/client_authority_filter.h +8 -6
  114. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  115. data/src/core/ext/filters/http/message_compress/compression_filter.cc +64 -64
  116. data/src/core/ext/filters/http/message_compress/compression_filter.h +24 -15
  117. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -20
  118. data/src/core/ext/filters/http/server/http_server_filter.h +6 -4
  119. data/src/core/ext/filters/message_size/message_size_filter.cc +43 -55
  120. data/src/core/ext/filters/message_size/message_size_filter.h +30 -29
  121. data/src/core/ext/filters/rbac/rbac_filter.cc +8 -18
  122. data/src/core/ext/filters/rbac/rbac_filter.h +8 -7
  123. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +19 -13
  124. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -5
  125. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +14 -21
  126. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +8 -7
  127. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +3 -4
  128. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +8 -10
  129. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -4
  130. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -2
  131. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +76 -109
  132. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -13
  133. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +999 -375
  134. data/src/core/ext/transport/chttp2/server/chttp2_server.h +222 -13
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +22 -34
  136. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -3
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -7
  138. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -2
  139. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  140. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  141. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +706 -555
  142. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +22 -23
  143. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +2 -3
  144. data/src/core/ext/transport/chttp2/transport/decode_huff.h +4 -4
  145. data/src/core/ext/transport/chttp2/transport/flow_control.cc +9 -14
  146. data/src/core/ext/transport/chttp2/transport/flow_control.h +5 -10
  147. data/src/core/ext/transport/chttp2/transport/frame.cc +24 -7
  148. data/src/core/ext/transport/chttp2/transport/frame.h +16 -7
  149. data/src/core/ext/transport/chttp2/transport/frame_data.cc +19 -20
  150. data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -5
  151. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +11 -14
  152. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -2
  153. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +14 -19
  154. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -2
  155. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -18
  156. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -5
  157. data/src/core/ext/transport/chttp2/transport/frame_security.cc +80 -0
  158. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  159. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +41 -25
  160. data/src/core/ext/transport/chttp2/transport/frame_settings.h +3 -4
  161. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +28 -7
  162. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -3
  163. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +2 -2
  164. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +19 -21
  165. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +19 -15
  166. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -3
  167. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +4 -5
  168. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -4
  169. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +6 -9
  170. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +55 -58
  171. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -13
  172. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +41 -16
  173. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +29 -10
  174. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +14 -6
  175. data/src/core/ext/transport/chttp2/transport/http2_settings.h +13 -7
  176. data/src/core/ext/transport/chttp2/transport/internal.h +86 -83
  177. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  178. data/src/core/ext/transport/chttp2/transport/parsing.cc +135 -121
  179. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +4 -4
  180. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +3 -3
  181. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +4 -7
  182. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +5 -9
  183. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +35 -20
  184. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +9 -10
  185. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +14 -16
  186. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  187. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -6
  188. data/src/core/ext/transport/chttp2/transport/varint.h +1 -3
  189. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -3
  190. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +3 -4
  191. data/src/core/ext/transport/chttp2/transport/writing.cc +149 -130
  192. data/src/core/ext/transport/inproc/inproc_transport.cc +151 -71
  193. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  194. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +133 -129
  195. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  196. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +46 -15
  197. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +40 -18
  198. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +59 -27
  200. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +36 -18
  201. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +50 -15
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +44 -22
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +190 -55
  206. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +162 -84
  207. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +11 -5
  209. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +14 -4
  210. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +19 -6
  212. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +18 -8
  213. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  214. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +11 -10
  215. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +7 -1
  216. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  217. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +8 -7
  218. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -1
  219. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  220. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +8 -7
  221. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -1
  222. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  223. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +145 -82
  224. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +40 -27
  225. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  226. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +9 -6
  227. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +10 -4
  228. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  229. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +9 -8
  230. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  231. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  232. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +18 -8
  233. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +13 -6
  234. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  235. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +91 -34
  236. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +114 -48
  237. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  238. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +544 -254
  239. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +265 -149
  240. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +29 -4
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +41 -14
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +31 -17
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +529 -141
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +270 -143
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +31 -4
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +12 -7
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +11 -5
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  250. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +171 -27
  251. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +54 -27
  252. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  253. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +127 -35
  254. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +125 -63
  255. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +67 -27
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +60 -26
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +11 -6
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +11 -5
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +871 -72
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +346 -75
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +41 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +67 -25
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +57 -27
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +8 -5
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +10 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +9 -6
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +10 -4
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +11 -5
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +14 -4
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +201 -62
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +120 -53
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +196 -62
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +95 -53
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +13 -5
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +11 -5
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +10 -7
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +10 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +322 -76
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +162 -84
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +10 -7
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +14 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +15 -7
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +15 -5
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +151 -0
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +60 -0
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +32 -0
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +244 -31
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +79 -21
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +13 -4
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +23 -11
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +17 -7
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +11 -6
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +11 -5
  309. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  310. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +42 -11
  311. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +35 -17
  312. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  313. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +106 -34
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +69 -37
  315. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +281 -37
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +81 -27
  318. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +12 -4
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +8 -5
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +10 -4
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +142 -47
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +90 -47
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +92 -129
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +66 -57
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +11 -5
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +178 -13
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +46 -14
  330. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  331. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +14 -7
  332. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -6
  333. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  334. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +14 -9
  335. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +11 -5
  336. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  337. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +51 -22
  338. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +58 -24
  339. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  340. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +70 -22
  341. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +71 -29
  342. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  343. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +311 -38
  344. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +141 -63
  345. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +18 -4
  346. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +61 -13
  347. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +33 -19
  348. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  349. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +961 -237
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +567 -273
  351. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +67 -4
  352. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -10
  353. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +22 -8
  354. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  355. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +100 -35
  356. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +95 -45
  357. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +118 -16
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +43 -12
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +8 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +9 -6
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +10 -4
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +12 -7
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +17 -7
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +10 -7
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +10 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +20 -8
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +13 -7
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +8 -5
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +10 -4
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +17 -10
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +18 -8
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -6
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -2
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -5
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +19 -10
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +19 -9
  384. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  385. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +14 -11
  386. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -4
  387. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  388. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +216 -102
  389. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +124 -57
  390. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  392. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +7 -1
  393. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +24 -11
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +33 -11
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +42 -22
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -13
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +56 -13
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +29 -13
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +29 -12
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +20 -10
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +13 -8
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +17 -7
  411. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -134
  413. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +209 -121
  414. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  415. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +8 -5
  416. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +10 -4
  417. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +83 -10
  419. 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 +28 -11
  420. 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
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +31 -14
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +39 -17
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +6 -5
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +7 -1
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +22 -11
  428. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +14 -8
  429. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  430. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +8 -5
  431. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +10 -4
  432. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +105 -0
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +51 -0
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +170 -31
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +83 -37
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +14 -4
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +25 -12
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +27 -13
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  445. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +214 -63
  446. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +100 -61
  447. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  448. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +51 -13
  449. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +23 -11
  450. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  451. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +58 -20
  452. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +44 -26
  453. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  454. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  455. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +7 -1
  456. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  457. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +373 -58
  458. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +144 -61
  459. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +21 -4
  460. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +18 -8
  461. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +18 -8
  462. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  463. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +67 -25
  464. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +47 -25
  465. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  466. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -7
  467. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +10 -4
  468. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  469. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +16 -6
  470. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +26 -8
  471. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -6
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +16 -7
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +10 -9
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +23 -1
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +16 -8
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +15 -5
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +13 -5
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +11 -5
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +9 -6
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +10 -4
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +8 -5
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +10 -4
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +16 -9
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +24 -10
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +11 -1
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  499. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +51 -10
  500. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +30 -9
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +14 -6
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +15 -5
  504. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  505. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +30 -12
  506. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +32 -14
  507. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  508. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +24 -10
  509. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +40 -10
  510. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  511. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +30 -17
  512. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +33 -11
  513. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +12 -7
  515. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +19 -5
  516. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  518. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  519. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +6 -5
  521. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +7 -1
  522. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  523. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +8 -7
  524. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +11 -1
  525. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  526. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +11 -10
  527. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -1
  528. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +14 -9
  530. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +15 -5
  531. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  532. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  533. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  534. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  535. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +8 -7
  536. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -1
  537. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  538. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +12 -7
  539. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +11 -5
  540. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  541. data/src/core/ext/upb-gen/google/api/annotations.upb.h +17 -7
  542. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  543. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  544. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +135 -36
  545. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +121 -56
  546. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  547. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +525 -69
  548. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +202 -68
  549. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  550. data/src/core/ext/upb-gen/google/api/http.upb.h +30 -16
  551. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -8
  552. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  553. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +12 -6
  554. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +10 -4
  555. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  556. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +8 -6
  557. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +7 -1
  558. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  559. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +583 -181
  560. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +376 -215
  561. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +56 -21
  562. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +8 -6
  563. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +7 -1
  564. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  565. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  566. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +7 -1
  567. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  568. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +33 -10
  569. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +32 -14
  570. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  571. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +8 -6
  572. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +7 -1
  573. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  574. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +15 -13
  575. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +39 -1
  576. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  577. data/src/core/ext/upb-gen/google/rpc/status.upb.h +12 -6
  578. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +10 -4
  579. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +19 -10
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +15 -5
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +98 -39
  584. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +87 -37
  585. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  586. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +14 -8
  587. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +15 -5
  588. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  589. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +8 -6
  590. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +11 -1
  591. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  592. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +47 -22
  593. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +58 -20
  594. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  595. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +16 -8
  596. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +18 -4
  597. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  598. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +72 -19
  599. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +60 -22
  600. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  601. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +69 -23
  602. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +31 -12
  603. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  604. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +19 -9
  605. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +13 -6
  606. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  607. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +6 -5
  608. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  609. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  610. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +19 -9
  611. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +13 -6
  612. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  613. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +18 -8
  614. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +13 -6
  615. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  616. data/src/core/ext/upb-gen/validate/validate.upb.h +264 -172
  617. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +185 -87
  618. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  619. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +69 -23
  620. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +31 -12
  621. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  622. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +19 -9
  623. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +13 -6
  624. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  625. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +6 -5
  626. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  627. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  628. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +46 -18
  629. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +32 -11
  630. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  631. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +18 -8
  632. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +13 -6
  633. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +6 -5
  635. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +7 -1
  636. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +9 -6
  638. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +10 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +16 -9
  641. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +18 -8
  642. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  643. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  644. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +14 -4
  645. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  646. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +9 -6
  647. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +10 -4
  648. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  649. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +12 -7
  650. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +11 -5
  651. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  652. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +21 -11
  653. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +18 -8
  654. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  655. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +11 -8
  656. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +10 -4
  657. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  658. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +29 -10
  659. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +24 -6
  660. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  661. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +8 -5
  662. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +10 -4
  663. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +9 -6
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +10 -4
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +13 -5
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +17 -7
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +7 -1
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +19 -6
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +18 -8
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +81 -22
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +85 -43
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +44 -7
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +48 -22
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  682. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +9 -6
  683. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +14 -4
  684. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  685. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +18 -10
  686. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +17 -7
  687. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  688. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +17 -8
  689. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +19 -9
  690. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  691. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +12 -10
  692. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -1
  693. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  694. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +9 -6
  695. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +10 -4
  696. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +13 -11
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +90 -82
  716. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  718. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  720. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  721. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +63 -61
  724. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +223 -211
  726. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +10 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +419 -393
  730. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +10 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +116 -106
  734. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  736. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +201 -147
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +35 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +12 -12
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +175 -165
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +199 -188
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +272 -255
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +46 -0
  766. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +33 -0
  767. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +31 -20
  768. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +20 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  770. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  774. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +41 -37
  776. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +124 -94
  778. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +10 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  781. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +43 -40
  782. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +60 -66
  784. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -9
  785. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +75 -56
  786. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  788. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  792. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +51 -49
  794. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +119 -97
  796. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +10 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  798. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +922 -895
  800. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +15 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +32 -21
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +10 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +20 -18
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +17 -19
  820. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +23 -21
  824. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +147 -143
  826. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +38 -34
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +465 -459
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +50 -0
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +96 -88
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +10 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +204 -192
  854. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +21 -18
  856. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +150 -136
  862. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +10 -4
  863. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +25 -23
  866. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +41 -0
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +33 -0
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +28 -20
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +41 -34
  890. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  912. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  914. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  915. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  916. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  920. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  922. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  923. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +485 -458
  930. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  999. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  1000. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  1001. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  1002. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  1003. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  1004. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  1005. data/src/core/filter/blackboard.cc +33 -0
  1006. data/src/core/filter/blackboard.h +70 -0
  1007. data/src/core/filter/filter_args.h +112 -0
  1008. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.cc +13 -12
  1009. data/src/core/handshaker/endpoint_info/endpoint_info_handshaker.h +1 -1
  1010. data/src/core/handshaker/handshaker.cc +124 -159
  1011. data/src/core/handshaker/handshaker.h +58 -52
  1012. data/src/core/handshaker/handshaker_registry.cc +1 -2
  1013. data/src/core/handshaker/handshaker_registry.h +2 -2
  1014. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +120 -162
  1015. data/src/core/handshaker/http_connect/http_connect_handshaker.h +1 -1
  1016. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +61 -69
  1017. data/src/core/handshaker/http_connect/http_proxy_mapper.h +7 -8
  1018. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1019. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1020. data/src/core/handshaker/proxy_mapper.h +6 -7
  1021. data/src/core/handshaker/proxy_mapper_registry.cc +7 -8
  1022. data/src/core/handshaker/proxy_mapper_registry.h +6 -7
  1023. data/src/core/handshaker/security/secure_endpoint.cc +97 -84
  1024. data/src/core/handshaker/security/secure_endpoint.h +6 -7
  1025. data/src/core/handshaker/security/security_handshaker.cc +168 -224
  1026. data/src/core/handshaker/security/security_handshaker.h +3 -4
  1027. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +54 -66
  1028. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.h +1 -1
  1029. data/src/core/lib/address_utils/parse_address.cc +30 -43
  1030. data/src/core/lib/address_utils/parse_address.h +2 -4
  1031. data/src/core/lib/address_utils/sockaddr_utils.cc +9 -12
  1032. data/src/core/lib/address_utils/sockaddr_utils.h +1 -3
  1033. data/src/core/lib/channel/call_finalization.h +2 -2
  1034. data/src/core/lib/channel/channel_args.cc +30 -36
  1035. data/src/core/lib/channel/channel_args.h +43 -29
  1036. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1037. data/src/core/lib/channel/channel_args_preconditioning.h +4 -4
  1038. data/src/core/lib/channel/channel_stack.cc +13 -76
  1039. data/src/core/lib/channel/channel_stack.h +26 -61
  1040. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1041. data/src/core/lib/channel/channel_stack_builder.h +3 -9
  1042. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -150
  1043. data/src/core/lib/channel/channel_stack_builder_impl.h +14 -4
  1044. data/src/core/lib/channel/connected_channel.cc +48 -690
  1045. data/src/core/lib/channel/promise_based_filter.cc +190 -260
  1046. data/src/core/lib/channel/promise_based_filter.h +214 -625
  1047. data/src/core/lib/channel/status_util.cc +2 -4
  1048. data/src/core/lib/channel/status_util.h +3 -3
  1049. data/src/core/lib/compression/compression.cc +9 -10
  1050. data/src/core/lib/compression/compression_internal.cc +14 -17
  1051. data/src/core/lib/compression/compression_internal.h +6 -8
  1052. data/src/core/lib/compression/message_compress.cc +9 -12
  1053. data/src/core/lib/debug/trace.cc +48 -66
  1054. data/src/core/lib/debug/trace.h +2 -97
  1055. data/src/core/lib/debug/trace_flags.cc +245 -0
  1056. data/src/core/lib/debug/trace_flags.h +132 -0
  1057. data/src/core/lib/debug/trace_impl.h +125 -0
  1058. data/src/core/lib/event_engine/ares_resolver.cc +158 -86
  1059. data/src/core/lib/event_engine/ares_resolver.h +19 -30
  1060. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +15 -20
  1061. data/src/core/lib/event_engine/cf_engine/cf_engine.h +3 -5
  1062. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +50 -38
  1063. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +6 -10
  1064. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +3 -5
  1065. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +27 -35
  1066. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +5 -9
  1067. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +7 -10
  1068. data/src/core/lib/event_engine/channel_args_endpoint_config.h +7 -9
  1069. data/src/core/lib/event_engine/common_closures.h +5 -7
  1070. data/src/core/lib/event_engine/default_event_engine.cc +69 -42
  1071. data/src/core/lib/event_engine/default_event_engine.h +27 -36
  1072. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -14
  1073. data/src/core/lib/event_engine/default_event_engine_factory.h +4 -6
  1074. data/src/core/lib/event_engine/event_engine.cc +37 -8
  1075. data/src/core/lib/event_engine/event_engine_context.h +4 -2
  1076. data/src/core/lib/event_engine/extensions/can_track_errors.h +4 -6
  1077. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +3 -6
  1078. data/src/core/lib/event_engine/extensions/supports_fd.h +29 -7
  1079. data/src/core/lib/event_engine/extensions/tcp_trace.h +40 -0
  1080. data/src/core/lib/event_engine/forkable.cc +9 -13
  1081. data/src/core/lib/event_engine/forkable.h +4 -18
  1082. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -8
  1083. data/src/core/lib/event_engine/handle_containers.h +4 -7
  1084. data/src/core/lib/event_engine/memory_allocator_factory.h +5 -8
  1085. data/src/core/lib/event_engine/nameser.h +1 -1
  1086. data/src/core/lib/event_engine/poller.h +4 -6
  1087. data/src/core/lib/event_engine/posix.h +2 -4
  1088. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +25 -73
  1089. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +10 -13
  1090. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +21 -72
  1091. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +6 -9
  1092. data/src/core/lib/event_engine/posix_engine/event_poller.h +5 -8
  1093. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +6 -9
  1094. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +4 -6
  1095. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +6 -10
  1096. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -8
  1097. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +3 -6
  1098. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -11
  1099. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +4 -7
  1100. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +5 -8
  1101. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +4 -7
  1102. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +93 -89
  1103. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +13 -16
  1104. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +84 -62
  1105. data/src/core/lib/event_engine/posix_engine/posix_engine.h +20 -20
  1106. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +5 -7
  1107. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +27 -33
  1108. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +16 -17
  1109. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +24 -32
  1110. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +3 -6
  1111. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +49 -44
  1112. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +12 -14
  1113. data/src/core/lib/event_engine/posix_engine/timer.cc +9 -11
  1114. data/src/core/lib/event_engine/posix_engine/timer.h +9 -13
  1115. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +4 -7
  1116. data/src/core/lib/event_engine/posix_engine/timer_heap.h +4 -6
  1117. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -28
  1118. data/src/core/lib/event_engine/posix_engine/timer_manager.h +9 -13
  1119. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +11 -17
  1120. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +27 -30
  1121. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +7 -10
  1122. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +4 -7
  1123. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -9
  1124. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +4 -7
  1125. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +4 -6
  1126. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -7
  1127. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +4 -6
  1128. data/src/core/lib/event_engine/query_extensions.h +4 -6
  1129. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +5 -9
  1130. data/src/core/lib/event_engine/resolved_address.cc +7 -9
  1131. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  1132. data/src/core/lib/event_engine/shim.cc +3 -5
  1133. data/src/core/lib/event_engine/shim.h +2 -4
  1134. data/src/core/lib/event_engine/slice.cc +5 -10
  1135. data/src/core/lib/event_engine/slice_buffer.cc +3 -6
  1136. data/src/core/lib/event_engine/tcp_socket_utils.cc +15 -26
  1137. data/src/core/lib/event_engine/tcp_socket_utils.h +8 -10
  1138. data/src/core/lib/event_engine/thread_local.cc +2 -4
  1139. data/src/core/lib/event_engine/thread_local.h +3 -5
  1140. data/src/core/lib/event_engine/thread_pool/thread_count.cc +7 -11
  1141. data/src/core/lib/event_engine/thread_pool/thread_count.h +10 -25
  1142. data/src/core/lib/event_engine/thread_pool/thread_pool.h +4 -8
  1143. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +4 -7
  1144. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +43 -52
  1145. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +12 -19
  1146. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +52 -27
  1147. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +11 -12
  1148. data/src/core/lib/event_engine/time_util.cc +4 -6
  1149. data/src/core/lib/event_engine/time_util.h +3 -6
  1150. data/src/core/lib/event_engine/utils.cc +21 -9
  1151. data/src/core/lib/event_engine/utils.h +12 -8
  1152. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +128 -105
  1153. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +6 -10
  1154. data/src/core/lib/event_engine/windows/iocp.cc +16 -18
  1155. data/src/core/lib/event_engine/windows/iocp.h +4 -7
  1156. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +6 -10
  1157. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  1158. data/src/core/lib/event_engine/windows/win_socket.cc +44 -37
  1159. data/src/core/lib/event_engine/windows/win_socket.h +10 -14
  1160. data/src/core/lib/event_engine/windows/windows_endpoint.cc +48 -37
  1161. data/src/core/lib/event_engine/windows/windows_endpoint.h +4 -6
  1162. data/src/core/lib/event_engine/windows/windows_engine.cc +245 -138
  1163. data/src/core/lib/event_engine/windows/windows_engine.h +145 -37
  1164. data/src/core/lib/event_engine/windows/windows_listener.cc +24 -41
  1165. data/src/core/lib/event_engine/windows/windows_listener.h +6 -9
  1166. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +5 -7
  1167. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +5 -9
  1168. data/src/core/lib/event_engine/work_queue/work_queue.h +4 -7
  1169. data/src/core/lib/experiments/config.cc +55 -28
  1170. data/src/core/lib/experiments/config.h +56 -3
  1171. data/src/core/lib/experiments/experiments.cc +308 -366
  1172. data/src/core/lib/experiments/experiments.h +144 -155
  1173. data/src/core/lib/iomgr/buffer_list.cc +6 -6
  1174. data/src/core/lib/iomgr/buffer_list.h +23 -23
  1175. data/src/core/lib/iomgr/call_combiner.cc +39 -66
  1176. data/src/core/lib/iomgr/call_combiner.h +13 -17
  1177. data/src/core/lib/iomgr/cfstream_handle.cc +14 -22
  1178. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1179. data/src/core/lib/iomgr/closure.cc +2 -2
  1180. data/src/core/lib/iomgr/closure.h +13 -21
  1181. data/src/core/lib/iomgr/combiner.cc +33 -49
  1182. data/src/core/lib/iomgr/combiner.h +2 -5
  1183. data/src/core/lib/iomgr/endpoint.cc +0 -6
  1184. data/src/core/lib/iomgr/endpoint.h +3 -4
  1185. data/src/core/lib/iomgr/endpoint_cfstream.cc +40 -73
  1186. data/src/core/lib/iomgr/endpoint_pair_posix.cc +3 -6
  1187. data/src/core/lib/iomgr/endpoint_pair_windows.cc +6 -8
  1188. data/src/core/lib/iomgr/error.cc +24 -34
  1189. data/src/core/lib/iomgr/error.h +7 -10
  1190. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1191. data/src/core/lib/iomgr/ev_apple.cc +16 -24
  1192. data/src/core/lib/iomgr/ev_epoll1_linux.cc +69 -115
  1193. data/src/core/lib/iomgr/ev_poll_posix.cc +53 -53
  1194. data/src/core/lib/iomgr/ev_posix.cc +67 -58
  1195. data/src/core/lib/iomgr/ev_posix.h +9 -12
  1196. data/src/core/lib/iomgr/event_engine_shims/closure.cc +10 -14
  1197. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -2
  1198. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +34 -54
  1199. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +2 -2
  1200. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +9 -14
  1201. data/src/core/lib/iomgr/exec_ctx.cc +11 -21
  1202. data/src/core/lib/iomgr/exec_ctx.h +23 -146
  1203. data/src/core/lib/iomgr/executor.cc +55 -64
  1204. data/src/core/lib/iomgr/executor.h +2 -2
  1205. data/src/core/lib/iomgr/fork_posix.cc +11 -15
  1206. data/src/core/lib/iomgr/fork_windows.cc +3 -2
  1207. data/src/core/lib/iomgr/internal_errqueue.cc +4 -4
  1208. data/src/core/lib/iomgr/iocp_windows.cc +8 -10
  1209. data/src/core/lib/iomgr/iomgr.cc +18 -24
  1210. data/src/core/lib/iomgr/iomgr.h +1 -2
  1211. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1212. data/src/core/lib/iomgr/iomgr_internal.h +1 -2
  1213. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1214. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1215. data/src/core/lib/iomgr/lockfree_event.cc +10 -20
  1216. data/src/core/lib/iomgr/nameser.h +1 -1
  1217. data/src/core/lib/iomgr/polling_entity.cc +13 -7
  1218. data/src/core/lib/iomgr/pollset.h +0 -2
  1219. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -2
  1220. data/src/core/lib/iomgr/pollset_windows.cc +2 -6
  1221. data/src/core/lib/iomgr/port.h +2 -2
  1222. data/src/core/lib/iomgr/resolve_address.cc +3 -5
  1223. data/src/core/lib/iomgr/resolve_address.h +4 -6
  1224. data/src/core/lib/iomgr/resolve_address_impl.h +1 -2
  1225. data/src/core/lib/iomgr/resolve_address_posix.cc +12 -23
  1226. data/src/core/lib/iomgr/resolve_address_posix.h +2 -2
  1227. data/src/core/lib/iomgr/resolve_address_windows.cc +9 -14
  1228. data/src/core/lib/iomgr/resolve_address_windows.h +2 -2
  1229. data/src/core/lib/iomgr/resolved_address.h +1 -2
  1230. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +3 -6
  1231. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  1232. data/src/core/lib/iomgr/socket_mutator.cc +2 -3
  1233. data/src/core/lib/iomgr/socket_mutator.h +1 -2
  1234. data/src/core/lib/iomgr/socket_utils.h +1 -2
  1235. data/src/core/lib/iomgr/socket_utils_common_posix.cc +43 -52
  1236. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1237. data/src/core/lib/iomgr/socket_utils_posix.cc +6 -8
  1238. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1239. data/src/core/lib/iomgr/socket_windows.cc +7 -11
  1240. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1241. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -20
  1242. data/src/core/lib/iomgr/tcp_client_posix.cc +19 -32
  1243. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -13
  1244. data/src/core/lib/iomgr/tcp_posix.cc +89 -158
  1245. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  1246. data/src/core/lib/iomgr/tcp_server.h +2 -2
  1247. data/src/core/lib/iomgr/tcp_server_posix.cc +41 -61
  1248. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -3
  1249. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -11
  1250. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +11 -13
  1251. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -29
  1252. data/src/core/lib/iomgr/tcp_windows.cc +32 -62
  1253. data/src/core/lib/iomgr/timer.h +2 -2
  1254. data/src/core/lib/iomgr/timer_generic.cc +72 -105
  1255. data/src/core/lib/iomgr/timer_heap.cc +3 -4
  1256. data/src/core/lib/iomgr/timer_manager.cc +26 -52
  1257. data/src/core/lib/iomgr/timer_manager.h +1 -2
  1258. data/src/core/lib/iomgr/unix_sockets_posix.cc +4 -6
  1259. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -4
  1260. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +0 -4
  1261. data/src/core/lib/iomgr/vsock.cc +3 -6
  1262. data/src/core/lib/iomgr/vsock.h +3 -4
  1263. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1264. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1265. data/src/core/lib/promise/activity.cc +4 -4
  1266. data/src/core/lib/promise/activity.h +81 -29
  1267. data/src/core/lib/promise/all_ok.h +54 -11
  1268. data/src/core/lib/promise/arena_promise.h +2 -4
  1269. data/src/core/lib/promise/cancel_callback.h +34 -6
  1270. data/src/core/lib/promise/context.h +19 -10
  1271. data/src/core/lib/promise/detail/basic_seq.h +33 -20
  1272. data/src/core/lib/promise/detail/join_state.h +556 -814
  1273. data/src/core/lib/promise/detail/promise_factory.h +124 -48
  1274. data/src/core/lib/promise/detail/promise_like.h +50 -21
  1275. data/src/core/lib/promise/detail/seq_state.h +1378 -2254
  1276. data/src/core/lib/promise/detail/status.h +36 -15
  1277. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +2 -3
  1278. data/src/core/lib/promise/for_each.h +46 -40
  1279. data/src/core/lib/promise/if.h +69 -37
  1280. data/src/core/lib/promise/interceptor_list.h +30 -44
  1281. data/src/core/lib/promise/latch.h +33 -40
  1282. data/src/core/lib/promise/loop.h +82 -29
  1283. data/src/core/lib/promise/map.h +186 -22
  1284. data/src/core/lib/promise/observable.h +181 -0
  1285. data/src/core/lib/promise/party.cc +326 -149
  1286. data/src/core/lib/promise/party.h +390 -395
  1287. data/src/core/lib/promise/pipe.h +33 -56
  1288. data/src/core/lib/promise/poll.h +120 -40
  1289. data/src/core/lib/promise/prioritized_race.h +17 -23
  1290. data/src/core/lib/promise/promise.h +15 -10
  1291. data/src/core/lib/promise/race.h +14 -17
  1292. data/src/core/lib/promise/seq.h +99 -71
  1293. data/src/core/lib/promise/sleep.cc +6 -6
  1294. data/src/core/lib/promise/sleep.h +19 -6
  1295. data/src/core/lib/promise/status_flag.h +173 -51
  1296. data/src/core/lib/promise/try_join.h +156 -26
  1297. data/src/core/lib/promise/try_seq.h +151 -89
  1298. data/src/core/lib/resource_quota/api.cc +4 -6
  1299. data/src/core/lib/resource_quota/api.h +2 -3
  1300. data/src/core/lib/resource_quota/arena.cc +64 -86
  1301. data/src/core/lib/resource_quota/arena.h +225 -210
  1302. data/src/core/lib/resource_quota/connection_quota.cc +2 -3
  1303. data/src/core/lib/resource_quota/connection_quota.h +9 -6
  1304. data/src/core/lib/resource_quota/memory_quota.cc +93 -90
  1305. data/src/core/lib/resource_quota/memory_quota.h +29 -23
  1306. data/src/core/lib/resource_quota/periodic_update.cc +5 -5
  1307. data/src/core/lib/resource_quota/periodic_update.h +2 -4
  1308. data/src/core/lib/resource_quota/resource_quota.h +8 -9
  1309. data/src/core/lib/resource_quota/thread_quota.cc +2 -3
  1310. data/src/core/lib/resource_quota/thread_quota.h +5 -6
  1311. data/src/core/lib/security/authorization/audit_logging.cc +5 -7
  1312. data/src/core/lib/security/authorization/audit_logging.h +5 -6
  1313. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1314. data/src/core/lib/security/authorization/authorization_policy_provider.h +4 -5
  1315. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +2 -2
  1316. data/src/core/lib/security/authorization/evaluate_args.cc +13 -17
  1317. data/src/core/lib/security/authorization/evaluate_args.h +6 -7
  1318. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -4
  1319. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -3
  1320. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +21 -36
  1321. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +10 -8
  1322. data/src/core/lib/security/authorization/matchers.cc +5 -7
  1323. data/src/core/lib/security/authorization/matchers.h +5 -7
  1324. data/src/core/lib/security/authorization/rbac_policy.cc +3 -3
  1325. data/src/core/lib/security/authorization/rbac_policy.h +6 -8
  1326. data/src/core/lib/security/authorization/stdout_logger.cc +4 -5
  1327. data/src/core/lib/security/authorization/stdout_logger.h +4 -4
  1328. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -9
  1329. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +4 -5
  1330. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +2 -3
  1331. data/src/core/lib/security/context/security_context.cc +48 -48
  1332. data/src/core/lib/security/context/security_context.h +47 -18
  1333. data/src/core/lib/security/credentials/alts/alts_credentials.cc +5 -5
  1334. data/src/core/lib/security/credentials/alts/alts_credentials.h +9 -5
  1335. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -4
  1336. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1337. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +3 -5
  1338. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1339. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +4 -5
  1340. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  1341. data/src/core/lib/security/credentials/call_creds_util.cc +8 -7
  1342. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1343. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -8
  1344. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +15 -14
  1345. data/src/core/lib/security/credentials/composite/composite_credentials.cc +10 -14
  1346. data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -10
  1347. data/src/core/lib/security/credentials/credentials.cc +18 -19
  1348. data/src/core/lib/security/credentials/credentials.h +12 -14
  1349. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +335 -340
  1350. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +60 -48
  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 +3 -3
  1353. data/src/core/lib/security/credentials/external/external_account_credentials.cc +407 -374
  1354. data/src/core/lib/security/credentials/external/external_account_credentials.h +128 -60
  1355. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +89 -52
  1356. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +32 -11
  1357. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +102 -129
  1358. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +22 -24
  1359. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1360. data/src/core/lib/security/credentials/fake/fake_credentials.h +9 -8
  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 +7 -8
  1364. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +58 -76
  1365. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +8 -6
  1366. data/src/core/lib/security/credentials/iam/iam_credentials.cc +6 -11
  1367. data/src/core/lib/security/credentials/iam/iam_credentials.h +9 -8
  1368. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1369. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +2 -2
  1370. data/src/core/lib/security/credentials/jwt/json_token.cc +25 -29
  1371. data/src/core/lib/security/credentials/jwt/json_token.h +2 -3
  1372. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +23 -31
  1373. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -12
  1374. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +68 -76
  1375. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -4
  1376. data/src/core/lib/security/credentials/local/local_credentials.cc +2 -2
  1377. data/src/core/lib/security/credentials/local/local_credentials.h +3 -3
  1378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +196 -297
  1379. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +51 -74
  1380. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +20 -34
  1381. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +12 -14
  1382. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +37 -49
  1383. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +5 -8
  1384. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +15 -17
  1385. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +18 -19
  1386. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +1 -3
  1387. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +122 -54
  1388. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +17 -16
  1389. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +6 -10
  1390. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -11
  1391. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +10 -13
  1392. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +1 -1
  1393. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +6 -11
  1394. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +9 -12
  1395. data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -24
  1396. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -3
  1397. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -6
  1398. data/src/core/lib/security/credentials/tls/tls_utils.h +3 -3
  1399. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +304 -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 +16 -13
  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 +23 -28
  1404. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +1 -1
  1405. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +27 -27
  1406. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  1407. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +4 -7
  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_supported.cc +10 -12
  1410. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +4 -6
  1411. data/src/core/lib/security/security_connector/local/local_security_connector.cc +26 -26
  1412. data/src/core/lib/security/security_connector/local/local_security_connector.h +1 -1
  1413. data/src/core/lib/security/security_connector/security_connector.cc +6 -11
  1414. data/src/core/lib/security/security_connector/security_connector.h +8 -11
  1415. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +23 -27
  1416. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +2 -3
  1417. data/src/core/lib/security/security_connector/ssl_utils.cc +34 -35
  1418. data/src/core/lib/security/security_connector/ssl_utils.h +7 -9
  1419. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +46 -59
  1420. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +20 -21
  1421. data/src/core/lib/security/transport/auth_filters.h +101 -9
  1422. data/src/core/lib/security/transport/client_auth_filter.cc +113 -32
  1423. data/src/core/lib/security/transport/server_auth_filter.cc +19 -38
  1424. data/src/core/lib/security/util/json_util.cc +4 -5
  1425. data/src/core/lib/security/util/json_util.h +1 -1
  1426. data/src/core/lib/slice/percent_encoding.cc +2 -5
  1427. data/src/core/lib/slice/slice.cc +4 -7
  1428. data/src/core/lib/slice/slice.h +6 -9
  1429. data/src/core/lib/slice/slice_buffer.cc +7 -9
  1430. data/src/core/lib/slice/slice_buffer.h +5 -6
  1431. data/src/core/lib/slice/slice_internal.h +3 -6
  1432. data/src/core/lib/slice/slice_refcount.h +8 -15
  1433. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  1434. data/src/core/lib/slice/slice_string_helpers.h +1 -2
  1435. data/src/core/lib/surface/byte_buffer.cc +1 -2
  1436. data/src/core/lib/surface/byte_buffer_reader.cc +3 -6
  1437. data/src/core/lib/surface/call.cc +158 -3826
  1438. data/src/core/lib/surface/call.h +67 -160
  1439. data/src/core/lib/surface/call_details.cc +4 -3
  1440. data/src/core/lib/surface/call_log_batch.cc +8 -11
  1441. data/src/core/lib/surface/call_test_only.h +1 -2
  1442. data/src/core/lib/surface/call_utils.cc +231 -0
  1443. data/src/core/lib/surface/call_utils.h +492 -0
  1444. data/src/core/lib/surface/channel.cc +47 -54
  1445. data/src/core/lib/surface/channel.h +24 -22
  1446. data/src/core/lib/surface/channel_create.cc +28 -13
  1447. data/src/core/lib/surface/channel_create.h +5 -5
  1448. data/src/core/lib/surface/channel_init.cc +270 -267
  1449. data/src/core/lib/surface/channel_init.h +173 -119
  1450. data/src/core/lib/surface/client_call.cc +456 -0
  1451. data/src/core/lib/surface/client_call.h +192 -0
  1452. data/src/core/lib/surface/completion_queue.cc +103 -138
  1453. data/src/core/lib/surface/completion_queue.h +4 -13
  1454. data/src/core/lib/surface/completion_queue_factory.cc +1 -3
  1455. data/src/core/lib/surface/connection_context.cc +77 -0
  1456. data/src/core/lib/surface/connection_context.h +156 -0
  1457. data/src/core/lib/surface/event_string.cc +9 -3
  1458. data/src/core/lib/surface/event_string.h +2 -2
  1459. data/src/core/lib/surface/filter_stack_call.cc +1154 -0
  1460. data/src/core/lib/surface/filter_stack_call.h +366 -0
  1461. data/src/core/lib/surface/init.cc +73 -28
  1462. data/src/core/lib/surface/init.h +5 -0
  1463. data/src/core/lib/surface/init_internally.h +13 -2
  1464. data/src/core/lib/surface/lame_client.cc +12 -15
  1465. data/src/core/lib/surface/lame_client.h +6 -5
  1466. data/src/core/lib/surface/legacy_channel.cc +67 -51
  1467. data/src/core/lib/surface/legacy_channel.h +16 -26
  1468. data/src/core/lib/surface/metadata_array.cc +5 -5
  1469. data/src/core/lib/surface/server_call.cc +259 -0
  1470. data/src/core/lib/surface/server_call.h +169 -0
  1471. data/src/core/lib/surface/validate_metadata.cc +3 -4
  1472. data/src/core/lib/surface/validate_metadata.h +2 -5
  1473. data/src/core/lib/surface/version.cc +2 -2
  1474. data/src/core/lib/transport/bdp_estimator.cc +12 -20
  1475. data/src/core/lib/transport/bdp_estimator.h +10 -16
  1476. data/src/core/lib/transport/call_arena_allocator.cc +4 -18
  1477. data/src/core/lib/transport/call_arena_allocator.h +30 -12
  1478. data/src/core/lib/transport/call_destination.h +76 -0
  1479. data/src/core/lib/transport/call_filters.cc +67 -405
  1480. data/src/core/lib/transport/call_filters.h +877 -778
  1481. data/src/core/lib/transport/call_final_info.cc +2 -2
  1482. data/src/core/lib/transport/call_final_info.h +3 -3
  1483. data/src/core/lib/transport/call_spine.cc +58 -74
  1484. data/src/core/lib/transport/call_spine.h +331 -361
  1485. data/src/core/lib/transport/call_state.cc +39 -0
  1486. data/src/core/lib/transport/call_state.h +1154 -0
  1487. data/src/core/lib/transport/connectivity_state.cc +43 -52
  1488. data/src/core/lib/transport/connectivity_state.h +7 -12
  1489. data/src/core/lib/transport/error_utils.cc +3 -4
  1490. data/src/core/lib/transport/error_utils.h +4 -5
  1491. data/src/core/lib/transport/http2_errors.h +5 -3
  1492. data/src/core/lib/transport/interception_chain.cc +155 -0
  1493. data/src/core/lib/transport/interception_chain.h +282 -0
  1494. data/src/core/lib/transport/message.cc +2 -2
  1495. data/src/core/lib/transport/message.h +5 -0
  1496. data/src/core/lib/transport/metadata.cc +27 -3
  1497. data/src/core/lib/transport/metadata.h +125 -2
  1498. data/src/core/lib/transport/metadata_batch.cc +14 -7
  1499. data/src/core/lib/transport/metadata_batch.h +152 -31
  1500. data/src/core/lib/transport/metadata_compression_traits.h +3 -4
  1501. data/src/core/lib/transport/metadata_info.h +1 -1
  1502. data/src/core/lib/transport/parsed_metadata.h +3 -5
  1503. data/src/core/lib/transport/simple_slice_based_metadata.h +1 -2
  1504. data/src/core/lib/transport/status_conversion.h +1 -1
  1505. data/src/core/lib/transport/timeout_encoding.cc +22 -23
  1506. data/src/core/lib/transport/timeout_encoding.h +4 -5
  1507. data/src/core/lib/transport/transport.cc +7 -13
  1508. data/src/core/lib/transport/transport.h +71 -63
  1509. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1510. data/src/core/lib/transport/transport_op_string.cc +4 -6
  1511. data/src/core/load_balancing/address_filtering.cc +2 -4
  1512. data/src/core/load_balancing/address_filtering.h +4 -5
  1513. data/src/core/load_balancing/backend_metric_data.h +2 -2
  1514. data/src/core/load_balancing/backend_metric_parser.cc +22 -30
  1515. data/src/core/load_balancing/backend_metric_parser.h +1 -3
  1516. data/src/core/load_balancing/child_policy_handler.cc +37 -41
  1517. data/src/core/load_balancing/child_policy_handler.h +4 -5
  1518. data/src/core/load_balancing/delegating_helper.h +6 -7
  1519. data/src/core/load_balancing/endpoint_list.cc +23 -15
  1520. data/src/core/load_balancing/endpoint_list.h +27 -22
  1521. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +12 -11
  1522. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +8 -5
  1523. data/src/core/load_balancing/grpclb/grpclb.cc +175 -226
  1524. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -3
  1525. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -3
  1526. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +5 -7
  1527. data/src/core/load_balancing/grpclb/load_balancer_api.cc +7 -10
  1528. data/src/core/load_balancing/grpclb/load_balancer_api.h +4 -6
  1529. data/src/core/load_balancing/health_check_client.cc +76 -128
  1530. data/src/core/load_balancing/health_check_client.h +3 -3
  1531. data/src/core/load_balancing/health_check_client_internal.h +15 -16
  1532. data/src/core/load_balancing/lb_policy.cc +9 -14
  1533. data/src/core/load_balancing/lb_policy.h +77 -51
  1534. data/src/core/load_balancing/lb_policy_factory.h +5 -6
  1535. data/src/core/load_balancing/lb_policy_registry.cc +15 -15
  1536. data/src/core/load_balancing/lb_policy_registry.h +5 -6
  1537. data/src/core/load_balancing/oob_backend_metric.cc +19 -25
  1538. data/src/core/load_balancing/oob_backend_metric.h +3 -3
  1539. data/src/core/load_balancing/oob_backend_metric_internal.h +8 -9
  1540. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +191 -247
  1541. data/src/core/load_balancing/outlier_detection/outlier_detection.h +9 -10
  1542. data/src/core/load_balancing/pick_first/pick_first.cc +333 -381
  1543. data/src/core/load_balancing/priority/priority.cc +102 -151
  1544. data/src/core/load_balancing/ring_hash/ring_hash.cc +254 -226
  1545. data/src/core/load_balancing/ring_hash/ring_hash.h +10 -18
  1546. data/src/core/load_balancing/rls/rls.cc +434 -528
  1547. data/src/core/load_balancing/rls/rls.h +97 -1
  1548. data/src/core/load_balancing/round_robin/round_robin.cc +71 -103
  1549. data/src/core/load_balancing/subchannel_interface.h +17 -6
  1550. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +8 -9
  1551. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +4 -5
  1552. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +159 -185
  1553. data/src/core/load_balancing/weighted_target/weighted_target.cc +79 -123
  1554. data/src/core/load_balancing/xds/cds.cc +65 -85
  1555. data/src/core/load_balancing/xds/xds_cluster_impl.cc +192 -172
  1556. data/src/core/load_balancing/xds/xds_cluster_manager.cc +63 -103
  1557. data/src/core/load_balancing/xds/xds_override_host.cc +163 -272
  1558. data/src/core/load_balancing/xds/xds_override_host.h +6 -7
  1559. data/src/core/load_balancing/xds/xds_wrr_locality.cc +48 -60
  1560. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -8
  1561. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +6 -1
  1562. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +98 -73
  1563. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +2 -3
  1564. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +4 -6
  1565. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -6
  1566. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +119 -101
  1567. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +166 -151
  1568. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -18
  1569. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  1570. data/src/core/resolver/dns/dns_resolver_plugin.cc +10 -11
  1571. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1572. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +62 -74
  1573. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +3 -4
  1574. data/src/core/resolver/dns/event_engine/service_config_helper.cc +8 -10
  1575. data/src/core/resolver/dns/event_engine/service_config_helper.h +2 -2
  1576. data/src/core/resolver/dns/native/dns_resolver.cc +23 -32
  1577. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1578. data/src/core/resolver/endpoint_addresses.cc +2 -5
  1579. data/src/core/resolver/endpoint_addresses.h +5 -3
  1580. data/src/core/resolver/fake/fake_resolver.cc +18 -21
  1581. data/src/core/resolver/fake/fake_resolver.h +10 -11
  1582. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +33 -38
  1583. data/src/core/resolver/polling_resolver.cc +41 -60
  1584. data/src/core/resolver/polling_resolver.h +11 -12
  1585. data/src/core/resolver/resolver.cc +2 -6
  1586. data/src/core/resolver/resolver.h +4 -10
  1587. data/src/core/resolver/resolver_factory.h +4 -5
  1588. data/src/core/resolver/resolver_registry.cc +12 -13
  1589. data/src/core/resolver/resolver_registry.h +4 -5
  1590. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +8 -9
  1591. data/src/core/resolver/xds/xds_config.cc +95 -0
  1592. data/src/core/resolver/xds/xds_config.h +108 -0
  1593. data/src/core/resolver/xds/xds_dependency_manager.cc +260 -342
  1594. data/src/core/resolver/xds/xds_dependency_manager.h +34 -89
  1595. data/src/core/resolver/xds/xds_resolver.cc +188 -210
  1596. data/src/core/resolver/xds/xds_resolver_attributes.h +7 -4
  1597. data/src/core/server/server.cc +658 -501
  1598. data/src/core/server/server.h +261 -97
  1599. data/src/core/server/server_call_tracer_filter.cc +22 -25
  1600. data/src/core/server/server_call_tracer_filter.h +1 -1
  1601. data/src/core/server/server_config_selector.h +6 -7
  1602. data/src/core/server/server_config_selector_filter.cc +23 -25
  1603. data/src/core/server/server_interface.h +2 -0
  1604. data/src/core/server/xds_channel_stack_modifier.cc +5 -5
  1605. data/src/core/server/xds_channel_stack_modifier.h +6 -7
  1606. data/src/core/server/xds_server_config_fetcher.cc +147 -223
  1607. data/src/core/service_config/service_config.h +4 -6
  1608. data/src/core/service_config/service_config_call_data.h +21 -20
  1609. data/src/core/service_config/service_config_channel_arg_filter.cc +21 -29
  1610. data/src/core/service_config/service_config_impl.cc +12 -14
  1611. data/src/core/service_config/service_config_impl.h +5 -8
  1612. data/src/core/service_config/service_config_parser.cc +4 -8
  1613. data/src/core/service_config/service_config_parser.h +3 -5
  1614. data/src/core/telemetry/call_tracer.cc +386 -0
  1615. data/src/core/telemetry/call_tracer.h +264 -0
  1616. data/src/core/telemetry/histogram_view.cc +69 -0
  1617. data/src/core/telemetry/histogram_view.h +36 -0
  1618. data/src/core/telemetry/metrics.cc +180 -0
  1619. data/src/core/telemetry/metrics.h +563 -0
  1620. data/src/core/telemetry/stats.cc +67 -0
  1621. data/src/core/telemetry/stats.h +62 -0
  1622. data/src/core/telemetry/stats_data.cc +931 -0
  1623. data/src/core/telemetry/stats_data.h +705 -0
  1624. data/src/core/telemetry/tcp_tracer.h +143 -0
  1625. data/src/core/tsi/alts/crypt/aes_gcm.cc +5 -8
  1626. data/src/core/tsi/alts/crypt/gsec.cc +2 -3
  1627. data/src/core/tsi/alts/crypt/gsec.h +3 -4
  1628. data/src/core/tsi/alts/frame_protector/alts_counter.cc +1 -2
  1629. data/src/core/tsi/alts/frame_protector/alts_counter.h +3 -4
  1630. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +1 -2
  1631. data/src/core/tsi/alts/frame_protector/alts_crypter.h +2 -3
  1632. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +16 -18
  1633. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +1 -2
  1634. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +1 -1
  1635. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  1636. data/src/core/tsi/alts/frame_protector/frame_handler.cc +11 -12
  1637. data/src/core/tsi/alts/frame_protector/frame_handler.h +1 -2
  1638. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +43 -48
  1639. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +2 -4
  1640. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +1 -1
  1641. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +69 -71
  1642. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
  1643. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +17 -24
  1644. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +3 -4
  1645. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +14 -17
  1646. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +1 -2
  1647. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +11 -12
  1648. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +1 -2
  1649. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +9 -11
  1650. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -5
  1651. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +1 -2
  1652. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +10 -14
  1653. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +1 -2
  1654. data/src/core/tsi/fake_transport_security.cc +32 -32
  1655. data/src/core/tsi/local_transport_security.cc +9 -10
  1656. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +9 -12
  1657. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +8 -10
  1658. data/src/core/tsi/ssl/session_cache/ssl_session.h +4 -5
  1659. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -9
  1660. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +7 -8
  1661. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -4
  1662. data/src/core/tsi/ssl_transport_security.cc +135 -113
  1663. data/src/core/tsi/ssl_transport_security.h +6 -8
  1664. data/src/core/tsi/ssl_transport_security_utils.cc +77 -24
  1665. data/src/core/tsi/ssl_transport_security_utils.h +14 -5
  1666. data/src/core/tsi/ssl_types.h +1 -2
  1667. data/src/core/tsi/transport_security.cc +2 -7
  1668. data/src/core/tsi/transport_security.h +1 -4
  1669. data/src/core/tsi/transport_security_interface.h +3 -8
  1670. data/src/core/util/alloc.cc +69 -0
  1671. data/src/core/util/alloc.h +28 -0
  1672. data/src/core/util/atomic_utils.h +47 -0
  1673. data/src/core/util/avl.h +324 -0
  1674. data/src/core/util/backoff.cc +57 -0
  1675. data/src/core/util/backoff.h +86 -0
  1676. data/src/core/util/bitset.h +224 -0
  1677. data/src/core/util/chunked_vector.h +256 -0
  1678. data/src/core/util/construct_destruct.h +41 -0
  1679. data/src/core/util/cpp_impl_of.h +49 -0
  1680. data/src/core/util/crash.cc +40 -0
  1681. data/src/core/util/crash.h +36 -0
  1682. data/src/core/util/debug_location.h +106 -0
  1683. data/src/core/util/directory_reader.h +48 -0
  1684. data/src/core/util/down_cast.h +48 -0
  1685. data/src/core/util/dual_ref_counted.h +376 -0
  1686. data/src/core/util/dump_args.cc +54 -0
  1687. data/src/core/util/dump_args.h +114 -0
  1688. data/src/core/util/env.h +52 -0
  1689. data/src/core/util/event_log.cc +87 -0
  1690. data/src/core/util/event_log.h +79 -0
  1691. data/src/core/util/examine_stack.cc +43 -0
  1692. data/src/core/util/examine_stack.h +44 -0
  1693. data/src/core/util/fork.cc +241 -0
  1694. data/src/core/util/fork.h +98 -0
  1695. data/src/core/util/gcp_metadata_query.cc +132 -0
  1696. data/src/core/util/gcp_metadata_query.h +86 -0
  1697. data/src/core/util/gethostname.h +26 -0
  1698. data/src/core/util/gethostname_fallback.cc +30 -0
  1699. data/src/core/util/gethostname_host_name_max.cc +39 -0
  1700. data/src/core/util/gethostname_sysconf.cc +39 -0
  1701. data/src/core/util/glob.cc +70 -0
  1702. data/src/core/util/glob.h +29 -0
  1703. data/src/core/util/gpr_time.cc +266 -0
  1704. data/src/core/util/grpc_if_nametoindex.h +29 -0
  1705. data/src/core/util/grpc_if_nametoindex_posix.cc +41 -0
  1706. data/src/core/util/grpc_if_nametoindex_unsupported.cc +36 -0
  1707. data/src/core/util/host_port.cc +114 -0
  1708. data/src/core/util/host_port.h +57 -0
  1709. data/src/core/util/http_client/format_request.cc +134 -0
  1710. data/src/core/util/http_client/format_request.h +37 -0
  1711. data/src/core/util/http_client/httpcli.cc +427 -0
  1712. data/src/core/util/http_client/httpcli.h +279 -0
  1713. data/src/core/util/http_client/httpcli_security_connector.cc +210 -0
  1714. data/src/core/util/http_client/httpcli_ssl_credentials.h +38 -0
  1715. data/src/core/util/http_client/parser.cc +447 -0
  1716. data/src/core/util/http_client/parser.h +126 -0
  1717. data/src/core/util/if_list.h +4530 -0
  1718. data/src/core/util/iphone/cpu.cc +43 -0
  1719. data/src/core/util/json/json.h +29 -0
  1720. data/src/core/util/json/json_args.h +34 -0
  1721. data/src/core/util/json/json_channel_args.h +42 -0
  1722. data/src/core/util/json/json_object_loader.cc +215 -0
  1723. data/src/core/util/json/json_object_loader.h +644 -0
  1724. data/src/core/util/json/json_reader.cc +953 -0
  1725. data/src/core/util/json/json_reader.h +33 -0
  1726. data/src/core/util/json/json_util.cc +101 -0
  1727. data/src/core/util/json/json_util.h +163 -0
  1728. data/src/core/util/json/json_writer.cc +337 -0
  1729. data/src/core/util/json/json_writer.h +33 -0
  1730. data/src/core/util/latent_see.cc +163 -0
  1731. data/src/core/util/latent_see.h +334 -0
  1732. data/src/core/util/linux/cpu.cc +86 -0
  1733. data/src/core/util/linux/env.cc +61 -0
  1734. data/src/core/util/load_file.cc +75 -0
  1735. data/src/core/util/load_file.h +33 -0
  1736. data/src/core/util/log.cc +127 -0
  1737. data/src/core/util/lru_cache.h +122 -0
  1738. data/src/core/util/manual_constructor.h +145 -0
  1739. data/src/core/util/match.h +74 -0
  1740. data/src/core/util/matchers.cc +336 -0
  1741. data/src/core/util/matchers.h +162 -0
  1742. data/src/core/util/memory.h +52 -0
  1743. data/src/core/util/mpscq.cc +108 -0
  1744. data/src/core/util/mpscq.h +98 -0
  1745. data/src/core/util/msys/tmpfile.cc +57 -0
  1746. data/src/core/util/no_destruct.h +95 -0
  1747. data/src/core/util/notification.h +66 -0
  1748. data/src/core/util/orphanable.h +153 -0
  1749. data/src/core/util/overload.h +59 -0
  1750. data/src/core/util/packed_table.h +40 -0
  1751. data/src/core/util/per_cpu.cc +34 -0
  1752. data/src/core/util/per_cpu.h +102 -0
  1753. data/src/core/util/posix/cpu.cc +83 -0
  1754. data/src/core/util/posix/directory_reader.cc +82 -0
  1755. data/src/core/util/posix/env.cc +47 -0
  1756. data/src/core/util/posix/stat.cc +54 -0
  1757. data/src/core/util/posix/string.cc +71 -0
  1758. data/src/core/util/posix/sync.cc +157 -0
  1759. data/src/core/util/posix/thd.cc +243 -0
  1760. data/src/core/util/posix/time.cc +122 -0
  1761. data/src/core/util/posix/tmpfile.cc +71 -0
  1762. data/src/core/util/random_early_detection.cc +33 -0
  1763. data/src/core/util/random_early_detection.h +61 -0
  1764. data/src/core/util/ref_counted.h +403 -0
  1765. data/src/core/util/ref_counted_ptr.h +443 -0
  1766. data/src/core/util/ref_counted_string.cc +42 -0
  1767. data/src/core/util/ref_counted_string.h +159 -0
  1768. data/src/core/util/ring_buffer.h +122 -0
  1769. data/src/core/util/single_set_ptr.h +89 -0
  1770. data/src/core/util/sorted_pack.h +89 -0
  1771. data/src/core/util/spinlock.h +51 -0
  1772. data/src/core/util/stat.h +35 -0
  1773. data/src/core/util/status_helper.cc +427 -0
  1774. data/src/core/util/status_helper.h +160 -0
  1775. data/src/core/util/strerror.cc +40 -0
  1776. data/src/core/util/strerror.h +29 -0
  1777. data/src/core/util/string.cc +341 -0
  1778. data/src/core/util/string.h +110 -0
  1779. data/src/core/util/sync.cc +123 -0
  1780. data/src/core/util/sync.h +199 -0
  1781. data/src/core/util/sync_abseil.cc +106 -0
  1782. data/src/core/util/table.h +471 -0
  1783. data/src/core/util/tchar.cc +49 -0
  1784. data/src/core/util/tchar.h +33 -0
  1785. data/src/core/util/thd.h +193 -0
  1786. data/src/core/util/time.cc +240 -0
  1787. data/src/core/util/time.h +385 -0
  1788. data/src/core/util/time_averaged_stats.cc +60 -0
  1789. data/src/core/util/time_averaged_stats.h +79 -0
  1790. data/src/core/util/time_precise.cc +167 -0
  1791. data/src/core/util/time_precise.h +68 -0
  1792. data/src/core/util/time_util.cc +80 -0
  1793. data/src/core/util/time_util.h +41 -0
  1794. data/src/core/util/tmpfile.h +31 -0
  1795. data/src/core/util/type_list.h +88 -0
  1796. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1797. data/src/core/util/unique_type_name.h +123 -0
  1798. data/src/core/util/upb_utils.h +43 -0
  1799. data/src/core/util/uri.cc +378 -0
  1800. data/src/core/util/uri.h +112 -0
  1801. data/src/core/util/useful.h +153 -0
  1802. data/src/core/util/uuid_v4.cc +37 -0
  1803. data/src/core/util/uuid_v4.h +35 -0
  1804. data/src/core/util/validation_errors.cc +73 -0
  1805. data/src/core/util/validation_errors.h +144 -0
  1806. data/src/core/util/wait_for_single_owner.h +62 -0
  1807. data/src/core/util/windows/cpu.cc +34 -0
  1808. data/src/core/util/windows/directory_reader.cc +79 -0
  1809. data/src/core/util/windows/env.cc +56 -0
  1810. data/src/core/util/windows/stat.cc +50 -0
  1811. data/src/core/util/windows/string.cc +68 -0
  1812. data/src/core/util/windows/string_util.cc +53 -0
  1813. data/src/core/util/windows/sync.cc +121 -0
  1814. data/src/core/util/windows/thd.cc +182 -0
  1815. data/src/core/util/windows/time.cc +104 -0
  1816. data/src/core/util/windows/tmpfile.cc +66 -0
  1817. data/src/core/util/work_serializer.cc +298 -0
  1818. data/src/core/util/work_serializer.h +81 -0
  1819. data/src/core/util/xxhash_inline.h +29 -0
  1820. data/src/core/xds/grpc/certificate_provider_store.cc +15 -21
  1821. data/src/core/xds/grpc/certificate_provider_store.h +13 -14
  1822. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +8 -9
  1823. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +9 -10
  1824. data/src/core/xds/grpc/xds_audit_logger_registry.cc +6 -6
  1825. data/src/core/xds/grpc/xds_audit_logger_registry.h +4 -5
  1826. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +18 -179
  1827. data/src/core/xds/grpc/xds_bootstrap_grpc.h +11 -41
  1828. data/src/core/xds/grpc/xds_certificate_provider.cc +19 -20
  1829. data/src/core/xds/grpc/xds_certificate_provider.h +12 -11
  1830. data/src/core/xds/grpc/xds_client_grpc.cc +104 -83
  1831. data/src/core/xds/grpc/xds_client_grpc.h +16 -10
  1832. data/src/core/xds/grpc/xds_cluster.cc +12 -737
  1833. data/src/core/xds/grpc/xds_cluster.h +40 -49
  1834. data/src/core/xds/grpc/xds_cluster_parser.cc +772 -0
  1835. data/src/core/xds/grpc/xds_cluster_parser.h +61 -0
  1836. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +10 -13
  1837. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +5 -6
  1838. data/src/core/xds/grpc/xds_common_types.cc +33 -438
  1839. data/src/core/xds/grpc/xds_common_types.h +12 -30
  1840. data/src/core/xds/grpc/xds_common_types_parser.cc +501 -0
  1841. data/src/core/xds/grpc/xds_common_types_parser.h +77 -0
  1842. data/src/core/xds/grpc/xds_endpoint.cc +3 -424
  1843. data/src/core/xds/grpc/xds_endpoint.h +7 -29
  1844. data/src/core/xds/grpc/xds_endpoint_parser.cc +475 -0
  1845. data/src/core/xds/grpc/xds_endpoint_parser.h +47 -0
  1846. data/src/core/xds/grpc/xds_health_status.cc +4 -6
  1847. data/src/core/xds/grpc/xds_health_status.h +4 -6
  1848. data/src/core/xds/grpc/xds_http_fault_filter.cc +46 -36
  1849. data/src/core/xds/grpc/xds_http_fault_filter.h +15 -10
  1850. data/src/core/xds/grpc/xds_http_filter.h +134 -0
  1851. data/src/core/xds/grpc/xds_http_filter_registry.cc +122 -0
  1852. data/src/core/xds/grpc/xds_http_filter_registry.h +104 -0
  1853. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1854. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +61 -0
  1855. data/src/core/xds/grpc/xds_http_rbac_filter.cc +93 -71
  1856. data/src/core/xds/grpc/xds_http_rbac_filter.h +15 -10
  1857. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +34 -21
  1858. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +15 -10
  1859. data/src/core/xds/grpc/xds_lb_policy_registry.cc +27 -32
  1860. data/src/core/xds/grpc/xds_lb_policy_registry.h +5 -6
  1861. data/src/core/xds/grpc/xds_listener.cc +20 -989
  1862. data/src/core/xds/grpc/xds_listener.h +12 -45
  1863. data/src/core/xds/grpc/xds_listener_parser.cc +1000 -0
  1864. data/src/core/xds/grpc/xds_listener_parser.h +60 -0
  1865. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1866. data/src/core/xds/grpc/xds_metadata.h +158 -0
  1867. data/src/core/xds/grpc/xds_metadata_parser.cc +197 -0
  1868. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1869. data/src/core/xds/grpc/xds_route_config.cc +12 -934
  1870. data/src/core/xds/grpc/xds_route_config.h +17 -50
  1871. data/src/core/xds/grpc/xds_route_config_parser.cc +960 -0
  1872. data/src/core/xds/grpc/xds_route_config_parser.h +77 -0
  1873. data/src/core/xds/grpc/xds_routing.cc +66 -33
  1874. data/src/core/xds/grpc/xds_routing.h +17 -11
  1875. data/src/core/xds/grpc/xds_server_grpc.cc +181 -0
  1876. data/src/core/xds/grpc/xds_server_grpc.h +66 -0
  1877. data/src/core/xds/grpc/xds_server_grpc_interface.h +33 -0
  1878. data/src/core/xds/grpc/xds_transport_grpc.cc +101 -59
  1879. data/src/core/xds/grpc/xds_transport_grpc.h +34 -23
  1880. data/src/core/xds/xds_client/lrs_client.cc +1280 -0
  1881. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1882. data/src/core/xds/xds_client/xds_api.cc +28 -469
  1883. data/src/core/xds/xds_client/xds_api.h +6 -161
  1884. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1885. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1886. data/src/core/xds/xds_client/xds_bootstrap.cc +13 -4
  1887. data/src/core/xds/xds_client/xds_bootstrap.h +10 -3
  1888. data/src/core/xds/xds_client/xds_client.cc +1122 -1414
  1889. data/src/core/xds/xds_client/xds_client.h +167 -117
  1890. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1891. data/src/core/xds/xds_client/xds_metrics.h +2 -2
  1892. data/src/core/xds/xds_client/xds_resource_type.h +6 -8
  1893. data/src/core/xds/xds_client/xds_resource_type_impl.h +15 -11
  1894. data/src/core/xds/xds_client/xds_transport.h +29 -14
  1895. data/src/ruby/bin/math_pb.rb +1 -22
  1896. data/src/ruby/ext/grpc/extconf.rb +2 -1
  1897. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1898. data/src/ruby/ext/grpc/rb_call.c +15 -8
  1899. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -33
  1900. data/src/ruby/ext/grpc/rb_channel.c +42 -37
  1901. data/src/ruby/ext/grpc/rb_channel_args.c +4 -4
  1902. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -6
  1903. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1904. data/src/ruby/ext/grpc/rb_completion_queue.c +18 -36
  1905. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  1906. data/src/ruby/ext/grpc/rb_compression_options.c +9 -10
  1907. data/src/ruby/ext/grpc/rb_event_thread.c +9 -9
  1908. data/src/ruby/ext/grpc/rb_grpc.c +16 -16
  1909. data/src/ruby/ext/grpc/rb_grpc.h +8 -1
  1910. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -14
  1911. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -21
  1912. data/src/ruby/ext/grpc/rb_server.c +47 -28
  1913. data/src/ruby/ext/grpc/rb_server_credentials.c +3 -3
  1914. data/src/ruby/ext/grpc/rb_server_credentials.h +1 -2
  1915. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -6
  1916. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1917. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +4 -4
  1918. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +1 -2
  1919. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1920. data/src/ruby/lib/grpc/logconfig.rb +13 -0
  1921. data/src/ruby/lib/grpc/version.rb +1 -1
  1922. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1923. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1924. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1925. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1926. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1927. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1928. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1929. data/src/ruby/spec/call_spec.rb +53 -40
  1930. data/src/ruby/spec/channel_spec.rb +4 -2
  1931. data/src/ruby/spec/client_server_spec.rb +148 -507
  1932. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1933. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1934. data/src/ruby/spec/logconfig_spec.rb +30 -0
  1935. data/src/ruby/spec/support/services.rb +3 -0
  1936. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1937. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1938. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1939. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1940. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1941. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1942. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1943. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1944. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1945. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1946. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1947. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1948. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1949. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1950. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1951. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1952. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1953. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1954. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1955. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1956. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1957. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1958. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1959. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1960. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1961. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1962. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1963. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1964. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1965. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1966. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1967. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1968. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1969. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1970. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1971. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1972. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1973. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1974. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1975. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1976. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1977. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1978. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1979. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1980. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1981. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1982. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  1983. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  1984. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  1985. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  1986. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  1987. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  1988. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  1989. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  1990. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  1991. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  1992. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  1993. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  1994. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  1995. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  1996. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  1997. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  1998. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  1999. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  2000. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +20 -0
  2001. data/third_party/abseil-cpp/absl/log/internal/check_op.h +63 -21
  2002. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  2003. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  2004. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  2005. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  2006. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  2007. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  2008. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  2009. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  2010. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  2011. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  2012. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  2013. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  2014. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  2015. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  2016. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  2017. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  2018. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  2019. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  2020. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  2021. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  2022. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  2023. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  2024. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  2025. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  2026. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  2027. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  2028. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  2029. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  2030. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  2031. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  2032. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  2033. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2034. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2035. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2036. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2037. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2038. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2039. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2040. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2041. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2042. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2043. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2044. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2045. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2046. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2047. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2048. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2049. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2050. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2051. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2052. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2053. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2054. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2055. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2056. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2057. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2058. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2059. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2060. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2061. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2062. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2063. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2064. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2065. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2066. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2067. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2068. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2069. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +243 -0
  2070. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +53 -0
  2071. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +47 -0
  2072. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +42 -0
  2073. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +109 -0
  2074. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +43 -0
  2075. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +424 -0
  2076. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +239 -0
  2077. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +193 -0
  2078. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +32 -0
  2079. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +415 -0
  2080. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +206 -0
  2081. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +224 -0
  2082. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +172 -0
  2083. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +109 -0
  2084. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +355 -0
  2085. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +61 -0
  2086. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +56 -0
  2087. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +63 -0
  2088. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +52 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -57
  2090. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +241 -0
  2091. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +932 -0
  2092. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +669 -0
  2093. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +164 -0
  2094. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +276 -0
  2095. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +84 -0
  2096. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +229 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +434 -0
  2098. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +119 -0
  2099. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +658 -0
  2100. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +268 -0
  2101. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +511 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +50 -0
  2103. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +193 -0
  2104. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +292 -0
  2105. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +152 -0
  2106. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +13 -55
  2107. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +446 -0
  2108. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +59 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +147 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +133 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +169 -0
  2112. data/third_party/boringssl-with-bazel/src/crypto/bn/bn_asn1.cc +57 -0
  2113. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +423 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +118 -0
  2115. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +53 -0
  2116. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +266 -0
  2117. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +702 -0
  2118. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +912 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +13 -13
  2120. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +156 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +224 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +18 -18
  2123. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +110 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesctrhmac.cc +279 -0
  2125. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +845 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_chacha20poly1305.cc +341 -0
  2127. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_des.cc +198 -0
  2128. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc2.cc +417 -0
  2130. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  2131. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_tls.cc +599 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  2133. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +240 -0
  2134. data/third_party/boringssl-with-bazel/src/crypto/cipher/tls_cbc.cc +476 -0
  2135. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +631 -0
  2136. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  2137. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +75 -0
  2138. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +55 -0
  2139. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +62 -0
  2140. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +61 -0
  2141. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +94 -0
  2142. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +41 -0
  2143. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +54 -0
  2144. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +151 -0
  2145. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +13 -13
  2146. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +287 -0
  2147. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +183 -0
  2148. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +2154 -0
  2149. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +18 -0
  2150. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  2151. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +13 -13
  2152. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +529 -0
  2153. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +829 -0
  2154. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +27 -69
  2155. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +124 -0
  2156. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +442 -0
  2157. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +306 -0
  2158. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +951 -0
  2159. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +379 -0
  2160. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +13 -13
  2161. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +570 -0
  2162. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_derive.cc +96 -0
  2163. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +510 -0
  2164. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +78 -0
  2165. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +357 -0
  2167. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +95 -0
  2168. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +810 -0
  2169. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  2170. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +379 -0
  2171. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +471 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +440 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +13 -55
  2174. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +153 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +142 -0
  2176. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +279 -0
  2177. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +230 -0
  2178. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +286 -0
  2179. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +103 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +225 -0
  2181. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +236 -0
  2182. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +609 -0
  2183. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +198 -0
  2184. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +109 -0
  2185. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +237 -0
  2186. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +98 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +342 -0
  2188. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +216 -0
  2189. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +114 -0
  2190. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +141 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +191 -0
  2192. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +1281 -0
  2193. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cbc.cc.inc +130 -0
  2194. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/cfb.cc.inc +166 -0
  2195. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  2196. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +604 -0
  2197. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm_nohw.cc.inc +302 -0
  2198. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +450 -75
  2199. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +208 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +84 -0
  2201. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  2202. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +89 -0
  2203. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +282 -0
  2204. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +729 -0
  2205. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +269 -0
  2206. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +554 -0
  2207. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +374 -0
  2208. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +225 -0
  2209. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +159 -0
  2210. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +191 -0
  2211. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +825 -0
  2212. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +87 -0
  2213. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +1227 -0
  2214. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +300 -0
  2215. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +339 -0
  2216. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +582 -0
  2217. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +52 -151
  2218. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +108 -0
  2219. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +430 -0
  2220. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +222 -0
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +698 -0
  2222. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +980 -0
  2223. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +260 -0
  2224. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +142 -0
  2225. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +20 -17
  2226. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +320 -0
  2227. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +459 -0
  2228. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +295 -0
  2229. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +672 -0
  2230. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +1242 -0
  2231. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +409 -0
  2232. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +14 -65
  2233. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +288 -0
  2234. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +26 -22
  2235. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +203 -0
  2236. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +443 -0
  2237. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -15
  2238. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +250 -0
  2239. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +178 -0
  2240. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +13 -55
  2241. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +13 -47
  2242. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +226 -0
  2243. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  2244. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +986 -0
  2245. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +501 -0
  2246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +439 -0
  2247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +104 -0
  2248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +19 -66
  2249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +306 -0
  2250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +1163 -0
  2251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  2252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +741 -0
  2253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +87 -25
  2254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +749 -0
  2255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  2256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +179 -0
  2257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +284 -0
  2258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +269 -0
  2259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +255 -0
  2260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +221 -0
  2261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +88 -0
  2262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +278 -0
  2263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +41 -24
  2264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +28 -0
  2265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +112 -0
  2266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +215 -0
  2267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +70 -0
  2268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/keccak.cc.inc +279 -0
  2269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +1993 -0
  2270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1165 -0
  2271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +214 -0
  2272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +19 -104
  2273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +483 -0
  2274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +147 -0
  2275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +13 -56
  2276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +379 -0
  2277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +983 -0
  2278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +1296 -0
  2279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +129 -0
  2280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +1042 -0
  2281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +36 -36
  2282. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +327 -0
  2283. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +51 -60
  2284. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +390 -0
  2285. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +299 -0
  2286. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +473 -0
  2287. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/address.h +119 -0
  2288. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.cc.inc +169 -0
  2289. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  2290. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.cc.inc +161 -0
  2291. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  2292. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/params.h +78 -0
  2293. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +329 -0
  2294. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  2295. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  2296. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.cc.inc +171 -0
  2297. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  2298. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  2299. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +180 -0
  2300. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +1095 -0
  2301. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +2185 -0
  2302. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +13 -13
  2303. data/third_party/boringssl-with-bazel/src/crypto/internal.h +323 -449
  2304. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  2305. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +869 -0
  2306. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +31 -75
  2307. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +309 -0
  2308. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +194 -0
  2309. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +37 -0
  2310. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +243 -0
  2311. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +583 -0
  2312. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +90 -0
  2313. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +152 -0
  2314. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +519 -0
  2315. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +18 -57
  2316. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +80 -0
  2317. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  2318. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +149 -0
  2319. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +254 -0
  2320. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +741 -0
  2321. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +45 -0
  2322. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +208 -0
  2323. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +141 -0
  2324. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +22 -0
  2325. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +22 -0
  2326. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +13 -13
  2327. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +193 -0
  2328. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +526 -0
  2329. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -54
  2330. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +275 -0
  2331. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +487 -0
  2332. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +1304 -0
  2333. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +13 -13
  2334. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +314 -0
  2335. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +310 -0
  2336. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +850 -0
  2337. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +13 -13
  2338. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +262 -0
  2339. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +65 -0
  2340. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +194 -0
  2341. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  2342. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +60 -0
  2343. data/third_party/boringssl-with-bazel/src/crypto/rand/getrandom_fillin.h +64 -0
  2344. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  2345. data/third_party/boringssl-with-bazel/src/crypto/rand/passive.cc +178 -0
  2346. data/third_party/boringssl-with-bazel/src/crypto/rand/rand.cc +77 -0
  2347. data/third_party/boringssl-with-bazel/src/crypto/rand/sysrand_internal.h +37 -0
  2348. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  2349. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +328 -0
  2350. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +102 -0
  2351. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +56 -0
  2352. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +59 -0
  2353. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  2354. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_asn1.cc +283 -0
  2355. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +531 -0
  2356. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  2357. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  2358. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +52 -0
  2359. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +87 -0
  2360. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +104 -0
  2361. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +79 -0
  2362. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +113 -0
  2363. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  2364. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  2365. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +496 -0
  2366. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +68 -0
  2367. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +51 -0
  2368. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +151 -0
  2369. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +240 -0
  2370. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +13 -13
  2371. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +1656 -0
  2372. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +685 -0
  2373. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +1263 -0
  2374. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +52 -0
  2375. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +97 -0
  2376. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +74 -0
  2377. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +136 -0
  2378. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +542 -0
  2379. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +355 -0
  2380. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +227 -0
  2381. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  2382. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +37 -0
  2383. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +13 -61
  2384. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +185 -0
  2385. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +796 -0
  2386. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +364 -0
  2387. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +103 -0
  2388. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +203 -0
  2389. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +287 -0
  2390. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +79 -0
  2391. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +181 -0
  2392. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +31 -0
  2393. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +593 -0
  2394. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +95 -0
  2395. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +102 -0
  2396. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +374 -0
  2397. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +444 -0
  2398. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +557 -0
  2399. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +73 -0
  2400. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +114 -0
  2401. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +228 -0
  2402. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +79 -0
  2403. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +164 -0
  2404. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +81 -0
  2405. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +304 -0
  2406. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +514 -0
  2407. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +89 -0
  2408. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +101 -0
  2409. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +109 -0
  2410. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +183 -0
  2411. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +590 -0
  2412. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +131 -0
  2413. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +1342 -0
  2414. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +47 -0
  2415. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +186 -0
  2416. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +238 -0
  2417. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +66 -0
  2418. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +44 -0
  2419. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +139 -0
  2420. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +554 -0
  2421. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +164 -0
  2422. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +257 -0
  2423. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +198 -0
  2424. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +118 -0
  2425. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +147 -0
  2426. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +249 -0
  2427. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +1600 -0
  2428. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +440 -0
  2429. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +235 -0
  2430. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +365 -0
  2431. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +67 -0
  2432. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +91 -0
  2433. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +107 -0
  2434. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +318 -0
  2435. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +55 -0
  2436. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +342 -0
  2437. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +36 -0
  2438. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +492 -0
  2439. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +170 -0
  2440. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +74 -0
  2441. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +51 -0
  2442. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +34 -0
  2443. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +28 -0
  2444. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +506 -0
  2445. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +169 -0
  2446. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +1529 -0
  2447. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -13
  2448. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +13 -47
  2449. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +13 -51
  2450. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  2451. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +37 -63
  2452. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  2453. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +248 -328
  2454. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +24 -55
  2455. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +13 -55
  2456. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +82 -0
  2457. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -61
  2458. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +13 -13
  2459. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +13 -55
  2460. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +28 -130
  2461. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +13 -55
  2462. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  2463. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +31 -16
  2464. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +13 -55
  2465. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +13 -13
  2466. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +31 -59
  2467. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +13 -13
  2468. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +13 -55
  2469. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  2470. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -25
  2471. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +13 -13
  2472. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +13 -13
  2473. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +13 -55
  2474. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -55
  2475. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -56
  2476. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -58
  2477. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  2478. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +13 -13
  2479. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +14 -66
  2480. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +31 -72
  2481. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +14 -65
  2482. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +13 -51
  2483. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +13 -13
  2484. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -107
  2485. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -56
  2486. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  2487. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +13 -107
  2488. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +23 -13
  2489. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +13 -13
  2490. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +13 -55
  2491. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +21 -19
  2492. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +13 -13
  2493. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  2494. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +13 -13
  2495. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +13 -55
  2496. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +13 -55
  2497. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +13 -55
  2498. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +13 -55
  2499. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +130 -0
  2500. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +222 -0
  2501. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +30 -69
  2502. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +13 -55
  2503. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +13 -13
  2504. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  2505. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +13 -13
  2506. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  2507. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  2508. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +25 -64
  2509. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  2510. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +13 -13
  2511. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +13 -55
  2512. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +13 -13
  2513. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +13 -13
  2514. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +13 -13
  2515. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -13
  2516. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +13 -55
  2517. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +13 -55
  2518. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +23 -63
  2519. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  2520. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +15 -15
  2521. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +15 -95
  2522. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +13 -13
  2523. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +174 -0
  2524. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +60 -32
  2525. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  2526. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +465 -317
  2527. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +15 -114
  2528. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +13 -55
  2529. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -13
  2530. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +15 -57
  2531. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  2532. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -156
  2533. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +15 -15
  2534. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +13 -55
  2535. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +14 -84
  2536. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  2537. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  2538. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  2539. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +15 -14
  2540. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +684 -441
  2541. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +129 -168
  2542. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +177 -127
  2543. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +21 -127
  2544. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +112 -97
  2545. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +456 -222
  2546. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +54 -47
  2547. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +701 -491
  2548. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +66 -73
  2549. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +61 -153
  2550. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +234 -335
  2551. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +104 -216
  2552. data/third_party/boringssl-with-bazel/src/ssl/internal.h +1009 -504
  2553. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +87 -169
  2554. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +29 -159
  2555. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +39 -113
  2556. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +103 -111
  2557. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +52 -145
  2558. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +22 -24
  2559. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +117 -157
  2560. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +229 -365
  2561. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +216 -31
  2562. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  2563. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +128 -32
  2564. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +244 -360
  2565. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +97 -103
  2566. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +101 -236
  2567. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +17 -91
  2568. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +109 -157
  2569. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +48 -28
  2570. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +66 -195
  2571. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -176
  2572. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +60 -43
  2573. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +152 -86
  2574. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +296 -163
  2575. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +247 -108
  2576. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +64 -117
  2577. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +55 -157
  2578. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +6 -0
  2579. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +6 -0
  2580. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +4 -1
  2581. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1 -1
  2582. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +3 -0
  2583. data/third_party/upb/upb/base/string_view.h +1 -1
  2584. data/third_party/upb/upb/json/decode.c +60 -13
  2585. data/third_party/upb/upb/json/decode.h +26 -3
  2586. data/third_party/upb/upb/json/encode.c +2 -2
  2587. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2588. data/third_party/upb/upb/mem/arena.c +80 -4
  2589. data/third_party/upb/upb/mem/arena.h +20 -9
  2590. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2591. data/third_party/upb/upb/mem/internal/arena.h +11 -8
  2592. data/third_party/upb/upb/message/accessors.c +6 -7
  2593. data/third_party/upb/upb/message/accessors.h +186 -376
  2594. data/third_party/upb/upb/message/array.c +26 -3
  2595. data/third_party/upb/upb/message/array.h +17 -9
  2596. data/third_party/upb/upb/message/compat.c +5 -5
  2597. data/third_party/upb/upb/message/compat.h +3 -3
  2598. data/third_party/upb/upb/message/copy.c +23 -20
  2599. data/third_party/upb/upb/message/internal/accessors.h +617 -55
  2600. data/third_party/upb/upb/message/internal/array.h +23 -15
  2601. data/third_party/upb/upb/message/internal/compare_unknown.c +289 -0
  2602. data/third_party/upb/upb/message/internal/compare_unknown.h +49 -0
  2603. data/third_party/upb/upb/message/internal/extension.c +12 -12
  2604. data/third_party/upb/upb/message/internal/extension.h +9 -12
  2605. data/third_party/upb/upb/message/internal/map.h +15 -0
  2606. data/third_party/upb/upb/message/internal/map_sorter.h +4 -5
  2607. data/third_party/upb/upb/message/internal/message.c +22 -6
  2608. data/third_party/upb/upb/message/internal/message.h +11 -0
  2609. data/third_party/upb/upb/message/internal/tagged_ptr.h +5 -5
  2610. data/third_party/upb/upb/message/internal/types.h +41 -1
  2611. data/third_party/upb/upb/message/map.c +25 -0
  2612. data/third_party/upb/upb/message/map.h +11 -7
  2613. data/third_party/upb/upb/message/merge.c +38 -0
  2614. data/third_party/upb/upb/message/merge.h +26 -0
  2615. data/third_party/upb/upb/message/message.c +83 -4
  2616. data/third_party/upb/upb/message/message.h +16 -1
  2617. data/third_party/upb/upb/message/tagged_ptr.h +4 -8
  2618. data/third_party/upb/upb/message/value.h +26 -0
  2619. data/third_party/upb/upb/mini_descriptor/build_enum.c +3 -3
  2620. data/third_party/upb/upb/mini_descriptor/build_enum.h +6 -14
  2621. data/third_party/upb/upb/mini_descriptor/decode.c +19 -3
  2622. data/third_party/upb/upb/mini_descriptor/link.c +23 -21
  2623. data/third_party/upb/upb/mini_table/enum.h +2 -4
  2624. data/third_party/upb/upb/mini_table/extension.h +4 -12
  2625. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2626. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2627. data/third_party/upb/upb/mini_table/field.h +12 -38
  2628. data/third_party/upb/upb/mini_table/file.h +6 -19
  2629. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2630. data/third_party/upb/upb/mini_table/internal/extension.h +18 -9
  2631. data/third_party/upb/upb/mini_table/internal/field.h +23 -23
  2632. data/third_party/upb/upb/mini_table/internal/file.h +7 -7
  2633. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2634. data/third_party/upb/upb/mini_table/internal/message.h +80 -36
  2635. data/third_party/upb/upb/mini_table/internal/sub.h +9 -4
  2636. data/third_party/upb/upb/mini_table/message.h +23 -22
  2637. data/third_party/upb/upb/mini_table/sub.h +4 -12
  2638. data/third_party/upb/upb/port/def.inc +108 -12
  2639. data/third_party/upb/upb/port/undef.inc +8 -1
  2640. data/third_party/upb/upb/reflection/common.h +1 -11
  2641. data/third_party/upb/upb/reflection/def.hpp +35 -0
  2642. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2643. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2644. data/third_party/upb/upb/reflection/enum_def.c +5 -1
  2645. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  2646. data/third_party/upb/upb/reflection/enum_value_def.c +3 -8
  2647. data/third_party/upb/upb/reflection/field_def.c +72 -46
  2648. data/third_party/upb/upb/reflection/field_def.h +4 -0
  2649. data/third_party/upb/upb/reflection/file_def.c +30 -4
  2650. data/third_party/upb/upb/reflection/file_def.h +3 -0
  2651. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2652. data/third_party/upb/upb/reflection/message.c +26 -9
  2653. data/third_party/upb/upb/reflection/message.h +2 -2
  2654. data/third_party/upb/upb/reflection/message_def.c +14 -9
  2655. data/third_party/upb/upb/reflection/method_def.h +8 -7
  2656. data/third_party/upb/upb/reflection/service_def.h +6 -5
  2657. data/third_party/upb/upb/text/encode.c +53 -389
  2658. data/third_party/upb/upb/text/encode.h +1 -11
  2659. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2660. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2661. data/third_party/upb/upb/text/options.h +22 -0
  2662. data/third_party/upb/upb/wire/decode.c +160 -94
  2663. data/third_party/upb/upb/wire/decode.h +15 -2
  2664. data/third_party/upb/upb/wire/encode.c +89 -48
  2665. data/third_party/upb/upb/wire/encode.h +12 -1
  2666. data/third_party/upb/upb/wire/eps_copy_input_stream.h +3 -3
  2667. data/third_party/upb/upb/wire/internal/decode_fast.c +28 -29
  2668. data/third_party/upb/upb/wire/internal/reader.h +3 -3
  2669. data/third_party/upb/upb/wire/reader.c +1 -2
  2670. data/third_party/upb/upb/wire/reader.h +4 -8
  2671. metadata +642 -545
  2672. data/src/core/client_channel/config_selector.cc +0 -60
  2673. data/src/core/ext/gcp/metadata_query.cc +0 -137
  2674. data/src/core/ext/gcp/metadata_query.h +0 -87
  2675. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  2676. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  2677. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -45
  2678. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2679. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  2680. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +0 -419
  2681. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +0 -81
  2682. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +0 -30
  2683. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +0 -400
  2684. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +0 -106
  2685. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +0 -33
  2686. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +0 -104
  2687. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +0 -32
  2688. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +0 -66
  2689. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +0 -47
  2690. data/src/core/handshaker/security/tsi_error.cc +0 -31
  2691. data/src/core/handshaker/security/tsi_error.h +0 -30
  2692. data/src/core/lib/avl/avl.h +0 -325
  2693. data/src/core/lib/backoff/backoff.cc +0 -47
  2694. data/src/core/lib/backoff/backoff.h +0 -89
  2695. data/src/core/lib/backoff/random_early_detection.cc +0 -33
  2696. data/src/core/lib/backoff/random_early_detection.h +0 -62
  2697. data/src/core/lib/channel/call_tracer.cc +0 -364
  2698. data/src/core/lib/channel/call_tracer.h +0 -226
  2699. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  2700. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  2701. data/src/core/lib/channel/context.h +0 -105
  2702. data/src/core/lib/channel/metrics.cc +0 -334
  2703. data/src/core/lib/channel/metrics.h +0 -365
  2704. data/src/core/lib/channel/tcp_tracer.h +0 -144
  2705. data/src/core/lib/config/config_vars.cc +0 -154
  2706. data/src/core/lib/config/config_vars.h +0 -131
  2707. data/src/core/lib/config/config_vars_non_generated.cc +0 -49
  2708. data/src/core/lib/config/core_configuration.cc +0 -112
  2709. data/src/core/lib/config/core_configuration.h +0 -244
  2710. data/src/core/lib/config/load_config.cc +0 -79
  2711. data/src/core/lib/config/load_config.h +0 -55
  2712. data/src/core/lib/debug/event_log.cc +0 -88
  2713. data/src/core/lib/debug/event_log.h +0 -81
  2714. data/src/core/lib/debug/histogram_view.cc +0 -69
  2715. data/src/core/lib/debug/histogram_view.h +0 -37
  2716. data/src/core/lib/debug/stats.cc +0 -68
  2717. data/src/core/lib/debug/stats.h +0 -64
  2718. data/src/core/lib/debug/stats_data.cc +0 -752
  2719. data/src/core/lib/debug/stats_data.h +0 -579
  2720. data/src/core/lib/event_engine/trace.cc +0 -25
  2721. data/src/core/lib/event_engine/trace.h +0 -48
  2722. data/src/core/lib/gpr/alloc.cc +0 -73
  2723. data/src/core/lib/gpr/alloc.h +0 -28
  2724. data/src/core/lib/gpr/android/log.cc +0 -79
  2725. data/src/core/lib/gpr/atm.cc +0 -35
  2726. data/src/core/lib/gpr/iphone/cpu.cc +0 -44
  2727. data/src/core/lib/gpr/linux/cpu.cc +0 -87
  2728. data/src/core/lib/gpr/linux/log.cc +0 -114
  2729. data/src/core/lib/gpr/log.cc +0 -166
  2730. data/src/core/lib/gpr/msys/tmpfile.cc +0 -59
  2731. data/src/core/lib/gpr/posix/cpu.cc +0 -84
  2732. data/src/core/lib/gpr/posix/log.cc +0 -111
  2733. data/src/core/lib/gpr/posix/string.cc +0 -72
  2734. data/src/core/lib/gpr/posix/sync.cc +0 -161
  2735. data/src/core/lib/gpr/posix/time.cc +0 -125
  2736. data/src/core/lib/gpr/posix/tmpfile.cc +0 -73
  2737. data/src/core/lib/gpr/spinlock.h +0 -53
  2738. data/src/core/lib/gpr/string.cc +0 -344
  2739. data/src/core/lib/gpr/string.h +0 -112
  2740. data/src/core/lib/gpr/sync.cc +0 -126
  2741. data/src/core/lib/gpr/sync_abseil.cc +0 -110
  2742. data/src/core/lib/gpr/time.cc +0 -271
  2743. data/src/core/lib/gpr/time_precise.cc +0 -168
  2744. data/src/core/lib/gpr/time_precise.h +0 -69
  2745. data/src/core/lib/gpr/tmpfile.h +0 -32
  2746. data/src/core/lib/gpr/useful.h +0 -184
  2747. data/src/core/lib/gpr/windows/cpu.cc +0 -35
  2748. data/src/core/lib/gpr/windows/log.cc +0 -116
  2749. data/src/core/lib/gpr/windows/string.cc +0 -69
  2750. data/src/core/lib/gpr/windows/string_util.cc +0 -55
  2751. data/src/core/lib/gpr/windows/sync.cc +0 -124
  2752. data/src/core/lib/gpr/windows/time.cc +0 -108
  2753. data/src/core/lib/gpr/windows/tmpfile.cc +0 -68
  2754. data/src/core/lib/gprpp/atomic_utils.h +0 -47
  2755. data/src/core/lib/gprpp/bitset.h +0 -225
  2756. data/src/core/lib/gprpp/chunked_vector.h +0 -258
  2757. data/src/core/lib/gprpp/construct_destruct.h +0 -40
  2758. data/src/core/lib/gprpp/cpp_impl_of.h +0 -49
  2759. data/src/core/lib/gprpp/crash.cc +0 -42
  2760. data/src/core/lib/gprpp/crash.h +0 -37
  2761. data/src/core/lib/gprpp/debug_location.h +0 -99
  2762. data/src/core/lib/gprpp/directory_reader.h +0 -48
  2763. data/src/core/lib/gprpp/down_cast.h +0 -49
  2764. data/src/core/lib/gprpp/dual_ref_counted.h +0 -365
  2765. data/src/core/lib/gprpp/env.h +0 -53
  2766. data/src/core/lib/gprpp/examine_stack.cc +0 -43
  2767. data/src/core/lib/gprpp/examine_stack.h +0 -45
  2768. data/src/core/lib/gprpp/fork.cc +0 -241
  2769. data/src/core/lib/gprpp/fork.h +0 -98
  2770. data/src/core/lib/gprpp/host_port.cc +0 -116
  2771. data/src/core/lib/gprpp/host_port.h +0 -57
  2772. data/src/core/lib/gprpp/if_list.h +0 -4530
  2773. data/src/core/lib/gprpp/linux/env.cc +0 -62
  2774. data/src/core/lib/gprpp/load_file.cc +0 -77
  2775. data/src/core/lib/gprpp/load_file.h +0 -34
  2776. data/src/core/lib/gprpp/manual_constructor.h +0 -146
  2777. data/src/core/lib/gprpp/match.h +0 -75
  2778. data/src/core/lib/gprpp/memory.h +0 -52
  2779. data/src/core/lib/gprpp/mpscq.cc +0 -108
  2780. data/src/core/lib/gprpp/mpscq.h +0 -100
  2781. data/src/core/lib/gprpp/no_destruct.h +0 -95
  2782. data/src/core/lib/gprpp/notification.h +0 -67
  2783. data/src/core/lib/gprpp/orphanable.h +0 -153
  2784. data/src/core/lib/gprpp/overload.h +0 -59
  2785. data/src/core/lib/gprpp/packed_table.h +0 -40
  2786. data/src/core/lib/gprpp/per_cpu.cc +0 -34
  2787. data/src/core/lib/gprpp/per_cpu.h +0 -103
  2788. data/src/core/lib/gprpp/posix/directory_reader.cc +0 -82
  2789. data/src/core/lib/gprpp/posix/env.cc +0 -47
  2790. data/src/core/lib/gprpp/posix/stat.cc +0 -56
  2791. data/src/core/lib/gprpp/posix/thd.cc +0 -247
  2792. data/src/core/lib/gprpp/ref_counted.h +0 -395
  2793. data/src/core/lib/gprpp/ref_counted_ptr.h +0 -445
  2794. data/src/core/lib/gprpp/ref_counted_string.cc +0 -43
  2795. data/src/core/lib/gprpp/ref_counted_string.h +0 -161
  2796. data/src/core/lib/gprpp/single_set_ptr.h +0 -88
  2797. data/src/core/lib/gprpp/sorted_pack.h +0 -89
  2798. data/src/core/lib/gprpp/stat.h +0 -36
  2799. data/src/core/lib/gprpp/status_helper.cc +0 -453
  2800. data/src/core/lib/gprpp/status_helper.h +0 -190
  2801. data/src/core/lib/gprpp/strerror.cc +0 -41
  2802. data/src/core/lib/gprpp/strerror.h +0 -29
  2803. data/src/core/lib/gprpp/sync.h +0 -200
  2804. data/src/core/lib/gprpp/table.h +0 -452
  2805. data/src/core/lib/gprpp/tchar.cc +0 -49
  2806. data/src/core/lib/gprpp/tchar.h +0 -33
  2807. data/src/core/lib/gprpp/thd.h +0 -195
  2808. data/src/core/lib/gprpp/time.cc +0 -242
  2809. data/src/core/lib/gprpp/time.h +0 -384
  2810. data/src/core/lib/gprpp/time_averaged_stats.cc +0 -60
  2811. data/src/core/lib/gprpp/time_averaged_stats.h +0 -79
  2812. data/src/core/lib/gprpp/time_util.cc +0 -82
  2813. data/src/core/lib/gprpp/time_util.h +0 -41
  2814. data/src/core/lib/gprpp/type_list.h +0 -32
  2815. data/src/core/lib/gprpp/unique_type_name.h +0 -104
  2816. data/src/core/lib/gprpp/uuid_v4.cc +0 -37
  2817. data/src/core/lib/gprpp/uuid_v4.h +0 -36
  2818. data/src/core/lib/gprpp/validation_errors.cc +0 -65
  2819. data/src/core/lib/gprpp/validation_errors.h +0 -134
  2820. data/src/core/lib/gprpp/windows/directory_reader.cc +0 -81
  2821. data/src/core/lib/gprpp/windows/env.cc +0 -56
  2822. data/src/core/lib/gprpp/windows/stat.cc +0 -52
  2823. data/src/core/lib/gprpp/windows/thd.cc +0 -184
  2824. data/src/core/lib/gprpp/work_serializer.cc +0 -558
  2825. data/src/core/lib/gprpp/work_serializer.h +0 -106
  2826. data/src/core/lib/gprpp/xxhash_inline.h +0 -29
  2827. data/src/core/lib/http/format_request.cc +0 -136
  2828. data/src/core/lib/http/format_request.h +0 -37
  2829. data/src/core/lib/http/httpcli.cc +0 -392
  2830. data/src/core/lib/http/httpcli.h +0 -267
  2831. data/src/core/lib/http/httpcli_security_connector.cc +0 -213
  2832. data/src/core/lib/http/httpcli_ssl_credentials.h +0 -38
  2833. data/src/core/lib/http/parser.cc +0 -451
  2834. data/src/core/lib/http/parser.h +0 -129
  2835. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  2836. data/src/core/lib/iomgr/gethostname.h +0 -26
  2837. data/src/core/lib/iomgr/gethostname_fallback.cc +0 -30
  2838. data/src/core/lib/iomgr/gethostname_host_name_max.cc +0 -40
  2839. data/src/core/lib/iomgr/gethostname_sysconf.cc +0 -40
  2840. data/src/core/lib/iomgr/grpc_if_nametoindex.h +0 -30
  2841. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +0 -43
  2842. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +0 -39
  2843. data/src/core/lib/json/json.h +0 -29
  2844. data/src/core/lib/json/json_args.h +0 -34
  2845. data/src/core/lib/json/json_channel_args.h +0 -42
  2846. data/src/core/lib/json/json_object_loader.cc +0 -215
  2847. data/src/core/lib/json/json_object_loader.h +0 -645
  2848. data/src/core/lib/json/json_reader.cc +0 -956
  2849. data/src/core/lib/json/json_reader.h +0 -34
  2850. data/src/core/lib/json/json_util.cc +0 -101
  2851. data/src/core/lib/json/json_util.h +0 -164
  2852. data/src/core/lib/json/json_writer.cc +0 -339
  2853. data/src/core/lib/json/json_writer.h +0 -33
  2854. data/src/core/lib/matchers/matchers.cc +0 -330
  2855. data/src/core/lib/matchers/matchers.h +0 -163
  2856. data/src/core/lib/promise/trace.cc +0 -20
  2857. data/src/core/lib/promise/trace.h +0 -24
  2858. data/src/core/lib/resource_quota/trace.cc +0 -19
  2859. data/src/core/lib/resource_quota/trace.h +0 -24
  2860. data/src/core/lib/slice/slice_refcount.cc +0 -20
  2861. data/src/core/lib/surface/api_trace.cc +0 -25
  2862. data/src/core/lib/surface/api_trace.h +0 -52
  2863. data/src/core/lib/surface/call_trace.h +0 -24
  2864. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  2865. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  2866. data/src/core/lib/transport/batch_builder.cc +0 -172
  2867. data/src/core/lib/transport/batch_builder.h +0 -474
  2868. data/src/core/lib/uri/uri_parser.cc +0 -372
  2869. data/src/core/lib/uri/uri_parser.h +0 -101
  2870. data/src/core/resolver/binder/binder_resolver.cc +0 -154
  2871. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  2872. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  2873. data/src/core/xds/grpc/upb_utils.h +0 -45
  2874. data/src/core/xds/grpc/xds_http_filters.cc +0 -116
  2875. data/src/core/xds/grpc/xds_http_filters.h +0 -182
  2876. data/src/core/xds/xds_client/xds_client_stats.cc +0 -174
  2877. data/src/core/xds/xds_client/xds_client_stats.h +0 -258
  2878. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2879. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +0 -284
  2880. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +0 -95
  2881. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -89
  2882. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +0 -84
  2883. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +0 -151
  2884. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +0 -85
  2885. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +0 -465
  2886. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +0 -279
  2887. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +0 -235
  2888. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +0 -74
  2889. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +0 -457
  2890. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +0 -245
  2891. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +0 -259
  2892. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +0 -214
  2893. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -183
  2894. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -397
  2895. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +0 -103
  2896. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +0 -98
  2897. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +0 -105
  2898. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +0 -94
  2899. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +0 -241
  2900. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +0 -973
  2901. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +0 -708
  2902. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +0 -212
  2903. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +0 -317
  2904. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -126
  2905. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +0 -268
  2906. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +0 -475
  2907. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +0 -726
  2908. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +0 -309
  2909. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +0 -544
  2910. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +0 -92
  2911. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -235
  2912. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +0 -334
  2913. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c +0 -192
  2914. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +0 -480
  2915. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -102
  2916. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +0 -189
  2917. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +0 -133
  2918. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +0 -169
  2919. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +0 -57
  2920. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +0 -465
  2921. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +0 -158
  2922. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +0 -53
  2923. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +0 -266
  2924. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +0 -718
  2925. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +0 -913
  2926. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +0 -156
  2927. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -224
  2928. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +0 -127
  2929. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +0 -152
  2930. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +0 -284
  2931. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +0 -841
  2932. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +0 -341
  2933. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +0 -228
  2934. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +0 -90
  2935. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +0 -455
  2936. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +0 -94
  2937. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +0 -598
  2938. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +0 -237
  2939. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +0 -514
  2940. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +0 -647
  2941. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  2942. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +0 -75
  2943. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -55
  2944. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -62
  2945. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +0 -61
  2946. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +0 -93
  2947. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +0 -41
  2948. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -54
  2949. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -148
  2950. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -292
  2951. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +0 -242
  2952. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +0 -2157
  2953. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +0 -18
  2954. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +0 -523
  2955. data/third_party/boringssl-with-bazel/src/crypto/des/des.c +0 -871
  2956. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +0 -165
  2957. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +0 -480
  2958. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -266
  2959. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +0 -990
  2960. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -421
  2961. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +0 -572
  2962. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +0 -96
  2963. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +0 -508
  2964. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -78
  2965. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +0 -124
  2966. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +0 -265
  2967. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +0 -91
  2968. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +0 -903
  2969. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +0 -430
  2970. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +0 -547
  2971. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +0 -483
  2972. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +0 -137
  2973. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +0 -120
  2974. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +0 -338
  2975. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +0 -274
  2976. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +0 -332
  2977. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +0 -100
  2978. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +0 -224
  2979. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +0 -232
  2980. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +0 -646
  2981. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +0 -241
  2982. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +0 -106
  2983. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +0 -236
  2984. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +0 -146
  2985. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +0 -381
  2986. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +0 -209
  2987. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +0 -156
  2988. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +0 -236
  2989. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -106
  2990. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +0 -1281
  2991. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +0 -242
  2992. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +0 -124
  2993. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +0 -275
  2994. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.c +0 -310
  2995. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -541
  2996. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +0 -428
  2997. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +0 -267
  2998. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +0 -201
  2999. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -234
  3000. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +0 -909
  3001. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +0 -87
  3002. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +0 -1276
  3003. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -397
  3004. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +0 -331
  3005. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +0 -624
  3006. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.c +0 -146
  3007. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +0 -532
  3008. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +0 -222
  3009. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +0 -744
  3010. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -1077
  3011. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +0 -356
  3012. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +0 -137
  3013. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +0 -363
  3014. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +0 -499
  3015. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +0 -287
  3016. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +0 -717
  3017. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +0 -1463
  3018. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.c +0 -446
  3019. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.c +0 -322
  3020. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +0 -245
  3021. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +0 -489
  3022. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +0 -288
  3023. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +0 -304
  3024. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.c +0 -267
  3025. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +0 -1043
  3026. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -557
  3027. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +0 -491
  3028. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +0 -104
  3029. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +0 -359
  3030. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +0 -1163
  3031. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +0 -637
  3032. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +0 -749
  3033. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +0 -173
  3034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +0 -336
  3035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +0 -269
  3036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +0 -255
  3037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -264
  3038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +0 -130
  3039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +0 -372
  3040. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +0 -32
  3041. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +0 -112
  3042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +0 -256
  3043. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +0 -240
  3044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +0 -37
  3045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +0 -284
  3046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +0 -164
  3047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +0 -200
  3048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +0 -196
  3049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +0 -743
  3050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +0 -302
  3051. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -428
  3052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +0 -87
  3053. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +0 -90
  3054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +0 -220
  3055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +0 -197
  3056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +0 -68
  3057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +0 -64
  3058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -493
  3059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +0 -328
  3060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -241
  3061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +0 -423
  3062. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +0 -1038
  3063. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +0 -1351
  3064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +0 -119
  3065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +0 -1064
  3066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +0 -328
  3067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +0 -439
  3068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +0 -359
  3069. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +0 -537
  3070. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +0 -218
  3071. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +0 -801
  3072. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +0 -2234
  3073. data/third_party/boringssl-with-bazel/src/crypto/keccak/internal.h +0 -70
  3074. data/third_party/boringssl-with-bazel/src/crypto/keccak/keccak.c +0 -279
  3075. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +0 -844
  3076. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +0 -350
  3077. data/third_party/boringssl-with-bazel/src/crypto/mem.c +0 -609
  3078. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +0 -564
  3079. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c +0 -122
  3080. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -243
  3081. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -294
  3082. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -790
  3083. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +0 -87
  3084. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -251
  3085. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -183
  3086. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -64
  3087. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -64
  3088. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +0 -193
  3089. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -523
  3090. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +0 -316
  3091. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -527
  3092. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +0 -1352
  3093. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +0 -314
  3094. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +0 -308
  3095. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +0 -847
  3096. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +0 -261
  3097. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +0 -57
  3098. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +0 -44
  3099. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +0 -52
  3100. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +0 -34
  3101. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +0 -158
  3102. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +0 -74
  3103. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +0 -38
  3104. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +0 -95
  3105. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c +0 -98
  3106. data/third_party/boringssl-with-bazel/src/crypto/refcount.c +0 -59
  3107. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -77
  3108. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +0 -324
  3109. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +0 -570
  3110. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +0 -22
  3111. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +0 -79
  3112. data/third_party/boringssl-with-bazel/src/crypto/spx/address.c +0 -101
  3113. data/third_party/boringssl-with-bazel/src/crypto/spx/address.h +0 -50
  3114. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.c +0 -133
  3115. data/third_party/boringssl-with-bazel/src/crypto/spx/fors.h +0 -54
  3116. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.c +0 -150
  3117. data/third_party/boringssl-with-bazel/src/crypto/spx/merkle.h +0 -61
  3118. data/third_party/boringssl-with-bazel/src/crypto/spx/params.h +0 -71
  3119. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +0 -140
  3120. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.c +0 -53
  3121. data/third_party/boringssl-with-bazel/src/crypto/spx/spx_util.h +0 -44
  3122. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.c +0 -136
  3123. data/third_party/boringssl-with-bazel/src/crypto/spx/thash.h +0 -70
  3124. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.c +0 -135
  3125. data/third_party/boringssl-with-bazel/src/crypto/spx/wots.h +0 -45
  3126. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +0 -534
  3127. data/third_party/boringssl-with-bazel/src/crypto/thread.c +0 -110
  3128. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -51
  3129. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -150
  3130. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +0 -236
  3131. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +0 -1668
  3132. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +0 -687
  3133. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +0 -1267
  3134. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +0 -94
  3135. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +0 -136
  3136. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +0 -116
  3137. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -178
  3138. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +0 -585
  3139. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +0 -400
  3140. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -269
  3141. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +0 -79
  3142. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +0 -227
  3143. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +0 -786
  3144. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +0 -401
  3145. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -145
  3146. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +0 -245
  3147. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -329
  3148. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +0 -121
  3149. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.c +0 -221
  3150. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.c +0 -73
  3151. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.c +0 -634
  3152. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.c +0 -135
  3153. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.c +0 -141
  3154. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.c +0 -416
  3155. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +0 -482
  3156. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +0 -598
  3157. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.c +0 -112
  3158. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.c +0 -154
  3159. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.c +0 -270
  3160. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.c +0 -122
  3161. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +0 -211
  3162. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.c +0 -121
  3163. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +0 -344
  3164. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.c +0 -555
  3165. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.c +0 -81
  3166. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.c +0 -142
  3167. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.c +0 -150
  3168. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.c +0 -224
  3169. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.c +0 -624
  3170. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.c +0 -170
  3171. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +0 -1357
  3172. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -89
  3173. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -227
  3174. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +0 -280
  3175. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +0 -108
  3176. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +0 -86
  3177. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +0 -181
  3178. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -609
  3179. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +0 -206
  3180. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +0 -299
  3181. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +0 -240
  3182. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +0 -160
  3183. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +0 -189
  3184. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +0 -291
  3185. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +0 -1648
  3186. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +0 -440
  3187. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +0 -277
  3188. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +0 -407
  3189. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +0 -109
  3190. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +0 -133
  3191. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +0 -149
  3192. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -356
  3193. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +0 -97
  3194. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +0 -384
  3195. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +0 -78
  3196. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +0 -527
  3197. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -210
  3198. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +0 -116
  3199. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +0 -93
  3200. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +0 -79
  3201. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +0 -70
  3202. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +0 -544
  3203. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +0 -209
  3204. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.c +0 -1514
  3205. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/spx.h +0 -90
@@ -16,47 +16,49 @@
16
16
 
17
17
  #include "src/core/xds/xds_client/xds_client.h"
18
18
 
19
+ #include <grpc/event_engine/event_engine.h>
20
+ #include <grpc/support/port_platform.h>
19
21
  #include <inttypes.h>
20
22
  #include <string.h>
21
23
 
22
24
  #include <algorithm>
23
25
  #include <functional>
24
26
  #include <memory>
27
+ #include <optional>
25
28
  #include <string>
26
29
  #include <type_traits>
27
30
  #include <vector>
28
31
 
29
32
  #include "absl/cleanup/cleanup.h"
30
33
  #include "absl/log/check.h"
34
+ #include "absl/log/log.h"
31
35
  #include "absl/strings/match.h"
32
36
  #include "absl/strings/str_cat.h"
33
37
  #include "absl/strings/str_join.h"
34
38
  #include "absl/strings/str_split.h"
35
39
  #include "absl/strings/string_view.h"
36
40
  #include "absl/strings/strip.h"
37
- #include "absl/types/optional.h"
38
41
  #include "envoy/config/core/v3/base.upb.h"
39
- #include "envoy/service/status/v3/csds.upb.h"
42
+ #include "envoy/service/discovery/v3/discovery.upb.h"
43
+ #include "envoy/service/discovery/v3/discovery.upbdefs.h"
40
44
  #include "google/protobuf/any.upb.h"
41
45
  #include "google/protobuf/timestamp.upb.h"
42
- #include "upb/base/string_view.h"
43
- #include "upb/mem/arena.h"
44
-
45
- #include <grpc/event_engine/event_engine.h>
46
- #include <grpc/support/log.h>
47
- #include <grpc/support/port_platform.h>
48
-
49
- #include "src/core/lib/backoff/backoff.h"
50
- #include "src/core/lib/gprpp/debug_location.h"
51
- #include "src/core/lib/gprpp/orphanable.h"
52
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
53
- #include "src/core/lib/gprpp/sync.h"
46
+ #include "google/rpc/status.upb.h"
54
47
  #include "src/core/lib/iomgr/exec_ctx.h"
55
- #include "src/core/lib/uri/uri_parser.h"
56
- #include "src/core/xds/grpc/upb_utils.h"
48
+ #include "src/core/util/backoff.h"
49
+ #include "src/core/util/debug_location.h"
50
+ #include "src/core/util/orphanable.h"
51
+ #include "src/core/util/ref_counted_ptr.h"
52
+ #include "src/core/util/sync.h"
53
+ #include "src/core/util/upb_utils.h"
54
+ #include "src/core/util/uri.h"
57
55
  #include "src/core/xds/xds_client/xds_api.h"
58
56
  #include "src/core/xds/xds_client/xds_bootstrap.h"
59
- #include "src/core/xds/xds_client/xds_client_stats.h"
57
+ #include "src/core/xds/xds_client/xds_locality.h"
58
+ #include "upb/base/string_view.h"
59
+ #include "upb/mem/arena.h"
60
+ #include "upb/reflection/def.h"
61
+ #include "upb/text/encode.h"
60
62
 
61
63
  #define GRPC_XDS_INITIAL_CONNECT_BACKOFF_SECONDS 1
62
64
  #define GRPC_XDS_RECONNECT_BACKOFF_MULTIPLIER 1.6
@@ -68,15 +70,15 @@ namespace grpc_core {
68
70
 
69
71
  using ::grpc_event_engine::experimental::EventEngine;
70
72
 
71
- TraceFlag grpc_xds_client_trace(false, "xds_client");
72
- TraceFlag grpc_xds_client_refcount_trace(false, "xds_client_refcount");
73
-
74
73
  //
75
74
  // Internal class declarations
76
75
  //
77
76
 
78
77
  // An xds call wrapper that can restart a call upon failure. Holds a ref to
79
78
  // the xds channel. The template parameter is the kind of wrapped xds call.
79
+ // TODO(roth): This is basically the same code as in LrsClient, and
80
+ // probably very similar to many other places in the codebase.
81
+ // Consider refactoring this into a common utility library somehow.
80
82
  template <typename T>
81
83
  class XdsClient::XdsChannel::RetryableCall final
82
84
  : public InternallyRefCounted<RetryableCall<T>> {
@@ -109,7 +111,7 @@ class XdsClient::XdsChannel::RetryableCall final
109
111
 
110
112
  // Retry state.
111
113
  BackOff backoff_;
112
- absl::optional<EventEngine::TaskHandle> timer_handle_
114
+ std::optional<EventEngine::TaskHandle> timer_handle_
113
115
  ABSL_GUARDED_BY(&XdsClient::mu_);
114
116
 
115
117
  bool shutting_down_ = false;
@@ -122,7 +124,10 @@ class XdsClient::XdsChannel::AdsCall final
122
124
  // The ctor and dtor should not be used directly.
123
125
  explicit AdsCall(RefCountedPtr<RetryableCall<AdsCall>> retryable_call);
124
126
 
125
- void Orphan() override;
127
+ // Disable thread-safety analysis because this method is called via
128
+ // OrphanablePtr<>, but there's no way to pass the lock annotation
129
+ // through there.
130
+ void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS;
126
131
 
127
132
  RetryableCall<AdsCall>* retryable_call() const {
128
133
  return retryable_call_.get();
@@ -143,44 +148,6 @@ class XdsClient::XdsChannel::AdsCall final
143
148
  private:
144
149
  class AdsReadDelayHandle;
145
150
 
146
- class AdsResponseParser final : public XdsApi::AdsResponseParserInterface {
147
- public:
148
- struct Result {
149
- const XdsResourceType* type;
150
- std::string type_url;
151
- std::string version;
152
- std::string nonce;
153
- std::vector<std::string> errors;
154
- std::map<std::string /*authority*/, std::set<XdsResourceKey>>
155
- resources_seen;
156
- uint64_t num_valid_resources = 0;
157
- uint64_t num_invalid_resources = 0;
158
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
159
- };
160
-
161
- explicit AdsResponseParser(AdsCall* ads_call) : ads_call_(ads_call) {}
162
-
163
- absl::Status ProcessAdsResponseFields(AdsResponseFields fields) override
164
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
165
-
166
- void ParseResource(upb_Arena* arena, size_t idx, absl::string_view type_url,
167
- absl::string_view resource_name,
168
- absl::string_view serialized_resource) override
169
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
170
-
171
- void ResourceWrapperParsingFailed(size_t idx,
172
- absl::string_view message) override;
173
-
174
- Result TakeResult() { return std::move(result_); }
175
-
176
- private:
177
- XdsClient* xds_client() const { return ads_call_->xds_client(); }
178
-
179
- AdsCall* ads_call_;
180
- const Timestamp update_time_ = Timestamp::Now();
181
- Result result_;
182
- };
183
-
184
151
  class ResourceTimer final : public InternallyRefCounted<ResourceTimer> {
185
152
  public:
186
153
  ResourceTimer(const XdsResourceType* type, const XdsResourceName& name)
@@ -213,6 +180,7 @@ class XdsClient::XdsChannel::AdsCall final
213
180
  if (timer_handle_.has_value() &&
214
181
  ads_call_->xds_client()->engine()->Cancel(*timer_handle_)) {
215
182
  timer_handle_.reset();
183
+ ads_call_.reset();
216
184
  }
217
185
  }
218
186
 
@@ -239,43 +207,58 @@ class XdsClient::XdsChannel::AdsCall final
239
207
  // optimize by not resending the resource that we already have.
240
208
  auto& authority_state =
241
209
  ads_call->xds_client()->authority_state_map_[name_.authority];
242
- ResourceState& state = authority_state.resource_map[type_][name_.key];
243
- if (state.resource != nullptr) return;
210
+ ResourceState& state = authority_state.type_map[type_][name_.key];
211
+ if (state.HasResource()) return;
244
212
  // Start timer.
245
213
  ads_call_ = std::move(ads_call);
214
+ Duration timeout = ads_call_->xds_client()->request_timeout_;
215
+ if (timeout == Duration::Zero()) {
216
+ timeout = XdsDataErrorHandlingEnabled() &&
217
+ ads_call_->xds_channel()
218
+ ->server_.ResourceTimerIsTransientFailure()
219
+ ? Duration::Seconds(30)
220
+ : Duration::Seconds(15);
221
+ }
246
222
  timer_handle_ = ads_call_->xds_client()->engine()->RunAfter(
247
- ads_call_->xds_client()->request_timeout_,
248
- [self = Ref(DEBUG_LOCATION, "timer")]() {
249
- ApplicationCallbackExecCtx callback_exec_ctx;
223
+ timeout, [self = Ref(DEBUG_LOCATION, "timer")]() {
250
224
  ExecCtx exec_ctx;
251
225
  self->OnTimer();
252
226
  });
253
227
  }
254
228
 
255
229
  void OnTimer() {
256
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
257
- gpr_log(GPR_INFO,
258
- "[xds_client %p] xds server %s: timeout obtaining resource "
259
- "{type=%s name=%s} from xds server",
260
- ads_call_->xds_client(),
261
- ads_call_->xds_channel()->server_.server_uri().c_str(),
262
- std::string(type_->type_url()).c_str(),
263
- XdsClient::ConstructFullXdsResourceName(
264
- name_.authority, type_->type_url(), name_.key)
265
- .c_str());
266
- }
267
230
  {
268
231
  MutexLock lock(&ads_call_->xds_client()->mu_);
269
232
  timer_handle_.reset();
270
- resource_seen_ = true;
271
233
  auto& authority_state =
272
234
  ads_call_->xds_client()->authority_state_map_[name_.authority];
273
- ResourceState& state = authority_state.resource_map[type_][name_.key];
274
- state.meta.client_status = XdsApi::ResourceMetadata::DOES_NOT_EXIST;
275
- ads_call_->xds_client()->NotifyWatchersOnResourceDoesNotExist(
276
- state.watchers, ReadDelayHandle::NoWait());
235
+ ResourceState& state = authority_state.type_map[type_][name_.key];
236
+ // We might have received the resource after the timer fired but before
237
+ // the callback ran.
238
+ if (!state.HasResource()) {
239
+ GRPC_TRACE_LOG(xds_client, INFO)
240
+ << "[xds_client " << ads_call_->xds_client() << "] xds server "
241
+ << ads_call_->xds_channel()->server_.server_uri()
242
+ << ": timeout obtaining resource {type=" << type_->type_url()
243
+ << " name="
244
+ << XdsClient::ConstructFullXdsResourceName(
245
+ name_.authority, type_->type_url(), name_.key)
246
+ << "} from xds server";
247
+ resource_seen_ = true;
248
+ if (XdsDataErrorHandlingEnabled() &&
249
+ ads_call_->xds_channel()
250
+ ->server_.ResourceTimerIsTransientFailure()) {
251
+ state.SetTimeout(
252
+ absl::StrCat("timeout obtaining resource from xDS server ",
253
+ ads_call_->xds_channel()->server_uri()));
254
+ } else {
255
+ state.SetDoesNotExistOnTimeout();
256
+ }
257
+ ads_call_->xds_client()->NotifyWatchersOnResourceChanged(
258
+ state.failed_status(), state.watchers(),
259
+ ReadDelayHandle::NoWait());
260
+ }
277
261
  }
278
- ads_call_->xds_client()->work_serializer_.DrainQueue();
279
262
  ads_call_.reset();
280
263
  }
281
264
 
@@ -290,7 +273,7 @@ class XdsClient::XdsChannel::AdsCall final
290
273
  // stream or (b) declared the resource to not exist due to the timer
291
274
  // firing.
292
275
  bool resource_seen_ ABSL_GUARDED_BY(&XdsClient::mu_) = false;
293
- absl::optional<EventEngine::TaskHandle> timer_handle_
276
+ std::optional<EventEngine::TaskHandle> timer_handle_
294
277
  ABSL_GUARDED_BY(&XdsClient::mu_);
295
278
  };
296
279
 
@@ -323,9 +306,44 @@ class XdsClient::XdsChannel::AdsCall final
323
306
  subscribed_resources;
324
307
  };
325
308
 
309
+ std::string CreateAdsRequest(absl::string_view type_url,
310
+ absl::string_view version,
311
+ absl::string_view nonce,
312
+ const std::vector<std::string>& resource_names,
313
+ absl::Status status) const
314
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
315
+
326
316
  void SendMessageLocked(const XdsResourceType* type)
327
317
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
328
318
 
319
+ struct DecodeContext {
320
+ upb::Arena arena;
321
+ const XdsResourceType* type;
322
+ std::string type_url;
323
+ std::string version;
324
+ std::string nonce;
325
+ std::vector<std::string> errors;
326
+ std::map<std::string /*authority*/, std::set<XdsResourceKey>>
327
+ resources_seen;
328
+ uint64_t num_valid_resources = 0;
329
+ uint64_t num_invalid_resources = 0;
330
+ Timestamp update_time = Timestamp::Now();
331
+ RefCountedPtr<ReadDelayHandle> read_delay_handle;
332
+ };
333
+ void ParseResource(size_t idx, absl::string_view type_url,
334
+ absl::string_view resource_name,
335
+ absl::string_view serialized_resource,
336
+ DecodeContext* context)
337
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
338
+ void HandleServerReportedResourceError(size_t idx,
339
+ absl::string_view resource_name,
340
+ absl::Status status,
341
+ DecodeContext* context)
342
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
343
+ absl::Status DecodeAdsResponse(absl::string_view encoded_response,
344
+ DecodeContext* context)
345
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
346
+
329
347
  void OnRequestSent(bool ok);
330
348
  void OnRecvMessage(absl::string_view payload);
331
349
  void OnStatusReceived(absl::Status status);
@@ -356,98 +374,22 @@ class XdsClient::XdsChannel::AdsCall final
356
374
  std::map<const XdsResourceType*, ResourceTypeState> state_map_;
357
375
  };
358
376
 
359
- // Contains an LRS call to the xds server.
360
- class XdsClient::XdsChannel::LrsCall final
361
- : public InternallyRefCounted<LrsCall> {
362
- public:
363
- // The ctor and dtor should not be used directly.
364
- explicit LrsCall(RefCountedPtr<RetryableCall<LrsCall>> retryable_call);
377
+ //
378
+ // XdsClient::XdsChannel::ConnectivityFailureWatcher
379
+ //
365
380
 
366
- void Orphan() override;
381
+ class XdsClient::XdsChannel::ConnectivityFailureWatcher
382
+ : public XdsTransportFactory::XdsTransport::ConnectivityFailureWatcher {
383
+ public:
384
+ explicit ConnectivityFailureWatcher(WeakRefCountedPtr<XdsChannel> xds_channel)
385
+ : xds_channel_(std::move(xds_channel)) {}
367
386
 
368
- RetryableCall<LrsCall>* retryable_call() { return retryable_call_.get(); }
369
- XdsChannel* xds_channel() const { return retryable_call_->xds_channel(); }
370
- XdsClient* xds_client() const { return xds_channel()->xds_client(); }
371
- bool seen_response() const { return seen_response_; }
387
+ void OnConnectivityFailure(absl::Status status) override {
388
+ xds_channel_->OnConnectivityFailure(std::move(status));
389
+ }
372
390
 
373
391
  private:
374
- class StreamEventHandler final
375
- : public XdsTransportFactory::XdsTransport::StreamingCall::EventHandler {
376
- public:
377
- explicit StreamEventHandler(RefCountedPtr<LrsCall> lrs_call)
378
- : lrs_call_(std::move(lrs_call)) {}
379
-
380
- void OnRequestSent(bool /*ok*/) override { lrs_call_->OnRequestSent(); }
381
- void OnRecvMessage(absl::string_view payload) override {
382
- lrs_call_->OnRecvMessage(payload);
383
- }
384
- void OnStatusReceived(absl::Status status) override {
385
- lrs_call_->OnStatusReceived(std::move(status));
386
- }
387
-
388
- private:
389
- RefCountedPtr<LrsCall> lrs_call_;
390
- };
391
-
392
- // A repeating timer for a particular duration.
393
- class Timer final : public InternallyRefCounted<Timer> {
394
- public:
395
- explicit Timer(RefCountedPtr<LrsCall> lrs_call)
396
- : lrs_call_(std::move(lrs_call)) {}
397
- ~Timer() override { lrs_call_.reset(DEBUG_LOCATION, "LRS timer"); }
398
-
399
- // Disable thread-safety analysis because this method is called via
400
- // OrphanablePtr<>, but there's no way to pass the lock annotation
401
- // through there.
402
- void Orphan() override ABSL_NO_THREAD_SAFETY_ANALYSIS;
403
-
404
- void ScheduleNextReportLocked()
405
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
406
-
407
- private:
408
- bool IsCurrentTimerOnCall() const {
409
- return this == lrs_call_->timer_.get();
410
- }
411
- XdsClient* xds_client() const { return lrs_call_->xds_client(); }
412
-
413
- void OnNextReportTimer();
414
-
415
- // The owning LRS call.
416
- RefCountedPtr<LrsCall> lrs_call_;
417
-
418
- absl::optional<EventEngine::TaskHandle> timer_handle_
419
- ABSL_GUARDED_BY(&XdsClient::mu_);
420
- };
421
-
422
- void MaybeScheduleNextReportLocked()
423
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
424
-
425
- void SendReportLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
426
-
427
- void SendMessageLocked(std::string payload)
428
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
429
-
430
- void OnRequestSent();
431
- void OnRecvMessage(absl::string_view payload);
432
- void OnStatusReceived(absl::Status status);
433
-
434
- bool IsCurrentCallOnChannel() const;
435
-
436
- // The owning RetryableCall<>.
437
- RefCountedPtr<RetryableCall<LrsCall>> retryable_call_;
438
-
439
- OrphanablePtr<XdsTransportFactory::XdsTransport::StreamingCall>
440
- streaming_call_;
441
-
442
- bool seen_response_ = false;
443
- bool send_message_pending_ ABSL_GUARDED_BY(&XdsClient::mu_) = false;
444
-
445
- // Load reporting state.
446
- bool send_all_clusters_ = false;
447
- std::set<std::string> cluster_names_; // Asked for by the LRS server.
448
- Duration load_reporting_interval_;
449
- bool last_report_counters_were_zero_ = false;
450
- OrphanablePtr<Timer> timer_;
392
+ WeakRefCountedPtr<XdsChannel> xds_channel_;
451
393
  };
452
394
 
453
395
  //
@@ -456,32 +398,30 @@ class XdsClient::XdsChannel::LrsCall final
456
398
 
457
399
  XdsClient::XdsChannel::XdsChannel(WeakRefCountedPtr<XdsClient> xds_client,
458
400
  const XdsBootstrap::XdsServer& server)
459
- : DualRefCounted<XdsChannel>(
460
- GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "XdsChannel"
461
- : nullptr),
401
+ : DualRefCounted<XdsChannel>(GRPC_TRACE_FLAG_ENABLED(xds_client_refcount)
402
+ ? "XdsChannel"
403
+ : nullptr),
462
404
  xds_client_(std::move(xds_client)),
463
405
  server_(server) {
464
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
465
- gpr_log(GPR_INFO, "[xds_client %p] creating channel %p for server %s",
466
- xds_client_.get(), this, server.server_uri().c_str());
467
- }
406
+ GRPC_TRACE_LOG(xds_client, INFO)
407
+ << "[xds_client " << xds_client_.get() << "] creating channel " << this
408
+ << " for server " << server.server_uri();
468
409
  absl::Status status;
469
- transport_ = xds_client_->transport_factory_->Create(
470
- server,
471
- [self = WeakRef(DEBUG_LOCATION, "OnConnectivityFailure")](
472
- absl::Status status) {
473
- self->OnConnectivityFailure(std::move(status));
474
- },
475
- &status);
410
+ transport_ = xds_client_->transport_factory_->GetTransport(server, &status);
476
411
  CHECK(transport_ != nullptr);
477
- if (!status.ok()) SetChannelStatusLocked(std::move(status));
412
+ if (!status.ok()) {
413
+ SetChannelStatusLocked(std::move(status));
414
+ } else {
415
+ failure_watcher_ = MakeRefCounted<ConnectivityFailureWatcher>(
416
+ WeakRef(DEBUG_LOCATION, "OnConnectivityFailure"));
417
+ transport_->StartConnectivityFailureWatch(failure_watcher_);
418
+ }
478
419
  }
479
420
 
480
421
  XdsClient::XdsChannel::~XdsChannel() {
481
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
482
- gpr_log(GPR_INFO, "[xds_client %p] destroying xds channel %p for server %s",
483
- xds_client(), this, server_.server_uri().c_str());
484
- }
422
+ GRPC_TRACE_LOG(xds_client, INFO)
423
+ << "[xds_client " << xds_client() << "] destroying xds channel " << this
424
+ << " for server " << server_.server_uri();
485
425
  xds_client_.reset(DEBUG_LOCATION, "XdsChannel");
486
426
  }
487
427
 
@@ -490,47 +430,30 @@ XdsClient::XdsChannel::~XdsChannel() {
490
430
  // called from DualRefCounted::Unref, which cannot have a lock annotation for
491
431
  // a lock in this subclass.
492
432
  void XdsClient::XdsChannel::Orphaned() ABSL_NO_THREAD_SAFETY_ANALYSIS {
493
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
494
- gpr_log(GPR_INFO, "[xds_client %p] orphaning xds channel %p for server %s",
495
- xds_client(), this, server_.server_uri().c_str());
496
- }
433
+ GRPC_TRACE_LOG(xds_client, INFO)
434
+ << "[xds_client " << xds_client() << "] orphaning xds channel " << this
435
+ << " for server " << server_.server_uri();
497
436
  shutting_down_ = true;
437
+ if (failure_watcher_ != nullptr) {
438
+ transport_->StopConnectivityFailureWatch(failure_watcher_);
439
+ failure_watcher_.reset();
440
+ }
498
441
  transport_.reset();
499
442
  // At this time, all strong refs are removed, remove from channel map to
500
443
  // prevent subsequent subscription from trying to use this XdsChannel as
501
444
  // it is shutting down.
502
445
  xds_client_->xds_channel_map_.erase(server_.Key());
503
446
  ads_call_.reset();
504
- lrs_call_.reset();
505
447
  }
506
448
 
507
449
  void XdsClient::XdsChannel::ResetBackoff() { transport_->ResetBackoff(); }
508
450
 
509
- XdsClient::XdsChannel::AdsCall* XdsClient::XdsChannel::ads_call() const {
510
- return ads_call_->call();
511
- }
512
-
513
- XdsClient::XdsChannel::LrsCall* XdsClient::XdsChannel::lrs_call() const {
514
- return lrs_call_->call();
515
- }
516
-
517
- void XdsClient::XdsChannel::MaybeStartLrsCall() {
518
- if (lrs_call_ != nullptr) return;
519
- lrs_call_.reset(
520
- new RetryableCall<LrsCall>(WeakRef(DEBUG_LOCATION, "XdsChannel+lrs")));
521
- }
522
-
523
- void XdsClient::XdsChannel::StopLrsCallLocked() {
524
- xds_client_->xds_load_report_server_map_.erase(server_.Key());
525
- lrs_call_.reset();
526
- }
527
-
528
451
  void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
529
452
  const XdsResourceName& name) {
530
453
  if (ads_call_ == nullptr) {
531
454
  // Start the ADS call if this is the first request.
532
- ads_call_.reset(
533
- new RetryableCall<AdsCall>(WeakRef(DEBUG_LOCATION, "XdsChannel+ads")));
455
+ ads_call_ = MakeOrphanable<RetryableCall<AdsCall>>(
456
+ WeakRef(DEBUG_LOCATION, "XdsChannel+ads"));
534
457
  // Note: AdsCall's ctor will automatically subscribe to all
535
458
  // resources that the XdsClient already has watchers for, so we can
536
459
  // return here.
@@ -538,9 +461,9 @@ void XdsClient::XdsChannel::SubscribeLocked(const XdsResourceType* type,
538
461
  }
539
462
  // If the ADS call is in backoff state, we don't need to do anything now
540
463
  // because when the call is restarted it will resend all necessary requests.
541
- if (ads_call() == nullptr) return;
464
+ if (ads_call_->call() == nullptr) return;
542
465
  // Subscribe to this resource if the ADS call is active.
543
- ads_call()->SubscribeLocked(type, name, /*delay_send=*/false);
466
+ ads_call_->call()->SubscribeLocked(type, name, /*delay_send=*/false);
544
467
  }
545
468
 
546
469
  void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
@@ -553,6 +476,12 @@ void XdsClient::XdsChannel::UnsubscribeLocked(const XdsResourceType* type,
553
476
  if (!call->HasSubscribedResources()) {
554
477
  ads_call_.reset();
555
478
  }
479
+ } else {
480
+ // If there is currently no ADS call because we're in retry backoff,
481
+ // then we immediately trigger deletion of unsubscribed cache entries.
482
+ // This may orphan the XdsChannel, which would stop the retry
483
+ // timer, since we would no longer need to restart the ADS call.
484
+ xds_client_->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(this, type);
556
485
  }
557
486
  }
558
487
  }
@@ -572,25 +501,23 @@ bool XdsClient::XdsChannel::MaybeFallbackLocked(
572
501
  ++i) {
573
502
  authority_state.xds_channels.emplace_back(
574
503
  xds_client_->GetOrCreateXdsChannelLocked(*xds_servers[i], "fallback"));
575
- for (const auto& type_resource : authority_state.resource_map) {
576
- for (const auto& key_state : type_resource.second) {
577
- authority_state.xds_channels.back()->SubscribeLocked(
578
- type_resource.first, {authority, key_state.first});
504
+ for (const auto& [type, resource_map] : authority_state.type_map) {
505
+ for (const auto& [key, resource_state] : resource_map) {
506
+ if (resource_state.HasWatchers()) {
507
+ authority_state.xds_channels.back()->SubscribeLocked(
508
+ type, {authority, key});
509
+ }
579
510
  }
580
511
  }
581
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
582
- gpr_log(GPR_INFO,
583
- "[xds_client %p] authority %s: added fallback server %s (%s)",
584
- xds_client_.get(), authority.c_str(),
585
- xds_servers[i]->server_uri().c_str(),
586
- authority_state.xds_channels.back()->status().ToString().c_str());
587
- }
512
+ GRPC_TRACE_LOG(xds_client, INFO)
513
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
514
+ << ": added fallback server " << xds_servers[i]->server_uri() << " ("
515
+ << authority_state.xds_channels.back()->status().ToString() << ")";
588
516
  if (authority_state.xds_channels.back()->status().ok()) return true;
589
517
  }
590
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
591
- gpr_log(GPR_INFO, "[xds_client %p] authority %s: No fallback server",
592
- xds_client_.get(), authority.c_str());
593
- }
518
+ GRPC_TRACE_LOG(xds_client, INFO)
519
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
520
+ << ": No fallback server";
594
521
  return false;
595
522
  }
596
523
 
@@ -600,30 +527,32 @@ void XdsClient::XdsChannel::SetHealthyLocked() {
600
527
  // 1. Channel is on the list of authority channels
601
528
  // 2. Channel is not the last channel on the list (i.e. not the active
602
529
  // channel)
603
- for (auto& authority : xds_client_->authority_state_map_) {
604
- auto& channels = authority.second.xds_channels;
530
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
531
+ auto& channels = authority_state.xds_channels;
605
532
  // Skip if channel is active.
606
533
  if (channels.back() == this) continue;
607
534
  auto channel_it = std::find(channels.begin(), channels.end(), this);
608
535
  // Skip if this is not on the list
609
536
  if (channel_it != channels.end()) {
610
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
611
- gpr_log(GPR_INFO, "[xds_client %p] authority %s: Falling forward to %s",
612
- xds_client_.get(), authority.first.c_str(),
613
- server_.server_uri().c_str());
614
- }
537
+ GRPC_TRACE_LOG(xds_client, INFO)
538
+ << "[xds_client " << xds_client_.get() << "] authority " << authority
539
+ << ": Falling forward to " << server_.server_uri();
615
540
  // Lower priority channels are no longer needed, connection is back!
541
+ // Note that we move the lower priority channels out of the vector
542
+ // before we unref them, or else
543
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked() will try to
544
+ // access the vector while we are modifying it.
545
+ std::vector<RefCountedPtr<XdsChannel>> channels_to_unref(
546
+ std::make_move_iterator(channel_it + 1),
547
+ std::make_move_iterator(channels.end()));
616
548
  channels.erase(channel_it + 1, channels.end());
617
549
  }
618
550
  }
619
551
  }
620
552
 
621
553
  void XdsClient::XdsChannel::OnConnectivityFailure(absl::Status status) {
622
- {
623
- MutexLock lock(&xds_client_->mu_);
624
- SetChannelStatusLocked(std::move(status));
625
- }
626
- xds_client_->work_serializer_.DrainQueue();
554
+ MutexLock lock(&xds_client_->mu_);
555
+ SetChannelStatusLocked(std::move(status));
627
556
  }
628
557
 
629
558
  void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
@@ -631,17 +560,7 @@ void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
631
560
  status = absl::Status(status.code(), absl::StrCat("xDS channel for server ",
632
561
  server_.server_uri(), ": ",
633
562
  status.message()));
634
- gpr_log(GPR_INFO, "[xds_client %p] %s", xds_client(),
635
- status.ToString().c_str());
636
- // If the node ID is set, append that to the status message that we send to
637
- // the watchers, so that it will appear in log messages visible to users.
638
- const auto* node = xds_client_->bootstrap_->node();
639
- if (node != nullptr) {
640
- status = absl::Status(
641
- status.code(),
642
- absl::StrCat(status.message(),
643
- " (node ID:", xds_client_->bootstrap_->node()->id(), ")"));
644
- }
563
+ LOG(INFO) << "[xds_client " << xds_client() << "] " << status;
645
564
  // If status was previously OK, report that the channel has gone unhealthy.
646
565
  if (status_.ok() && xds_client_->metrics_reporter_ != nullptr) {
647
566
  xds_client_->metrics_reporter_->ReportServerFailure(server_.server_uri());
@@ -650,30 +569,32 @@ void XdsClient::XdsChannel::SetChannelStatusLocked(absl::Status status) {
650
569
  // error for any new watchers that may be started.
651
570
  status_ = status;
652
571
  // Find all watchers for this channel.
653
- std::set<RefCountedPtr<ResourceWatcherInterface>> watchers;
654
- for (auto& a : xds_client_->authority_state_map_) { // authority
655
- if (a.second.xds_channels.empty() || a.second.xds_channels.back() != this ||
656
- MaybeFallbackLocked(a.first, a.second)) {
572
+ WatcherSet watchers_cached;
573
+ WatcherSet watchers_uncached;
574
+ for (auto& [authority, authority_state] : xds_client_->authority_state_map_) {
575
+ if (authority_state.xds_channels.empty() ||
576
+ authority_state.xds_channels.back() != this ||
577
+ MaybeFallbackLocked(authority, authority_state)) {
657
578
  continue;
658
579
  }
659
- for (const auto& t : a.second.resource_map) { // type
660
- for (const auto& r : t.second) { // resource id
661
- for (const auto& w : r.second.watchers) { // watchers
662
- watchers.insert(w.second);
580
+ for (const auto& [_, resource_map] : authority_state.type_map) {
581
+ for (const auto& [_, resource_state] : resource_map) {
582
+ auto& watchers =
583
+ resource_state.HasResource() ? watchers_cached : watchers_uncached;
584
+ for (const auto& watcher : resource_state.watchers()) {
585
+ watchers.insert(watcher);
663
586
  }
664
587
  }
665
588
  }
666
589
  }
667
- if (!watchers.empty()) {
668
- // Enqueue notification for the watchers.
669
- xds_client_->work_serializer_.Schedule(
670
- [watchers = std::move(watchers), status = std::move(status)]()
671
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(xds_client_->work_serializer_) {
672
- for (const auto& watcher : watchers) {
673
- watcher->OnError(status, ReadDelayHandle::NoWait());
674
- }
675
- },
676
- DEBUG_LOCATION);
590
+ // Enqueue notifications for the watchers.
591
+ if (!watchers_cached.empty()) {
592
+ xds_client_->NotifyWatchersOnAmbientError(
593
+ status, std::move(watchers_cached), ReadDelayHandle::NoWait());
594
+ }
595
+ if (!watchers_uncached.empty()) {
596
+ xds_client_->NotifyWatchersOnResourceChanged(
597
+ status, std::move(watchers_uncached), ReadDelayHandle::NoWait());
677
598
  }
678
599
  }
679
600
 
@@ -720,13 +641,10 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
720
641
  if (shutting_down_) return;
721
642
  CHECK(xds_channel_->transport_ != nullptr);
722
643
  CHECK(call_ == nullptr);
723
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
724
- gpr_log(GPR_INFO,
725
- "[xds_client %p] xds server %s: start new call from retryable "
726
- "call %p",
727
- xds_channel()->xds_client(),
728
- xds_channel()->server_.server_uri().c_str(), this);
729
- }
644
+ GRPC_TRACE_LOG(xds_client, INFO)
645
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
646
+ << xds_channel()->server_.server_uri()
647
+ << ": start new call from retryable call " << this;
730
648
  call_ = MakeOrphanable<T>(
731
649
  this->Ref(DEBUG_LOCATION, "RetryableCall+start_new_call"));
732
650
  }
@@ -734,20 +652,15 @@ void XdsClient::XdsChannel::RetryableCall<T>::StartNewCallLocked() {
734
652
  template <typename T>
735
653
  void XdsClient::XdsChannel::RetryableCall<T>::StartRetryTimerLocked() {
736
654
  if (shutting_down_) return;
737
- const Timestamp next_attempt_time = backoff_.NextAttemptTime();
738
- const Duration timeout =
739
- std::max(next_attempt_time - Timestamp::Now(), Duration::Zero());
740
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
741
- gpr_log(GPR_INFO,
742
- "[xds_client %p] xds server %s: call attempt failed; "
743
- "retry timer will fire in %" PRId64 "ms.",
744
- xds_channel()->xds_client(),
745
- xds_channel()->server_.server_uri().c_str(), timeout.millis());
746
- }
655
+ const Duration delay = backoff_.NextAttemptDelay();
656
+ GRPC_TRACE_LOG(xds_client, INFO)
657
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
658
+ << xds_channel()->server_.server_uri()
659
+ << ": call attempt failed; retry timer will fire in " << delay.millis()
660
+ << "ms.";
747
661
  timer_handle_ = xds_channel()->xds_client()->engine()->RunAfter(
748
- timeout,
662
+ delay,
749
663
  [self = this->Ref(DEBUG_LOCATION, "RetryableCall+retry_timer_start")]() {
750
- ApplicationCallbackExecCtx callback_exec_ctx;
751
664
  ExecCtx exec_ctx;
752
665
  self->OnRetryTimer();
753
666
  });
@@ -759,13 +672,10 @@ void XdsClient::XdsChannel::RetryableCall<T>::OnRetryTimer() {
759
672
  if (timer_handle_.has_value()) {
760
673
  timer_handle_.reset();
761
674
  if (shutting_down_) return;
762
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
763
- gpr_log(GPR_INFO,
764
- "[xds_client %p] xds server %s: retry timer fired (retryable "
765
- "call: %p)",
766
- xds_channel()->xds_client(),
767
- xds_channel()->server_.server_uri().c_str(), this);
768
- }
675
+ GRPC_TRACE_LOG(xds_client, INFO)
676
+ << "[xds_client " << xds_channel()->xds_client() << "] xds server "
677
+ << xds_channel()->server_.server_uri()
678
+ << ": retry timer fired (retryable call: " << this << ")";
769
679
  StartNewCallLocked();
770
680
  }
771
681
  }
@@ -791,82 +701,273 @@ class XdsClient::XdsChannel::AdsCall::AdsReadDelayHandle final
791
701
  };
792
702
 
793
703
  //
794
- // XdsClient::XdsChannel::AdsCall::AdsResponseParser
704
+ // XdsClient::XdsChannel::AdsCall
795
705
  //
796
706
 
797
- absl::Status
798
- XdsClient::XdsChannel::AdsCall::AdsResponseParser::ProcessAdsResponseFields(
799
- AdsResponseFields fields) {
800
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
801
- gpr_log(
802
- GPR_INFO,
803
- "[xds_client %p] xds server %s: received ADS response: type_url=%s, "
804
- "version=%s, nonce=%s, num_resources=%" PRIuPTR,
805
- ads_call_->xds_client(),
806
- ads_call_->xds_channel()->server_.server_uri().c_str(),
807
- fields.type_url.c_str(), fields.version.c_str(), fields.nonce.c_str(),
808
- fields.num_resources);
809
- }
810
- result_.type =
811
- ads_call_->xds_client()->GetResourceTypeLocked(fields.type_url);
812
- if (result_.type == nullptr) {
813
- return absl::InvalidArgumentError(
814
- absl::StrCat("unknown resource type ", fields.type_url));
707
+ XdsClient::XdsChannel::AdsCall::AdsCall(
708
+ RefCountedPtr<RetryableCall<AdsCall>> retryable_call)
709
+ : InternallyRefCounted<AdsCall>(
710
+ GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "AdsCall" : nullptr),
711
+ retryable_call_(std::move(retryable_call)) {
712
+ CHECK_NE(xds_client(), nullptr);
713
+ // Init the ADS call.
714
+ const char* method =
715
+ "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
716
+ "StreamAggregatedResources";
717
+ streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
718
+ method, std::make_unique<StreamEventHandler>(
719
+ // Passing the initial ref here. This ref will go away when
720
+ // the StreamEventHandler is destroyed.
721
+ RefCountedPtr<AdsCall>(this)));
722
+ CHECK(streaming_call_ != nullptr);
723
+ // Start the call.
724
+ GRPC_TRACE_LOG(xds_client, INFO)
725
+ << "[xds_client " << xds_client() << "] xds server "
726
+ << xds_channel()->server_.server_uri()
727
+ << ": starting ADS call (ads_call: " << this
728
+ << ", streaming_call: " << streaming_call_.get() << ")";
729
+ // If this is a reconnect, add any necessary subscriptions from what's
730
+ // already in the cache.
731
+ for (auto& [authority, authority_state] :
732
+ xds_client()->authority_state_map_) {
733
+ auto it = std::find(authority_state.xds_channels.begin(),
734
+ authority_state.xds_channels.end(), xds_channel());
735
+ // Skip authorities that are not using this xDS channel. The channel can be
736
+ // anywhere in the list.
737
+ if (it == authority_state.xds_channels.end()) continue;
738
+ for (const auto& [type, resource_map] : authority_state.type_map) {
739
+ for (const auto& [resource_key, resource_state] : resource_map) {
740
+ if (resource_state.HasWatchers()) {
741
+ SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
742
+ }
743
+ }
744
+ }
815
745
  }
816
- result_.type_url = std::move(fields.type_url);
817
- result_.version = std::move(fields.version);
818
- result_.nonce = std::move(fields.nonce);
819
- result_.read_delay_handle =
820
- MakeRefCounted<AdsReadDelayHandle>(ads_call_->Ref());
821
- return absl::OkStatus();
746
+ // Send initial message if we added any subscriptions above.
747
+ for (const auto& [type, _] : state_map_) {
748
+ SendMessageLocked(type);
749
+ }
750
+ streaming_call_->StartRecvMessage();
751
+ }
752
+
753
+ void XdsClient::XdsChannel::AdsCall::Orphan() {
754
+ state_map_.clear();
755
+ // We may have unsubscriptions for which we have not yet actually sent
756
+ // unsubscribe messages, and now we never will, so do a pass to delete
757
+ // any cache entries for which we've unsubscribed.
758
+ for (const auto& [_, type] : xds_client()->resource_types_) {
759
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
760
+ xds_channel(), type);
761
+ }
762
+ // Note that the initial ref is held by the StreamEventHandler, which
763
+ // will be destroyed when streaming_call_ is destroyed, which may not happen
764
+ // here, since there may be other refs held to streaming_call_ by internal
765
+ // callbacks.
766
+ streaming_call_.reset();
767
+ }
768
+
769
+ void XdsClient::XdsChannel::AdsCall::SubscribeLocked(
770
+ const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
771
+ auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
772
+ if (state == nullptr) {
773
+ state = MakeOrphanable<ResourceTimer>(type, name);
774
+ if (!delay_send) SendMessageLocked(type);
775
+ }
776
+ }
777
+
778
+ void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
779
+ const XdsResourceType* type, const XdsResourceName& name,
780
+ bool delay_unsubscription) {
781
+ auto& type_state_map = state_map_[type];
782
+ auto& authority_map = type_state_map.subscribed_resources[name.authority];
783
+ authority_map.erase(name.key);
784
+ if (authority_map.empty()) {
785
+ type_state_map.subscribed_resources.erase(name.authority);
786
+ // Note: We intentionally do not remove the top-level map entry for
787
+ // the resource type even if the authority map for the type is empty,
788
+ // because we need to retain the nonce in case a new watch is
789
+ // started for a resource of this type while this stream is still open.
790
+ }
791
+ // Don't need to send unsubscription message if this was the last
792
+ // resource we were subscribed to, since we'll be closing the stream
793
+ // immediately in that case.
794
+ if (!delay_unsubscription && HasSubscribedResources()) {
795
+ SendMessageLocked(type);
796
+ }
797
+ }
798
+
799
+ bool XdsClient::XdsChannel::AdsCall::HasSubscribedResources() const {
800
+ for (const auto& [_, resource_type_state] : state_map_) {
801
+ if (!resource_type_state.subscribed_resources.empty()) return true;
802
+ }
803
+ return false;
822
804
  }
823
805
 
824
806
  namespace {
825
807
 
826
- // Build a resource metadata struct for ADS result accepting methods and CSDS.
827
- XdsApi::ResourceMetadata CreateResourceMetadataAcked(
828
- std::string serialized_proto, std::string version, Timestamp update_time) {
829
- XdsApi::ResourceMetadata resource_metadata;
830
- resource_metadata.serialized_proto = std::move(serialized_proto);
831
- resource_metadata.update_time = update_time;
832
- resource_metadata.version = std::move(version);
833
- resource_metadata.client_status = XdsApi::ResourceMetadata::ACKED;
834
- return resource_metadata;
808
+ void MaybeLogDiscoveryRequest(
809
+ const XdsClient* client, upb_DefPool* def_pool,
810
+ const envoy_service_discovery_v3_DiscoveryRequest* request) {
811
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
812
+ const upb_MessageDef* msg_type =
813
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(def_pool);
814
+ char buf[10240];
815
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(request), msg_type,
816
+ nullptr, 0, buf, sizeof(buf));
817
+ VLOG(2) << "[xds_client " << client << "] constructed ADS request: " << buf;
818
+ }
835
819
  }
836
820
 
837
- // Update resource_metadata for NACK.
838
- void UpdateResourceMetadataNacked(const std::string& version,
839
- const std::string& details,
840
- Timestamp update_time,
841
- XdsApi::ResourceMetadata* resource_metadata) {
842
- resource_metadata->client_status = XdsApi::ResourceMetadata::NACKED;
843
- resource_metadata->failed_version = version;
844
- resource_metadata->failed_details = details;
845
- resource_metadata->failed_update_time = update_time;
821
+ std::string SerializeDiscoveryRequest(
822
+ upb_Arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) {
823
+ size_t output_length;
824
+ char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
825
+ request, arena, &output_length);
826
+ return std::string(output, output_length);
846
827
  }
847
828
 
848
829
  } // namespace
849
830
 
850
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
851
- upb_Arena* arena, size_t idx, absl::string_view type_url,
852
- absl::string_view resource_name, absl::string_view serialized_resource) {
831
+ std::string XdsClient::XdsChannel::AdsCall::CreateAdsRequest(
832
+ absl::string_view type_url, absl::string_view version,
833
+ absl::string_view nonce, const std::vector<std::string>& resource_names,
834
+ absl::Status status) const {
835
+ upb::Arena arena;
836
+ // Create a request.
837
+ envoy_service_discovery_v3_DiscoveryRequest* request =
838
+ envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
839
+ // Set type_url.
840
+ std::string type_url_str = absl::StrCat("type.googleapis.com/", type_url);
841
+ envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
842
+ request, StdStringToUpbString(type_url_str));
843
+ // Set version_info.
844
+ if (!version.empty()) {
845
+ envoy_service_discovery_v3_DiscoveryRequest_set_version_info(
846
+ request, StdStringToUpbString(version));
847
+ }
848
+ // Set nonce.
849
+ if (!nonce.empty()) {
850
+ envoy_service_discovery_v3_DiscoveryRequest_set_response_nonce(
851
+ request, StdStringToUpbString(nonce));
852
+ }
853
+ // Set error_detail if it's a NACK.
854
+ std::string error_string_storage;
855
+ if (!status.ok()) {
856
+ google_rpc_Status* error_detail =
857
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
858
+ request, arena.ptr());
859
+ // Hard-code INVALID_ARGUMENT as the status code.
860
+ // TODO(roth): If at some point we decide we care about this value,
861
+ // we could attach a status code to the individual errors where we
862
+ // generate them in the parsing code, and then use that here.
863
+ google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
864
+ // Error description comes from the status that was passed in.
865
+ error_string_storage = std::string(status.message());
866
+ upb_StringView error_description =
867
+ StdStringToUpbString(error_string_storage);
868
+ google_rpc_Status_set_message(error_detail, error_description);
869
+ }
870
+ // Populate node.
871
+ if (!sent_initial_message_) {
872
+ envoy_config_core_v3_Node* node_msg =
873
+ envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
874
+ arena.ptr());
875
+ PopulateXdsNode(xds_client()->bootstrap_->node(),
876
+ xds_client()->user_agent_name_,
877
+ xds_client()->user_agent_version_, node_msg, arena.ptr());
878
+ envoy_config_core_v3_Node_add_client_features(
879
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
880
+ arena.ptr());
881
+ }
882
+ // Add resource_names.
883
+ for (const std::string& resource_name : resource_names) {
884
+ envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
885
+ request, StdStringToUpbString(resource_name), arena.ptr());
886
+ }
887
+ MaybeLogDiscoveryRequest(xds_client(), xds_client()->def_pool_.ptr(),
888
+ request);
889
+ return SerializeDiscoveryRequest(arena.ptr(), request);
890
+ }
891
+
892
+ void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
893
+ const XdsResourceType* type)
894
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
895
+ // Buffer message sending if an existing message is in flight.
896
+ if (send_message_pending_ != nullptr) {
897
+ buffered_requests_.insert(type);
898
+ return;
899
+ }
900
+ xds_client()->MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(xds_channel(),
901
+ type);
902
+ auto& state = state_map_[type];
903
+ std::string serialized_message = CreateAdsRequest(
904
+ type->type_url(), xds_channel()->resource_type_version_map_[type],
905
+ state.nonce, ResourceNamesForRequest(type), state.status);
906
+ sent_initial_message_ = true;
907
+ GRPC_TRACE_LOG(xds_client, INFO)
908
+ << "[xds_client " << xds_client() << "] xds server "
909
+ << xds_channel()->server_.server_uri()
910
+ << ": sending ADS request: type=" << type->type_url()
911
+ << " version=" << xds_channel()->resource_type_version_map_[type]
912
+ << " nonce=" << state.nonce << " error=" << state.status;
913
+ state.status = absl::OkStatus();
914
+ streaming_call_->SendMessage(std::move(serialized_message));
915
+ send_message_pending_ = type;
916
+ }
917
+
918
+ void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
919
+ MutexLock lock(&xds_client()->mu_);
920
+ // For each resource that was in the message we just sent, start the
921
+ // resource timer if needed.
922
+ if (ok) {
923
+ auto& resource_type_state = state_map_[send_message_pending_];
924
+ for (const auto& [_, resource_map] :
925
+ resource_type_state.subscribed_resources) {
926
+ for (auto& [_, resource_timer] : resource_map) {
927
+ resource_timer->MaybeMarkSubscriptionSendComplete(
928
+ Ref(DEBUG_LOCATION, "ResourceTimer"));
929
+ }
930
+ }
931
+ }
932
+ send_message_pending_ = nullptr;
933
+ if (ok && IsCurrentCallOnChannel()) {
934
+ // Continue to send another pending message if any.
935
+ // TODO(roth): The current code to handle buffered messages has the
936
+ // advantage of sending only the most recent list of resource names for
937
+ // each resource type (no matter how many times that resource type has
938
+ // been requested to send while the current message sending is still
939
+ // pending). But its disadvantage is that we send the requests in fixed
940
+ // order of resource types. We need to fix this if we are seeing some
941
+ // resource type(s) starved due to frequent requests of other resource
942
+ // type(s).
943
+ auto it = buffered_requests_.begin();
944
+ if (it != buffered_requests_.end()) {
945
+ SendMessageLocked(*it);
946
+ buffered_requests_.erase(it);
947
+ }
948
+ }
949
+ }
950
+
951
+ void XdsClient::XdsChannel::AdsCall::ParseResource(
952
+ size_t idx, absl::string_view type_url, absl::string_view resource_name,
953
+ absl::string_view serialized_resource, DecodeContext* context) {
853
954
  std::string error_prefix = absl::StrCat(
854
955
  "resource index ", idx, ": ",
855
956
  resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
856
957
  // Check the type_url of the resource.
857
- if (result_.type_url != type_url) {
858
- result_.errors.emplace_back(
958
+ if (context->type_url != type_url) {
959
+ context->errors.emplace_back(
859
960
  absl::StrCat(error_prefix, "incorrect resource type \"", type_url,
860
- "\" (should be \"", result_.type_url, "\")"));
861
- ++result_.num_invalid_resources;
961
+ "\" (should be \"", context->type_url, "\")"));
962
+ ++context->num_invalid_resources;
862
963
  return;
863
964
  }
864
965
  // Parse the resource.
865
- XdsResourceType::DecodeContext context = {
866
- xds_client(), ads_call_->xds_channel()->server_, &grpc_xds_client_trace,
867
- xds_client()->def_pool_.ptr(), arena};
966
+ XdsResourceType::DecodeContext resource_type_context = {
967
+ xds_client(), xds_channel()->server_, xds_client()->def_pool_.ptr(),
968
+ context->arena.ptr()};
868
969
  XdsResourceType::DecodeResult decode_result =
869
- result_.type->Decode(context, serialized_resource);
970
+ context->type->Decode(resource_type_context, serialized_resource);
870
971
  // If we didn't already have the resource name from the Resource
871
972
  // wrapper, try to get it from the decoding result.
872
973
  if (resource_name.empty()) {
@@ -877,35 +978,36 @@ void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
877
978
  } else {
878
979
  // We don't have any way of determining the resource name, so
879
980
  // there's nothing more we can do here.
880
- result_.errors.emplace_back(absl::StrCat(
981
+ context->errors.emplace_back(absl::StrCat(
881
982
  error_prefix, decode_result.resource.status().ToString()));
882
- ++result_.num_invalid_resources;
983
+ ++context->num_invalid_resources;
883
984
  return;
884
985
  }
885
986
  }
886
987
  // If decoding failed, make sure we include the error in the NACK.
887
988
  const absl::Status& decode_status = decode_result.resource.status();
888
989
  if (!decode_status.ok()) {
889
- result_.errors.emplace_back(
990
+ context->errors.emplace_back(
890
991
  absl::StrCat(error_prefix, decode_status.ToString()));
891
992
  }
892
993
  // Check the resource name.
893
994
  auto parsed_resource_name =
894
- xds_client()->ParseXdsResourceName(resource_name, result_.type);
995
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
895
996
  if (!parsed_resource_name.ok()) {
896
- result_.errors.emplace_back(
997
+ context->errors.emplace_back(
897
998
  absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
898
- ++result_.num_invalid_resources;
999
+ ++context->num_invalid_resources;
899
1000
  return;
900
1001
  }
901
1002
  // Cancel resource-does-not-exist timer, if needed.
902
- auto timer_it = ads_call_->state_map_.find(result_.type);
903
- if (timer_it != ads_call_->state_map_.end()) {
904
- auto it = timer_it->second.subscribed_resources.find(
1003
+ if (auto it = state_map_.find(context->type); it != state_map_.end()) {
1004
+ auto& resource_type_state = it->second;
1005
+ auto authority_it = resource_type_state.subscribed_resources.find(
905
1006
  parsed_resource_name->authority);
906
- if (it != timer_it->second.subscribed_resources.end()) {
907
- auto res_it = it->second.find(parsed_resource_name->key);
908
- if (res_it != it->second.end()) {
1007
+ if (authority_it != resource_type_state.subscribed_resources.end()) {
1008
+ auto& resource_map = authority_it->second;
1009
+ auto res_it = resource_map.find(parsed_resource_name->key);
1010
+ if (res_it != resource_map.end()) {
909
1011
  res_it->second->MarkSeen();
910
1012
  }
911
1013
  }
@@ -916,383 +1018,397 @@ void XdsClient::XdsChannel::AdsCall::AdsResponseParser::ParseResource(
916
1018
  if (authority_it == xds_client()->authority_state_map_.end()) {
917
1019
  return; // Skip resource -- we don't have a subscription for it.
918
1020
  }
919
- // Found authority, so look up type.
920
1021
  AuthorityState& authority_state = authority_it->second;
921
- auto type_it = authority_state.resource_map.find(result_.type);
922
- if (type_it == authority_state.resource_map.end()) {
1022
+ // Found authority, so look up type.
1023
+ auto type_it = authority_state.type_map.find(context->type);
1024
+ if (type_it == authority_state.type_map.end()) {
923
1025
  return; // Skip resource -- we don't have a subscription for it.
924
1026
  }
925
1027
  auto& type_map = type_it->second;
926
1028
  // Found type, so look up resource key.
927
- auto it = type_map.find(parsed_resource_name->key);
928
- if (it == type_map.end()) {
1029
+ auto res_it = type_map.find(parsed_resource_name->key);
1030
+ if (res_it == type_map.end()) {
929
1031
  return; // Skip resource -- we don't have a subscription for it.
930
1032
  }
931
- ResourceState& resource_state = it->second;
1033
+ ResourceState& resource_state = res_it->second;
932
1034
  // If needed, record that we've seen this resource.
933
- if (result_.type->AllResourcesRequiredInSotW()) {
934
- result_.resources_seen[parsed_resource_name->authority].insert(
1035
+ if (context->type->AllResourcesRequiredInSotW()) {
1036
+ context->resources_seen[parsed_resource_name->authority].insert(
935
1037
  parsed_resource_name->key);
936
1038
  }
937
- // If we previously ignored the resource's deletion, log that we're
938
- // now re-adding it.
939
- if (resource_state.ignored_deletion) {
940
- gpr_log(GPR_INFO,
941
- "[xds_client %p] xds server %s: server returned new version of "
942
- "resource for which we previously ignored a deletion: type %s "
943
- "name %s",
944
- xds_client(),
945
- ads_call_->xds_channel()->server_.server_uri().c_str(),
946
- std::string(type_url).c_str(), std::string(resource_name).c_str());
947
- resource_state.ignored_deletion = false;
948
- }
949
1039
  // Update resource state based on whether the resource is valid.
950
1040
  if (!decode_status.ok()) {
951
- xds_client()->NotifyWatchersOnErrorLocked(
952
- resource_state.watchers,
953
- absl::UnavailableError(
954
- absl::StrCat("invalid resource: ", decode_status.ToString())),
955
- result_.read_delay_handle);
956
- UpdateResourceMetadataNacked(result_.version, decode_status.ToString(),
957
- update_time_, &resource_state.meta);
958
- ++result_.num_invalid_resources;
1041
+ ++context->num_invalid_resources;
1042
+ // If the fail_on_data_errors server feature is present, drop the
1043
+ // existing cached resource, if any.
1044
+ const bool drop_cached_resource = XdsDataErrorHandlingEnabled() &&
1045
+ xds_channel()->server_.FailOnDataErrors();
1046
+ resource_state.SetNacked(context->version, decode_status.message(),
1047
+ context->update_time, drop_cached_resource);
1048
+ xds_client()->NotifyWatchersOnError(resource_state,
1049
+ context->read_delay_handle);
959
1050
  return;
960
1051
  }
961
1052
  // Resource is valid.
962
- ++result_.num_valid_resources;
963
- // If it didn't change, ignore it.
964
- if (resource_state.resource != nullptr &&
965
- result_.type->ResourcesEqual(resource_state.resource.get(),
966
- decode_result.resource->get())) {
967
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
968
- gpr_log(GPR_INFO,
969
- "[xds_client %p] %s resource %s identical to current, ignoring.",
970
- xds_client(), result_.type_url.c_str(),
971
- std::string(resource_name).c_str());
1053
+ ++context->num_valid_resources;
1054
+ // Check if the resource has changed.
1055
+ const bool resource_identical =
1056
+ resource_state.HasResource() &&
1057
+ context->type->ResourcesEqual(resource_state.resource().get(),
1058
+ decode_result.resource->get());
1059
+ // If not changed, keep using the current decoded resource object.
1060
+ // This should avoid wasting memory, since external watchers may be
1061
+ // holding refs to the current object.
1062
+ if (resource_identical) decode_result.resource = resource_state.resource();
1063
+ // Update the resource state.
1064
+ resource_state.SetAcked(std::move(*decode_result.resource),
1065
+ std::string(serialized_resource), context->version,
1066
+ context->update_time);
1067
+ // If the resource didn't change, inhibit watcher notifications.
1068
+ if (resource_identical) {
1069
+ GRPC_TRACE_LOG(xds_client, INFO)
1070
+ << "[xds_client " << xds_client() << "] " << context->type_url
1071
+ << " resource " << resource_name << " identical to current, ignoring.";
1072
+ // If we previously had connectivity problems, notify watchers that
1073
+ // the ambient error has been cleared.
1074
+ if (!xds_channel()->status().ok()) {
1075
+ xds_client()->NotifyWatchersOnAmbientError(absl::OkStatus(),
1076
+ resource_state.watchers(),
1077
+ context->read_delay_handle);
972
1078
  }
973
1079
  return;
974
1080
  }
975
- // Update the resource state.
976
- resource_state.resource = std::move(*decode_result.resource);
977
- resource_state.meta = CreateResourceMetadataAcked(
978
- std::string(serialized_resource), result_.version, update_time_);
979
1081
  // Notify watchers.
980
- auto& watchers_list = resource_state.watchers;
981
- xds_client()->work_serializer_.Schedule(
982
- [watchers_list, value = resource_state.resource,
983
- read_delay_handle = result_.read_delay_handle]()
984
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&xds_client()->work_serializer_) {
985
- for (const auto& p : watchers_list) {
986
- p.first->OnGenericResourceChanged(value, read_delay_handle);
987
- }
988
- },
989
- DEBUG_LOCATION);
990
- }
991
-
992
- void XdsClient::XdsChannel::AdsCall::AdsResponseParser::
993
- ResourceWrapperParsingFailed(size_t idx, absl::string_view message) {
994
- result_.errors.emplace_back(
995
- absl::StrCat("resource index ", idx, ": ", message));
996
- ++result_.num_invalid_resources;
1082
+ xds_client()->NotifyWatchersOnResourceChanged(resource_state.resource(),
1083
+ resource_state.watchers(),
1084
+ context->read_delay_handle);
997
1085
  }
998
1086
 
999
- //
1000
- // XdsClient::XdsChannel::AdsCall
1001
- //
1002
-
1003
- XdsClient::XdsChannel::AdsCall::AdsCall(
1004
- RefCountedPtr<RetryableCall<AdsCall>> retryable_call)
1005
- : InternallyRefCounted<AdsCall>(
1006
- GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "AdsCall"
1007
- : nullptr),
1008
- retryable_call_(std::move(retryable_call)) {
1009
- CHECK_NE(xds_client(), nullptr);
1010
- // Init the ADS call.
1011
- const char* method =
1012
- "/envoy.service.discovery.v3.AggregatedDiscoveryService/"
1013
- "StreamAggregatedResources";
1014
- streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
1015
- method, std::make_unique<StreamEventHandler>(
1016
- // Passing the initial ref here. This ref will go away when
1017
- // the StreamEventHandler is destroyed.
1018
- RefCountedPtr<AdsCall>(this)));
1019
- CHECK(streaming_call_ != nullptr);
1020
- // Start the call.
1021
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1022
- gpr_log(GPR_INFO,
1023
- "[xds_client %p] xds server %s: starting ADS call "
1024
- "(ads_call: %p, streaming_call: %p)",
1025
- xds_client(), xds_channel()->server_.server_uri().c_str(), this,
1026
- streaming_call_.get());
1087
+ void XdsClient::XdsChannel::AdsCall::HandleServerReportedResourceError(
1088
+ size_t idx, absl::string_view resource_name, absl::Status status,
1089
+ DecodeContext* context) {
1090
+ std::string error_prefix = absl::StrCat(
1091
+ "resource_errors index ", idx, ": ",
1092
+ resource_name.empty() ? "" : absl::StrCat(resource_name, ": "));
1093
+ if (resource_name.empty()) {
1094
+ context->errors.emplace_back(
1095
+ absl::StrCat(error_prefix, "resource_name unset"));
1096
+ ++context->num_invalid_resources;
1097
+ return;
1027
1098
  }
1028
- // If this is a reconnect, add any necessary subscriptions from what's
1029
- // already in the cache.
1030
- for (auto& a : xds_client()->authority_state_map_) {
1031
- const std::string& authority = a.first;
1032
- auto it = std::find(a.second.xds_channels.begin(),
1033
- a.second.xds_channels.end(), xds_channel());
1034
- // Skip authorities that are not using this xDS channel. The channel can be
1035
- // anywhere in the list.
1036
- if (it == a.second.xds_channels.end()) continue;
1037
- for (const auto& t : a.second.resource_map) {
1038
- const XdsResourceType* type = t.first;
1039
- for (const auto& r : t.second) {
1040
- const XdsResourceKey& resource_key = r.first;
1041
- SubscribeLocked(type, {authority, resource_key}, /*delay_send=*/true);
1099
+ if (status.ok()) {
1100
+ context->errors.emplace_back(
1101
+ absl::StrCat(error_prefix, "error_detail must be non-OK"));
1102
+ ++context->num_invalid_resources;
1103
+ return;
1104
+ }
1105
+ // Check the resource name.
1106
+ auto parsed_resource_name =
1107
+ xds_client()->ParseXdsResourceName(resource_name, context->type);
1108
+ if (!parsed_resource_name.ok()) {
1109
+ context->errors.emplace_back(
1110
+ absl::StrCat(error_prefix, "Cannot parse xDS resource name"));
1111
+ ++context->num_invalid_resources;
1112
+ return;
1113
+ }
1114
+ // Cancel resource-does-not-exist timer, if needed.
1115
+ auto timer_it = state_map_.find(context->type);
1116
+ if (timer_it != state_map_.end()) {
1117
+ auto it = timer_it->second.subscribed_resources.find(
1118
+ parsed_resource_name->authority);
1119
+ if (it != timer_it->second.subscribed_resources.end()) {
1120
+ auto res_it = it->second.find(parsed_resource_name->key);
1121
+ if (res_it != it->second.end()) {
1122
+ res_it->second->MarkSeen();
1042
1123
  }
1043
1124
  }
1044
1125
  }
1045
- // Send initial message if we added any subscriptions above.
1046
- for (const auto& p : state_map_) {
1047
- SendMessageLocked(p.first);
1048
- }
1049
- streaming_call_->StartRecvMessage();
1050
- }
1051
-
1052
- void XdsClient::XdsChannel::AdsCall::Orphan() {
1053
- state_map_.clear();
1054
- // Note that the initial ref is held by the StreamEventHandler, which
1055
- // will be destroyed when streaming_call_ is destroyed, which may not happen
1056
- // here, since there may be other refs held to streaming_call_ by internal
1057
- // callbacks.
1058
- streaming_call_.reset();
1059
- }
1060
-
1061
- void XdsClient::XdsChannel::AdsCall::SendMessageLocked(
1062
- const XdsResourceType* type)
1063
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_) {
1064
- // Buffer message sending if an existing message is in flight.
1065
- if (send_message_pending_ != nullptr) {
1066
- buffered_requests_.insert(type);
1067
- return;
1126
+ // Lookup the authority in the cache.
1127
+ auto authority_it =
1128
+ xds_client()->authority_state_map_.find(parsed_resource_name->authority);
1129
+ if (authority_it == xds_client()->authority_state_map_.end()) {
1130
+ return; // Skip resource -- we don't have a subscription for it.
1068
1131
  }
1069
- auto& state = state_map_[type];
1070
- std::string serialized_message = xds_client()->api_.CreateAdsRequest(
1071
- type->type_url(), xds_channel()->resource_type_version_map_[type],
1072
- state.nonce, ResourceNamesForRequest(type), state.status,
1073
- !sent_initial_message_);
1074
- sent_initial_message_ = true;
1075
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1076
- gpr_log(GPR_INFO,
1077
- "[xds_client %p] xds server %s: sending ADS request: type=%s "
1078
- "version=%s nonce=%s error=%s",
1079
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1080
- std::string(type->type_url()).c_str(),
1081
- xds_channel()->resource_type_version_map_[type].c_str(),
1082
- state.nonce.c_str(), state.status.ToString().c_str());
1132
+ AuthorityState& authority_state = authority_it->second;
1133
+ // Found authority, so look up type.
1134
+ auto type_it = authority_state.type_map.find(context->type);
1135
+ if (type_it == authority_state.type_map.end()) {
1136
+ return; // Skip resource -- we don't have a subscription for it.
1083
1137
  }
1084
- state.status = absl::OkStatus();
1085
- streaming_call_->SendMessage(std::move(serialized_message));
1086
- send_message_pending_ = type;
1087
- }
1088
-
1089
- void XdsClient::XdsChannel::AdsCall::SubscribeLocked(
1090
- const XdsResourceType* type, const XdsResourceName& name, bool delay_send) {
1091
- auto& state = state_map_[type].subscribed_resources[name.authority][name.key];
1092
- if (state == nullptr) {
1093
- state = MakeOrphanable<ResourceTimer>(type, name);
1094
- if (!delay_send) SendMessageLocked(type);
1138
+ auto& type_map = type_it->second;
1139
+ // Found type, so look up resource key.
1140
+ auto it = type_map.find(parsed_resource_name->key);
1141
+ if (it == type_map.end()) {
1142
+ return; // Skip resource -- we don't have a subscription for it.
1095
1143
  }
1096
- }
1097
-
1098
- void XdsClient::XdsChannel::AdsCall::UnsubscribeLocked(
1099
- const XdsResourceType* type, const XdsResourceName& name,
1100
- bool delay_unsubscription) {
1101
- auto& type_state_map = state_map_[type];
1102
- auto& authority_map = type_state_map.subscribed_resources[name.authority];
1103
- authority_map.erase(name.key);
1104
- if (authority_map.empty()) {
1105
- type_state_map.subscribed_resources.erase(name.authority);
1144
+ ResourceState& resource_state = it->second;
1145
+ // If needed, record that we've seen this resource.
1146
+ if (context->type->AllResourcesRequiredInSotW()) {
1147
+ context->resources_seen[parsed_resource_name->authority].insert(
1148
+ parsed_resource_name->key);
1106
1149
  }
1107
- // Don't need to send unsubscription message if this was the last
1108
- // resource we were subscribed to, since we'll be closing the stream
1109
- // immediately in that case.
1110
- if (!delay_unsubscription && HasSubscribedResources()) {
1111
- SendMessageLocked(type);
1150
+ ++context->num_invalid_resources;
1151
+ // Update cache state.
1152
+ const bool drop_cached_resource =
1153
+ xds_channel()->server_.FailOnDataErrors() &&
1154
+ (status.code() == absl::StatusCode::kNotFound ||
1155
+ status.code() == absl::StatusCode::kPermissionDenied);
1156
+ resource_state.SetReceivedError(context->version, std::move(status),
1157
+ context->update_time, drop_cached_resource);
1158
+ // If there is no cached resource (either because we didn't have one
1159
+ // or because we just dropped it due to fail_on_data_errors), then notify
1160
+ // via OnResourceChanged(); otherwise, notify via OnAmbientError().
1161
+ if (!resource_state.HasResource()) {
1162
+ xds_client()->NotifyWatchersOnResourceChanged(
1163
+ resource_state.failed_status(), resource_state.watchers(),
1164
+ context->read_delay_handle);
1165
+ } else {
1166
+ xds_client()->NotifyWatchersOnAmbientError(resource_state.failed_status(),
1167
+ resource_state.watchers(),
1168
+ context->read_delay_handle);
1112
1169
  }
1113
1170
  }
1114
1171
 
1115
- bool XdsClient::XdsChannel::AdsCall::HasSubscribedResources() const {
1116
- for (const auto& p : state_map_) {
1117
- if (!p.second.subscribed_resources.empty()) return true;
1172
+ namespace {
1173
+
1174
+ void MaybeLogDiscoveryResponse(
1175
+ const XdsClient* client, upb_DefPool* def_pool,
1176
+ const envoy_service_discovery_v3_DiscoveryResponse* response) {
1177
+ if (GRPC_TRACE_FLAG_ENABLED(xds_client) && ABSL_VLOG_IS_ON(2)) {
1178
+ const upb_MessageDef* msg_type =
1179
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(def_pool);
1180
+ char buf[10240];
1181
+ upb_TextEncode(reinterpret_cast<const upb_Message*>(response), msg_type,
1182
+ nullptr, 0, buf, sizeof(buf));
1183
+ VLOG(2) << "[xds_client " << client << "] received response: " << buf;
1118
1184
  }
1119
- return false;
1120
1185
  }
1121
1186
 
1122
- void XdsClient::XdsChannel::AdsCall::OnRequestSent(bool ok) {
1123
- MutexLock lock(&xds_client()->mu_);
1124
- // For each resource that was in the message we just sent, start the
1125
- // resource timer if needed.
1126
- if (ok) {
1127
- auto& resource_type_state = state_map_[send_message_pending_];
1128
- for (const auto& p : resource_type_state.subscribed_resources) {
1129
- for (auto& q : p.second) {
1130
- q.second->MaybeMarkSubscriptionSendComplete(
1131
- Ref(DEBUG_LOCATION, "ResourceTimer"));
1187
+ } // namespace
1188
+
1189
+ absl::Status XdsClient::XdsChannel::AdsCall::DecodeAdsResponse(
1190
+ absl::string_view encoded_response, DecodeContext* context) {
1191
+ // Decode the response.
1192
+ const envoy_service_discovery_v3_DiscoveryResponse* response =
1193
+ envoy_service_discovery_v3_DiscoveryResponse_parse(
1194
+ encoded_response.data(), encoded_response.size(),
1195
+ context->arena.ptr());
1196
+ // If decoding fails, report a fatal error and return.
1197
+ if (response == nullptr) {
1198
+ return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
1199
+ }
1200
+ MaybeLogDiscoveryResponse(xds_client(), xds_client()->def_pool_.ptr(),
1201
+ response);
1202
+ // Get the type_url, version, nonce, number of resources, and number
1203
+ // of errors.
1204
+ context->type_url = std::string(absl::StripPrefix(
1205
+ UpbStringToAbsl(
1206
+ envoy_service_discovery_v3_DiscoveryResponse_type_url(response)),
1207
+ "type.googleapis.com/"));
1208
+ context->version = UpbStringToStdString(
1209
+ envoy_service_discovery_v3_DiscoveryResponse_version_info(response));
1210
+ context->nonce = UpbStringToStdString(
1211
+ envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
1212
+ size_t num_resources;
1213
+ const google_protobuf_Any* const* resources =
1214
+ envoy_service_discovery_v3_DiscoveryResponse_resources(response,
1215
+ &num_resources);
1216
+ size_t num_errors = 0;
1217
+ const envoy_service_discovery_v3_ResourceError* const* errors = nullptr;
1218
+ if (XdsDataErrorHandlingEnabled()) {
1219
+ errors = envoy_service_discovery_v3_DiscoveryResponse_resource_errors(
1220
+ response, &num_errors);
1221
+ }
1222
+ GRPC_TRACE_LOG(xds_client, INFO)
1223
+ << "[xds_client " << xds_client() << "] xds server "
1224
+ << xds_channel()->server_.server_uri()
1225
+ << ": received ADS response: type_url=" << context->type_url
1226
+ << ", version=" << context->version << ", nonce=" << context->nonce
1227
+ << ", num_resources=" << num_resources << ", num_errors=" << num_errors;
1228
+ context->type = xds_client()->GetResourceTypeLocked(context->type_url);
1229
+ if (context->type == nullptr) {
1230
+ return absl::InvalidArgumentError(
1231
+ absl::StrCat("unknown resource type ", context->type_url));
1232
+ }
1233
+ context->read_delay_handle = MakeRefCounted<AdsReadDelayHandle>(Ref());
1234
+ // Process each resource.
1235
+ for (size_t i = 0; i < num_resources; ++i) {
1236
+ absl::string_view type_url = absl::StripPrefix(
1237
+ UpbStringToAbsl(google_protobuf_Any_type_url(resources[i])),
1238
+ "type.googleapis.com/");
1239
+ absl::string_view serialized_resource =
1240
+ UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
1241
+ // Unwrap Resource messages, if so wrapped.
1242
+ absl::string_view resource_name;
1243
+ if (type_url == "envoy.service.discovery.v3.Resource") {
1244
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
1245
+ serialized_resource.data(), serialized_resource.size(),
1246
+ context->arena.ptr());
1247
+ if (resource_wrapper == nullptr) {
1248
+ context->errors.emplace_back(absl::StrCat(
1249
+ "resource index ", i, ": Can't decode Resource proto wrapper"));
1250
+ ++context->num_invalid_resources;
1251
+ continue;
1252
+ }
1253
+ const auto* resource =
1254
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
1255
+ if (resource == nullptr) {
1256
+ context->errors.emplace_back(
1257
+ absl::StrCat("resource index ", i,
1258
+ ": No resource present in Resource proto wrappe"));
1259
+ ++context->num_invalid_resources;
1260
+ continue;
1132
1261
  }
1262
+ type_url = absl::StripPrefix(
1263
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
1264
+ "type.googleapis.com/");
1265
+ serialized_resource =
1266
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
1267
+ resource_name = UpbStringToAbsl(
1268
+ envoy_service_discovery_v3_Resource_name(resource_wrapper));
1133
1269
  }
1270
+ ParseResource(i, type_url, resource_name, serialized_resource, context);
1134
1271
  }
1135
- send_message_pending_ = nullptr;
1136
- if (ok && IsCurrentCallOnChannel()) {
1137
- // Continue to send another pending message if any.
1138
- // TODO(roth): The current code to handle buffered messages has the
1139
- // advantage of sending only the most recent list of resource names for
1140
- // each resource type (no matter how many times that resource type has
1141
- // been requested to send while the current message sending is still
1142
- // pending). But its disadvantage is that we send the requests in fixed
1143
- // order of resource types. We need to fix this if we are seeing some
1144
- // resource type(s) starved due to frequent requests of other resource
1145
- // type(s).
1146
- auto it = buffered_requests_.begin();
1147
- if (it != buffered_requests_.end()) {
1148
- SendMessageLocked(*it);
1149
- buffered_requests_.erase(it);
1272
+ // Process each error.
1273
+ for (size_t i = 0; i < num_errors; ++i) {
1274
+ absl::string_view name;
1275
+ {
1276
+ const envoy_service_discovery_v3_ResourceName* resource_name =
1277
+ envoy_service_discovery_v3_ResourceError_resource_name(errors[i]);
1278
+ if (resource_name != nullptr) {
1279
+ name = UpbStringToAbsl(
1280
+ envoy_service_discovery_v3_ResourceName_name(resource_name));
1281
+ }
1150
1282
  }
1283
+ absl::Status status;
1284
+ {
1285
+ const google_rpc_Status* error_detail =
1286
+ envoy_service_discovery_v3_ResourceError_error_detail(errors[i]);
1287
+ if (error_detail != nullptr) {
1288
+ status = absl::Status(
1289
+ static_cast<absl::StatusCode>(google_rpc_Status_code(error_detail)),
1290
+ UpbStringToAbsl(google_rpc_Status_message(error_detail)));
1291
+ }
1292
+ }
1293
+ HandleServerReportedResourceError(i, name, std::move(status), context);
1151
1294
  }
1295
+ return absl::OkStatus();
1152
1296
  }
1153
1297
 
1154
1298
  void XdsClient::XdsChannel::AdsCall::OnRecvMessage(absl::string_view payload) {
1155
- // Needs to be destroyed after the mutex is released.
1156
- RefCountedPtr<ReadDelayHandle> read_delay_handle;
1157
- {
1158
- MutexLock lock(&xds_client()->mu_);
1159
- if (!IsCurrentCallOnChannel()) return;
1160
- // Parse and validate the response.
1161
- AdsResponseParser parser(this);
1162
- absl::Status status = xds_client()->api_.ParseAdsResponse(payload, &parser);
1163
- // This includes a handle that will trigger an ADS read.
1164
- AdsResponseParser::Result result = parser.TakeResult();
1165
- read_delay_handle = std::move(result.read_delay_handle);
1166
- if (!status.ok()) {
1167
- // Ignore unparsable response.
1168
- gpr_log(GPR_ERROR,
1169
- "[xds_client %p] xds server %s: error parsing ADS response (%s) "
1170
- "-- ignoring",
1171
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1172
- status.ToString().c_str());
1173
- } else {
1174
- seen_response_ = true;
1175
- xds_channel()->SetHealthyLocked();
1176
- // Update nonce.
1177
- auto& state = state_map_[result.type];
1178
- state.nonce = result.nonce;
1179
- // If we got an error, set state.status so that we'll NACK the update.
1180
- if (!result.errors.empty()) {
1181
- state.status = absl::UnavailableError(
1182
- absl::StrCat("xDS response validation errors: [",
1183
- absl::StrJoin(result.errors, "; "), "]"));
1184
- gpr_log(GPR_ERROR,
1185
- "[xds_client %p] xds server %s: ADS response invalid for "
1186
- "resource "
1187
- "type %s version %s, will NACK: nonce=%s status=%s",
1188
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1189
- result.type_url.c_str(), result.version.c_str(),
1190
- state.nonce.c_str(), state.status.ToString().c_str());
1191
- }
1192
- // Delete resources not seen in update if needed.
1193
- if (result.type->AllResourcesRequiredInSotW()) {
1194
- for (auto& a : xds_client()->authority_state_map_) {
1195
- const std::string& authority = a.first;
1196
- AuthorityState& authority_state = a.second;
1197
- // Skip authorities that are not using this xDS channel.
1198
- if (authority_state.xds_channels.back() != xds_channel()) {
1199
- continue;
1200
- }
1201
- auto seen_authority_it = result.resources_seen.find(authority);
1202
- // Find this resource type.
1203
- auto type_it = authority_state.resource_map.find(result.type);
1204
- if (type_it == authority_state.resource_map.end()) continue;
1205
- // Iterate over resource ids.
1206
- for (auto& r : type_it->second) {
1207
- const XdsResourceKey& resource_key = r.first;
1208
- ResourceState& resource_state = r.second;
1209
- if (seen_authority_it == result.resources_seen.end() ||
1210
- seen_authority_it->second.find(resource_key) ==
1211
- seen_authority_it->second.end()) {
1212
- // If the resource was newly requested but has not yet been
1213
- // received, we don't want to generate an error for the
1214
- // watchers, because this ADS response may be in reaction to an
1215
- // earlier request that did not yet request the new resource, so
1216
- // its absence from the response does not necessarily indicate
1217
- // that the resource does not exist. For that case, we rely on
1218
- // the request timeout instead.
1219
- if (resource_state.resource == nullptr) continue;
1220
- if (xds_channel()->server_.IgnoreResourceDeletion()) {
1221
- if (!resource_state.ignored_deletion) {
1222
- gpr_log(GPR_ERROR,
1223
- "[xds_client %p] xds server %s: ignoring deletion "
1224
- "for resource type %s name %s",
1225
- xds_client(),
1226
- xds_channel()->server_.server_uri().c_str(),
1227
- result.type_url.c_str(),
1228
- XdsClient::ConstructFullXdsResourceName(
1229
- authority, result.type_url.c_str(), resource_key)
1230
- .c_str());
1231
- resource_state.ignored_deletion = true;
1232
- }
1233
- } else {
1234
- resource_state.resource.reset();
1235
- resource_state.meta.client_status =
1236
- XdsApi::ResourceMetadata::DOES_NOT_EXIST;
1237
- xds_client()->NotifyWatchersOnResourceDoesNotExist(
1238
- resource_state.watchers, read_delay_handle);
1239
- }
1240
- }
1299
+ // context.read_delay_handle needs to be destroyed after the mutex is
1300
+ // released.
1301
+ DecodeContext context;
1302
+ MutexLock lock(&xds_client()->mu_);
1303
+ if (!IsCurrentCallOnChannel()) return;
1304
+ // Parse and validate the response.
1305
+ absl::Status status = DecodeAdsResponse(payload, &context);
1306
+ if (!status.ok()) {
1307
+ // Ignore unparsable response.
1308
+ LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1309
+ << xds_channel()->server_.server_uri()
1310
+ << ": error parsing ADS response (" << status << ") -- ignoring";
1311
+ } else {
1312
+ seen_response_ = true;
1313
+ xds_channel()->SetHealthyLocked();
1314
+ // Update nonce.
1315
+ auto& state = state_map_[context.type];
1316
+ state.nonce = context.nonce;
1317
+ // If we got an error, set state.status so that we'll NACK the update.
1318
+ if (!context.errors.empty()) {
1319
+ state.status = absl::UnavailableError(
1320
+ absl::StrCat("xDS response validation errors: [",
1321
+ absl::StrJoin(context.errors, "; "), "]"));
1322
+ LOG(ERROR) << "[xds_client " << xds_client() << "] xds server "
1323
+ << xds_channel()->server_.server_uri()
1324
+ << ": ADS response invalid for resource type "
1325
+ << context.type_url << " version " << context.version
1326
+ << ", will NACK: nonce=" << state.nonce
1327
+ << " status=" << state.status;
1328
+ }
1329
+ // Delete resources not seen in update if needed.
1330
+ if (context.type->AllResourcesRequiredInSotW()) {
1331
+ for (auto& [authority, authority_state] :
1332
+ xds_client()->authority_state_map_) {
1333
+ // Skip authorities that are not using this xDS channel.
1334
+ if (authority_state.xds_channels.back() != xds_channel()) {
1335
+ continue;
1336
+ }
1337
+ auto seen_authority_it = context.resources_seen.find(authority);
1338
+ // Find this resource type.
1339
+ auto type_it = authority_state.type_map.find(context.type);
1340
+ if (type_it == authority_state.type_map.end()) continue;
1341
+ // Iterate over resource ids.
1342
+ for (auto& [resource_key, resource_state] : type_it->second) {
1343
+ if (seen_authority_it == context.resources_seen.end() ||
1344
+ seen_authority_it->second.find(resource_key) ==
1345
+ seen_authority_it->second.end()) {
1346
+ // If the resource was newly requested but has not yet been
1347
+ // received, we don't want to generate an error for the
1348
+ // watchers, because this ADS response may be in reaction to an
1349
+ // earlier request that did not yet request the new resource, so
1350
+ // its absence from the response does not necessarily indicate
1351
+ // that the resource does not exist. For that case, we rely on
1352
+ // the request timeout instead.
1353
+ if (!resource_state.HasResource()) continue;
1354
+ const bool drop_cached_resource =
1355
+ XdsDataErrorHandlingEnabled()
1356
+ ? xds_channel()->server_.FailOnDataErrors()
1357
+ : !xds_channel()->server_.IgnoreResourceDeletion();
1358
+ resource_state.SetDoesNotExistOnLdsOrCdsDeletion(
1359
+ context.version, context.update_time, drop_cached_resource);
1360
+ xds_client()->NotifyWatchersOnError(resource_state,
1361
+ context.read_delay_handle);
1241
1362
  }
1242
1363
  }
1243
1364
  }
1244
- // If we had valid resources or the update was empty, update the version.
1245
- if (result.num_valid_resources > 0 || result.errors.empty()) {
1246
- xds_channel()->resource_type_version_map_[result.type] =
1247
- std::move(result.version);
1248
- }
1249
- // Send ACK or NACK.
1250
- SendMessageLocked(result.type);
1251
1365
  }
1252
- // Update metrics.
1253
- if (xds_client()->metrics_reporter_ != nullptr) {
1254
- xds_client()->metrics_reporter_->ReportResourceUpdates(
1255
- xds_channel()->server_.server_uri(), result.type_url,
1256
- result.num_valid_resources, result.num_invalid_resources);
1366
+ // If we had valid resources or the update was empty, update the version.
1367
+ if (context.num_valid_resources > 0 || context.errors.empty()) {
1368
+ xds_channel()->resource_type_version_map_[context.type] =
1369
+ std::move(context.version);
1257
1370
  }
1371
+ // Send ACK or NACK.
1372
+ SendMessageLocked(context.type);
1373
+ }
1374
+ // Update metrics.
1375
+ if (xds_client()->metrics_reporter_ != nullptr) {
1376
+ xds_client()->metrics_reporter_->ReportResourceUpdates(
1377
+ xds_channel()->server_.server_uri(), context.type_url,
1378
+ context.num_valid_resources, context.num_invalid_resources);
1258
1379
  }
1259
- xds_client()->work_serializer_.DrainQueue();
1260
1380
  }
1261
1381
 
1262
1382
  void XdsClient::XdsChannel::AdsCall::OnStatusReceived(absl::Status status) {
1263
- {
1264
- MutexLock lock(&xds_client()->mu_);
1265
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1266
- gpr_log(GPR_INFO,
1267
- "[xds_client %p] xds server %s: ADS call status received "
1268
- "(xds_channel=%p, ads_call=%p, streaming_call=%p): %s",
1269
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1270
- xds_channel(), this, streaming_call_.get(),
1271
- status.ToString().c_str());
1272
- }
1273
- // Cancel any does-not-exist timers that may be pending.
1274
- for (const auto& p : state_map_) {
1275
- for (const auto& q : p.second.subscribed_resources) {
1276
- for (auto& r : q.second) {
1277
- r.second->MaybeCancelTimer();
1278
- }
1383
+ MutexLock lock(&xds_client()->mu_);
1384
+ GRPC_TRACE_LOG(xds_client, INFO)
1385
+ << "[xds_client " << xds_client() << "] xds server "
1386
+ << xds_channel()->server_.server_uri()
1387
+ << ": ADS call status received (xds_channel=" << xds_channel()
1388
+ << ", ads_call=" << this << ", streaming_call=" << streaming_call_.get()
1389
+ << "): " << status;
1390
+ // Cancel any does-not-exist timers that may be pending.
1391
+ for (const auto& [_, resource_type_state] : state_map_) {
1392
+ for (const auto& [_, resource_map] :
1393
+ resource_type_state.subscribed_resources) {
1394
+ for (auto& [_, resource_timer] : resource_map) {
1395
+ resource_timer->MaybeCancelTimer();
1279
1396
  }
1280
1397
  }
1281
- // Ignore status from a stale call.
1282
- if (IsCurrentCallOnChannel()) {
1283
- // Try to restart the call.
1284
- retryable_call_->OnCallFinishedLocked();
1285
- // If we didn't receive a response on the stream, report the
1286
- // stream failure as a connectivity failure, which will report the
1287
- // error to all watchers of resources on this channel.
1288
- if (!seen_response_) {
1289
- xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1290
- absl::StrCat("xDS call failed with no responses received; status: ",
1291
- status.ToString())));
1292
- }
1398
+ }
1399
+ // Ignore status from a stale call.
1400
+ if (IsCurrentCallOnChannel()) {
1401
+ // Try to restart the call.
1402
+ retryable_call_->OnCallFinishedLocked();
1403
+ // If we didn't receive a response on the stream, report the
1404
+ // stream failure as a connectivity failure, which will report the
1405
+ // error to all watchers of resources on this channel.
1406
+ if (!seen_response_) {
1407
+ xds_channel()->SetChannelStatusLocked(absl::UnavailableError(
1408
+ absl::StrCat("xDS call failed with no responses received; status: ",
1409
+ status.ToString())));
1293
1410
  }
1294
1411
  }
1295
- xds_client()->work_serializer_.DrainQueue();
1296
1412
  }
1297
1413
 
1298
1414
  bool XdsClient::XdsChannel::AdsCall::IsCurrentCallOnChannel() const {
@@ -1308,13 +1424,10 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1308
1424
  std::vector<std::string> resource_names;
1309
1425
  auto it = state_map_.find(type);
1310
1426
  if (it != state_map_.end()) {
1311
- for (auto& a : it->second.subscribed_resources) {
1312
- const std::string& authority = a.first;
1313
- for (auto& p : a.second) {
1314
- const XdsResourceKey& resource_key = p.first;
1427
+ for (auto& [authority, authority_state] : it->second.subscribed_resources) {
1428
+ for (auto& [resource_key, resource_timer] : authority_state) {
1315
1429
  resource_names.emplace_back(XdsClient::ConstructFullXdsResourceName(
1316
1430
  authority, type->type_url(), resource_key));
1317
- OrphanablePtr<ResourceTimer>& resource_timer = p.second;
1318
1431
  resource_timer->MarkSubscriptionSendStarted();
1319
1432
  }
1320
1433
  }
@@ -1323,254 +1436,143 @@ XdsClient::XdsChannel::AdsCall::ResourceNamesForRequest(
1323
1436
  }
1324
1437
 
1325
1438
  //
1326
- // XdsClient::XdsChannel::LrsCall::Timer
1327
- //
1328
-
1329
- void XdsClient::XdsChannel::LrsCall::Timer::Orphan() {
1330
- if (timer_handle_.has_value()) {
1331
- xds_client()->engine()->Cancel(*timer_handle_);
1332
- timer_handle_.reset();
1333
- }
1334
- Unref(DEBUG_LOCATION, "Orphan");
1335
- }
1336
-
1337
- void XdsClient::XdsChannel::LrsCall::Timer::ScheduleNextReportLocked() {
1338
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1339
- gpr_log(GPR_INFO,
1340
- "[xds_client %p] xds server %s: scheduling next load report in %s",
1341
- xds_client(),
1342
- lrs_call_->xds_channel()->server_.server_uri().c_str(),
1343
- lrs_call_->load_reporting_interval_.ToString().c_str());
1344
- }
1345
- timer_handle_ = xds_client()->engine()->RunAfter(
1346
- lrs_call_->load_reporting_interval_,
1347
- [self = Ref(DEBUG_LOCATION, "timer")]() {
1348
- ApplicationCallbackExecCtx callback_exec_ctx;
1349
- ExecCtx exec_ctx;
1350
- self->OnNextReportTimer();
1351
- });
1352
- }
1353
-
1354
- void XdsClient::XdsChannel::LrsCall::Timer::OnNextReportTimer() {
1355
- MutexLock lock(&xds_client()->mu_);
1356
- timer_handle_.reset();
1357
- if (IsCurrentTimerOnCall()) lrs_call_->SendReportLocked();
1358
- }
1359
-
1360
- //
1361
- // XdsClient::XdsChannel::LrsCall
1439
+ // XdsClient::ResourceState
1362
1440
  //
1363
1441
 
1364
- XdsClient::XdsChannel::LrsCall::LrsCall(
1365
- RefCountedPtr<RetryableCall<LrsCall>> retryable_call)
1366
- : InternallyRefCounted<LrsCall>(
1367
- GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "LrsCall"
1368
- : nullptr),
1369
- retryable_call_(std::move(retryable_call)) {
1370
- // Init the LRS call. Note that the call will progress every time there's
1371
- // activity in xds_client()->interested_parties_, which is comprised of
1372
- // the polling entities from client_channel.
1373
- CHECK_NE(xds_client(), nullptr);
1374
- const char* method =
1375
- "/envoy.service.load_stats.v3.LoadReportingService/StreamLoadStats";
1376
- streaming_call_ = xds_channel()->transport_->CreateStreamingCall(
1377
- method, std::make_unique<StreamEventHandler>(
1378
- // Passing the initial ref here. This ref will go away when
1379
- // the StreamEventHandler is destroyed.
1380
- RefCountedPtr<LrsCall>(this)));
1381
- CHECK(streaming_call_ != nullptr);
1382
- // Start the call.
1383
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1384
- gpr_log(GPR_INFO,
1385
- "[xds_client %p] xds server %s: starting LRS call (lrs_call=%p, "
1386
- "streaming_call=%p)",
1387
- xds_client(), xds_channel()->server_.server_uri().c_str(), this,
1388
- streaming_call_.get());
1389
- }
1390
- // Send the initial request.
1391
- std::string serialized_payload = xds_client()->api_.CreateLrsInitialRequest();
1392
- SendMessageLocked(std::move(serialized_payload));
1393
- // Read initial response.
1394
- streaming_call_->StartRecvMessage();
1395
- }
1396
-
1397
- void XdsClient::XdsChannel::LrsCall::Orphan() {
1398
- timer_.reset();
1399
- // Note that the initial ref is held by the StreamEventHandler, which
1400
- // will be destroyed when streaming_call_ is destroyed, which may not happen
1401
- // here, since there may be other refs held to streaming_call_ by internal
1402
- // callbacks.
1403
- streaming_call_.reset();
1404
- }
1405
-
1406
- void XdsClient::XdsChannel::LrsCall::MaybeScheduleNextReportLocked() {
1407
- // If there are no more registered stats to report, cancel the call.
1408
- auto it = xds_client()->xds_load_report_server_map_.find(
1409
- xds_channel()->server_.Key());
1410
- if (it == xds_client()->xds_load_report_server_map_.end() ||
1411
- it->second.load_report_map.empty()) {
1412
- it->second.xds_channel->StopLrsCallLocked();
1413
- return;
1442
+ void XdsClient::ResourceState::SetAcked(
1443
+ std::shared_ptr<const XdsResourceType::ResourceData> resource,
1444
+ std::string serialized_proto, std::string version, Timestamp update_time) {
1445
+ resource_ = std::move(resource);
1446
+ client_status_ = ClientResourceStatus::ACKED;
1447
+ serialized_proto_ = std::move(serialized_proto);
1448
+ update_time_ = update_time;
1449
+ version_ = std::move(version);
1450
+ failed_version_.clear();
1451
+ failed_status_ = absl::OkStatus();
1452
+ }
1453
+
1454
+ void XdsClient::ResourceState::SetNacked(const std::string& version,
1455
+ absl::string_view details,
1456
+ Timestamp update_time,
1457
+ bool drop_cached_resource) {
1458
+ if (drop_cached_resource) {
1459
+ resource_.reset();
1460
+ serialized_proto_.clear();
1461
+ }
1462
+ client_status_ = ClientResourceStatus::NACKED;
1463
+ failed_status_ =
1464
+ absl::InvalidArgumentError(absl::StrCat("invalid resource: ", details));
1465
+ failed_version_ = version;
1466
+ failed_update_time_ = update_time;
1467
+ }
1468
+
1469
+ void XdsClient::ResourceState::SetReceivedError(const std::string& version,
1470
+ absl::Status status,
1471
+ Timestamp update_time,
1472
+ bool drop_cached_resource) {
1473
+ if (drop_cached_resource) {
1474
+ resource_.reset();
1475
+ serialized_proto_.clear();
1476
+ }
1477
+ client_status_ = ClientResourceStatus::RECEIVED_ERROR;
1478
+ failed_version_ = version;
1479
+ failed_status_ = std::move(status);
1480
+ failed_update_time_ = update_time;
1481
+ }
1482
+
1483
+ void XdsClient::ResourceState::SetDoesNotExistOnLdsOrCdsDeletion(
1484
+ const std::string& version, Timestamp update_time,
1485
+ bool drop_cached_resource) {
1486
+ if (drop_cached_resource) {
1487
+ resource_.reset();
1488
+ serialized_proto_.clear();
1489
+ }
1490
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1491
+ failed_status_ = absl::NotFoundError("does not exist");
1492
+ failed_version_ = version;
1493
+ failed_update_time_ = update_time;
1494
+ }
1495
+
1496
+ void XdsClient::ResourceState::SetDoesNotExistOnTimeout() {
1497
+ client_status_ = ClientResourceStatus::DOES_NOT_EXIST;
1498
+ failed_status_ = absl::NotFoundError("does not exist");
1499
+ failed_version_.clear();
1500
+ }
1501
+
1502
+ void XdsClient::ResourceState::SetTimeout(const std::string& details) {
1503
+ client_status_ = ClientResourceStatus::TIMEOUT;
1504
+ failed_status_ = absl::UnavailableError(details);
1505
+ failed_version_.clear();
1506
+ }
1507
+
1508
+ absl::string_view XdsClient::ResourceState::CacheStateString() const {
1509
+ switch (client_status_) {
1510
+ case ClientResourceStatus::REQUESTED:
1511
+ return "requested";
1512
+ case ClientResourceStatus::DOES_NOT_EXIST:
1513
+ return resource_ != nullptr ? "does_not_exist_but_cached"
1514
+ : "does_not_exist";
1515
+ case ClientResourceStatus::ACKED:
1516
+ return "acked";
1517
+ case ClientResourceStatus::NACKED:
1518
+ return resource_ != nullptr ? "nacked_but_cached" : "nacked";
1519
+ case ClientResourceStatus::RECEIVED_ERROR:
1520
+ return resource_ != nullptr ? "received_error_but_cached"
1521
+ : "received_error";
1522
+ case ClientResourceStatus::TIMEOUT:
1523
+ return "timeout";
1414
1524
  }
1415
- // Don't start if the previous send_message op hasn't completed yet.
1416
- // If this happens, we'll be called again from OnRequestSent().
1417
- if (send_message_pending_) return;
1418
- // Don't start if no LRS response has arrived.
1419
- if (!seen_response()) return;
1420
- // If there is no timer, create one.
1421
- // This happens on the initial response and whenever the interval changes.
1422
- if (timer_ == nullptr) {
1423
- timer_ = MakeOrphanable<Timer>(Ref(DEBUG_LOCATION, "LRS timer"));
1424
- }
1425
- // Schedule the next load report.
1426
- timer_->ScheduleNextReportLocked();
1525
+ Crash("unknown resource state");
1427
1526
  }
1428
1527
 
1429
1528
  namespace {
1430
1529
 
1431
- bool LoadReportCountersAreZero(const XdsApi::ClusterLoadReportMap& snapshot) {
1432
- for (const auto& p : snapshot) {
1433
- const XdsApi::ClusterLoadReport& cluster_snapshot = p.second;
1434
- if (!cluster_snapshot.dropped_requests.IsZero()) return false;
1435
- for (const auto& q : cluster_snapshot.locality_stats) {
1436
- const XdsClusterLocalityStats::Snapshot& locality_snapshot = q.second;
1437
- if (!locality_snapshot.IsZero()) return false;
1438
- }
1439
- }
1440
- return true;
1530
+ google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
1531
+ google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
1532
+ gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
1533
+ google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
1534
+ google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
1535
+ return timestamp;
1441
1536
  }
1442
1537
 
1443
1538
  } // namespace
1444
1539
 
1445
- void XdsClient::XdsChannel::LrsCall::SendReportLocked() {
1446
- // Construct snapshot from all reported stats.
1447
- XdsApi::ClusterLoadReportMap snapshot =
1448
- xds_client()->BuildLoadReportSnapshotLocked(
1449
- xds_channel()->server_, send_all_clusters_, cluster_names_);
1450
- // Skip client load report if the counters were all zero in the last
1451
- // report and they are still zero in this one.
1452
- const bool old_val = last_report_counters_were_zero_;
1453
- last_report_counters_were_zero_ = LoadReportCountersAreZero(snapshot);
1454
- if (old_val && last_report_counters_were_zero_) {
1455
- MaybeScheduleNextReportLocked();
1456
- return;
1457
- }
1458
- // Send a request that contains the snapshot.
1459
- std::string serialized_payload =
1460
- xds_client()->api_.CreateLrsRequest(std::move(snapshot));
1461
- SendMessageLocked(std::move(serialized_payload));
1462
- }
1463
-
1464
- void XdsClient::XdsChannel::LrsCall::SendMessageLocked(std::string payload) {
1465
- send_message_pending_ = true;
1466
- streaming_call_->SendMessage(std::move(payload));
1467
- }
1468
-
1469
- void XdsClient::XdsChannel::LrsCall::OnRequestSent() {
1470
- MutexLock lock(&xds_client()->mu_);
1471
- send_message_pending_ = false;
1472
- if (IsCurrentCallOnChannel()) MaybeScheduleNextReportLocked();
1473
- }
1474
-
1475
- void XdsClient::XdsChannel::LrsCall::OnRecvMessage(absl::string_view payload) {
1476
- MutexLock lock(&xds_client()->mu_);
1477
- // If we're no longer the current call, ignore the result.
1478
- if (!IsCurrentCallOnChannel()) return;
1479
- // Start recv after any code branch
1480
- auto cleanup = absl::MakeCleanup(
1481
- [call = streaming_call_.get()]() { call->StartRecvMessage(); });
1482
- // Parse the response.
1483
- bool send_all_clusters = false;
1484
- std::set<std::string> new_cluster_names;
1485
- Duration new_load_reporting_interval;
1486
- absl::Status status = xds_client()->api_.ParseLrsResponse(
1487
- payload, &send_all_clusters, &new_cluster_names,
1488
- &new_load_reporting_interval);
1489
- if (!status.ok()) {
1490
- gpr_log(GPR_ERROR,
1491
- "[xds_client %p] xds server %s: LRS response parsing failed: %s",
1492
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1493
- status.ToString().c_str());
1494
- return;
1495
- }
1496
- seen_response_ = true;
1497
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1498
- gpr_log(
1499
- GPR_INFO,
1500
- "[xds_client %p] xds server %s: LRS response received, %" PRIuPTR
1501
- " cluster names, send_all_clusters=%d, load_report_interval=%" PRId64
1502
- "ms",
1503
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1504
- new_cluster_names.size(), send_all_clusters,
1505
- new_load_reporting_interval.millis());
1506
- size_t i = 0;
1507
- for (const auto& name : new_cluster_names) {
1508
- gpr_log(GPR_INFO, "[xds_client %p] cluster_name %" PRIuPTR ": %s",
1509
- xds_client(), i++, name.c_str());
1510
- }
1511
- }
1512
- if (new_load_reporting_interval <
1513
- Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS)) {
1514
- new_load_reporting_interval =
1515
- Duration::Milliseconds(GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
1516
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1517
- gpr_log(GPR_INFO,
1518
- "[xds_client %p] xds server %s: increased load_report_interval "
1519
- "to minimum value %dms",
1520
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1521
- GRPC_XDS_MIN_CLIENT_LOAD_REPORTING_INTERVAL_MS);
1522
- }
1540
+ void XdsClient::ResourceState::FillGenericXdsConfig(
1541
+ upb_StringView type_url, upb_StringView resource_name, upb_Arena* arena,
1542
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) const {
1543
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
1544
+ type_url);
1545
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
1546
+ resource_name);
1547
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
1548
+ entry, client_status_);
1549
+ if (!serialized_proto_.empty()) {
1550
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
1551
+ entry, StdStringToUpbString(version_));
1552
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
1553
+ entry, EncodeTimestamp(update_time_, arena));
1554
+ auto* any_field =
1555
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
1556
+ entry, arena);
1557
+ google_protobuf_Any_set_type_url(any_field, type_url);
1558
+ google_protobuf_Any_set_value(any_field,
1559
+ StdStringToUpbString(serialized_proto_));
1523
1560
  }
1524
- // Ignore identical update.
1525
- if (send_all_clusters == send_all_clusters_ &&
1526
- cluster_names_ == new_cluster_names &&
1527
- load_reporting_interval_ == new_load_reporting_interval) {
1528
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1529
- gpr_log(GPR_INFO,
1530
- "[xds_client %p] xds server %s: incoming LRS response identical "
1531
- "to current, ignoring.",
1532
- xds_client(), xds_channel()->server_.server_uri().c_str());
1561
+ if (!failed_status_.ok()) {
1562
+ auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
1563
+ envoy_admin_v3_UpdateFailureState_set_details(
1564
+ update_failure_state, StdStringToUpbString(failed_status_.message()));
1565
+ if (!failed_version_.empty()) {
1566
+ envoy_admin_v3_UpdateFailureState_set_version_info(
1567
+ update_failure_state, StdStringToUpbString(failed_version_));
1568
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
1569
+ update_failure_state, EncodeTimestamp(failed_update_time_, arena));
1533
1570
  }
1534
- return;
1535
- }
1536
- // If the interval has changed, we'll need to restart the timer below.
1537
- const bool restart_timer =
1538
- load_reporting_interval_ != new_load_reporting_interval;
1539
- // Record the new config.
1540
- send_all_clusters_ = send_all_clusters;
1541
- cluster_names_ = std::move(new_cluster_names);
1542
- load_reporting_interval_ = new_load_reporting_interval;
1543
- // Restart timer if needed.
1544
- if (restart_timer) {
1545
- timer_.reset();
1546
- MaybeScheduleNextReportLocked();
1547
- }
1548
- }
1549
-
1550
- void XdsClient::XdsChannel::LrsCall::OnStatusReceived(absl::Status status) {
1551
- MutexLock lock(&xds_client()->mu_);
1552
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1553
- gpr_log(GPR_INFO,
1554
- "[xds_client %p] xds server %s: LRS call status received "
1555
- "(xds_channel=%p, lrs_call=%p, streaming_call=%p): %s",
1556
- xds_client(), xds_channel()->server_.server_uri().c_str(),
1557
- xds_channel(), this, streaming_call_.get(),
1558
- status.ToString().c_str());
1559
- }
1560
- // Ignore status from a stale call.
1561
- if (IsCurrentCallOnChannel()) {
1562
- // Try to restart the call.
1563
- retryable_call_->OnCallFinishedLocked();
1571
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
1572
+ entry, update_failure_state);
1564
1573
  }
1565
1574
  }
1566
1575
 
1567
- bool XdsClient::XdsChannel::LrsCall::IsCurrentCallOnChannel() const {
1568
- // If the retryable LRS call is null (which only happens when the xds
1569
- // channel is shutting down), all the LRS calls are stale.
1570
- if (xds_channel()->lrs_call_ == nullptr) return false;
1571
- return this == xds_channel()->lrs_call_->call();
1572
- }
1573
-
1574
1576
  //
1575
1577
  // XdsClient
1576
1578
  //
@@ -1578,56 +1580,51 @@ bool XdsClient::XdsChannel::LrsCall::IsCurrentCallOnChannel() const {
1578
1580
  constexpr absl::string_view XdsClient::kOldStyleAuthority;
1579
1581
 
1580
1582
  XdsClient::XdsClient(
1581
- std::unique_ptr<XdsBootstrap> bootstrap,
1582
- OrphanablePtr<XdsTransportFactory> transport_factory,
1583
+ std::shared_ptr<XdsBootstrap> bootstrap,
1584
+ RefCountedPtr<XdsTransportFactory> transport_factory,
1583
1585
  std::shared_ptr<grpc_event_engine::experimental::EventEngine> engine,
1584
1586
  std::unique_ptr<XdsMetricsReporter> metrics_reporter,
1585
1587
  std::string user_agent_name, std::string user_agent_version,
1586
1588
  Duration resource_request_timeout)
1587
1589
  : DualRefCounted<XdsClient>(
1588
- GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_refcount_trace) ? "XdsClient"
1589
- : nullptr),
1590
+ GRPC_TRACE_FLAG_ENABLED(xds_client_refcount) ? "XdsClient" : nullptr),
1590
1591
  bootstrap_(std::move(bootstrap)),
1592
+ user_agent_name_(std::move(user_agent_name)),
1593
+ user_agent_version_(std::move(user_agent_version)),
1591
1594
  transport_factory_(std::move(transport_factory)),
1592
1595
  request_timeout_(resource_request_timeout),
1593
1596
  xds_federation_enabled_(XdsFederationEnabled()),
1594
- api_(this, &grpc_xds_client_trace, bootstrap_->node(), &def_pool_,
1595
- std::move(user_agent_name), std::move(user_agent_version)),
1596
1597
  work_serializer_(engine),
1597
1598
  engine_(std::move(engine)),
1598
1599
  metrics_reporter_(std::move(metrics_reporter)) {
1599
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1600
- gpr_log(GPR_INFO, "[xds_client %p] creating xds client", this);
1601
- }
1600
+ GRPC_TRACE_LOG(xds_client, INFO)
1601
+ << "[xds_client " << this << "] creating xds client";
1602
1602
  CHECK(bootstrap_ != nullptr);
1603
1603
  if (bootstrap_->node() != nullptr) {
1604
- gpr_log(GPR_INFO, "[xds_client %p] xDS node ID: %s", this,
1605
- bootstrap_->node()->id().c_str());
1604
+ GRPC_TRACE_LOG(xds_client, INFO)
1605
+ << "[xds_client " << this
1606
+ << "] xDS node ID: " << bootstrap_->node()->id();
1606
1607
  }
1607
1608
  }
1608
1609
 
1609
1610
  XdsClient::~XdsClient() {
1610
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1611
- gpr_log(GPR_INFO, "[xds_client %p] destroying xds client", this);
1612
- }
1611
+ GRPC_TRACE_LOG(xds_client, INFO)
1612
+ << "[xds_client " << this << "] destroying xds client";
1613
1613
  }
1614
1614
 
1615
1615
  void XdsClient::Orphaned() {
1616
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1617
- gpr_log(GPR_INFO, "[xds_client %p] shutting down xds client", this);
1618
- }
1616
+ GRPC_TRACE_LOG(xds_client, INFO)
1617
+ << "[xds_client " << this << "] shutting down xds client";
1619
1618
  MutexLock lock(&mu_);
1620
1619
  shutting_down_ = true;
1621
1620
  // Clear cache and any remaining watchers that may not have been cancelled.
1622
- authority_state_map_.clear();
1621
+ // Note: We move authority_state_map_ out of the way before clearing
1622
+ // it, because clearing the map will trigger calls to
1623
+ // MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(), which would try to
1624
+ // modify the map while we are iterating over it.
1625
+ auto authority_state_map = std::move(authority_state_map_);
1626
+ authority_state_map.clear();
1623
1627
  invalid_watchers_.clear();
1624
- // We may still be sending lingering queued load report data, so don't
1625
- // just clear the load reporting map, but we do want to clear the refs
1626
- // we're holding to the XdsChannel objects, to make sure that
1627
- // everything shuts down properly.
1628
- for (auto& p : xds_load_report_server_map_) {
1629
- p.second.xds_channel.reset(DEBUG_LOCATION, "XdsClient::Orphan()");
1630
- }
1631
1628
  }
1632
1629
 
1633
1630
  RefCountedPtr<XdsClient::XdsChannel> XdsClient::GetOrCreateXdsChannelLocked(
@@ -1645,10 +1642,11 @@ RefCountedPtr<XdsClient::XdsChannel> XdsClient::GetOrCreateXdsChannelLocked(
1645
1642
  }
1646
1643
 
1647
1644
  bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1648
- for (const auto& type_resource : authority_state.resource_map) {
1649
- for (const auto& key_state : type_resource.second) {
1650
- if (key_state.second.meta.client_status ==
1651
- XdsApi::ResourceMetadata::REQUESTED) {
1645
+ for (const auto& [_, resource_map] : authority_state.type_map) {
1646
+ for (const auto& [_, resource_state] : resource_map) {
1647
+ if (resource_state.HasWatchers() &&
1648
+ resource_state.client_status() ==
1649
+ ResourceState::ClientResourceStatus::REQUESTED) {
1652
1650
  return true;
1653
1651
  }
1654
1652
  }
@@ -1659,24 +1657,19 @@ bool XdsClient::HasUncachedResources(const AuthorityState& authority_state) {
1659
1657
  void XdsClient::WatchResource(const XdsResourceType* type,
1660
1658
  absl::string_view name,
1661
1659
  RefCountedPtr<ResourceWatcherInterface> watcher) {
1662
- ResourceWatcherInterface* w = watcher.get();
1663
1660
  // Lambda for handling failure cases.
1664
1661
  auto fail = [&](absl::Status status) mutable {
1665
1662
  {
1666
1663
  MutexLock lock(&mu_);
1667
1664
  MaybeRegisterResourceTypeLocked(type);
1668
- invalid_watchers_[w] = watcher;
1665
+ invalid_watchers_.insert(watcher);
1669
1666
  }
1670
- work_serializer_.Run(
1671
- [watcher = std::move(watcher), status = std::move(status)]()
1672
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1673
- watcher->OnError(status, ReadDelayHandle::NoWait());
1674
- },
1675
- DEBUG_LOCATION);
1667
+ NotifyWatchersOnResourceChanged(std::move(status), {watcher},
1668
+ ReadDelayHandle::NoWait());
1676
1669
  };
1677
1670
  auto resource_name = ParseXdsResourceName(name, type);
1678
1671
  if (!resource_name.ok()) {
1679
- fail(absl::UnavailableError(
1672
+ fail(absl::InvalidArgumentError(
1680
1673
  absl::StrCat("Unable to parse resource name ", name)));
1681
1674
  return;
1682
1675
  }
@@ -1686,7 +1679,7 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1686
1679
  auto* authority =
1687
1680
  bootstrap_->LookupAuthority(std::string(resource_name->authority));
1688
1681
  if (authority == nullptr) {
1689
- fail(absl::UnavailableError(
1682
+ fail(absl::FailedPreconditionError(
1690
1683
  absl::StrCat("authority \"", resource_name->authority,
1691
1684
  "\" not present in bootstrap config")));
1692
1685
  return;
@@ -1694,113 +1687,67 @@ void XdsClient::WatchResource(const XdsResourceType* type,
1694
1687
  xds_servers = authority->servers();
1695
1688
  }
1696
1689
  if (xds_servers.empty()) xds_servers = bootstrap_->servers();
1697
- {
1698
- MutexLock lock(&mu_);
1699
- MaybeRegisterResourceTypeLocked(type);
1700
-
1701
- AuthorityState& authority_state =
1702
- authority_state_map_[resource_name->authority];
1703
- auto it_is_new = authority_state.resource_map[type].emplace(
1704
- resource_name->key, ResourceState());
1705
- bool first_watcher_for_resource = it_is_new.second;
1706
- ResourceState& resource_state = it_is_new.first->second;
1707
- resource_state.watchers[w] = watcher;
1708
- if (first_watcher_for_resource) {
1709
- // We try to add new channels in 2 cases:
1710
- // - This is the first resource for this authority (i.e., the list
1711
- // of channels is empty).
1712
- // - The last channel in the list is failing. That failure may not
1713
- // have previously triggered fallback if there were no uncached
1714
- // resources, but we've just added a new uncached resource,
1715
- // so we need to trigger fallback now.
1716
- //
1717
- // Note that when we add a channel, it might already be failing
1718
- // due to being used in a different authority. So we keep going
1719
- // until either we add one that isn't failing or we've added them all.
1720
- if (authority_state.xds_channels.empty() ||
1721
- !authority_state.xds_channels.back()->status().ok()) {
1722
- for (size_t i = authority_state.xds_channels.size();
1723
- i < xds_servers.size(); ++i) {
1724
- authority_state.xds_channels.emplace_back(
1725
- GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1726
- if (authority_state.xds_channels.back()->status().ok()) {
1727
- break;
1728
- }
1729
- }
1730
- }
1731
- for (const auto& channel : authority_state.xds_channels) {
1732
- channel->SubscribeLocked(type, *resource_name);
1733
- }
1734
- } else {
1735
- // If we already have a cached value for the resource, notify the new
1736
- // watcher immediately.
1737
- if (resource_state.resource != nullptr) {
1738
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1739
- gpr_log(GPR_INFO,
1740
- "[xds_client %p] returning cached listener data for %s", this,
1741
- std::string(name).c_str());
1742
- }
1743
- work_serializer_.Schedule(
1744
- [watcher, value = resource_state.resource]()
1745
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1746
- watcher->OnGenericResourceChanged(value,
1747
- ReadDelayHandle::NoWait());
1748
- },
1749
- DEBUG_LOCATION);
1750
- } else if (resource_state.meta.client_status ==
1751
- XdsApi::ResourceMetadata::DOES_NOT_EXIST) {
1752
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1753
- gpr_log(GPR_INFO,
1754
- "[xds_client %p] reporting cached does-not-exist for %s",
1755
- this, std::string(name).c_str());
1756
- }
1757
- work_serializer_.Schedule(
1758
- [watcher]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1759
- watcher->OnResourceDoesNotExist(ReadDelayHandle::NoWait());
1760
- },
1761
- DEBUG_LOCATION);
1762
- } else if (resource_state.meta.client_status ==
1763
- XdsApi::ResourceMetadata::NACKED) {
1764
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1765
- gpr_log(
1766
- GPR_INFO,
1767
- "[xds_client %p] reporting cached validation failure for %s: %s",
1768
- this, std::string(name).c_str(),
1769
- resource_state.meta.failed_details.c_str());
1770
- }
1771
- std::string details = resource_state.meta.failed_details;
1772
- const auto* node = bootstrap_->node();
1773
- if (node != nullptr) {
1774
- absl::StrAppend(&details, " (node ID:", bootstrap_->node()->id(),
1775
- ")");
1690
+ MutexLock lock(&mu_);
1691
+ MaybeRegisterResourceTypeLocked(type);
1692
+ AuthorityState& authority_state =
1693
+ authority_state_map_[resource_name->authority];
1694
+ auto [it, created_entry] = authority_state.type_map[type].emplace(
1695
+ resource_name->key, ResourceState());
1696
+ ResourceState& resource_state = it->second;
1697
+ resource_state.AddWatcher(watcher);
1698
+ if (created_entry) {
1699
+ // We try to add new channels in 2 cases:
1700
+ // - This is the first resource for this authority (i.e., the list
1701
+ // of channels is empty).
1702
+ // - The last channel in the list is failing. That failure may not
1703
+ // have previously triggered fallback if there were no uncached
1704
+ // resources, but we've just added a new uncached resource,
1705
+ // so we need to trigger fallback now.
1706
+ //
1707
+ // Note that when we add a channel, it might already be failing
1708
+ // due to being used in a different authority. So we keep going
1709
+ // until either we add one that isn't failing or we've added them all.
1710
+ if (authority_state.xds_channels.empty() ||
1711
+ !authority_state.xds_channels.back()->status().ok()) {
1712
+ for (size_t i = authority_state.xds_channels.size();
1713
+ i < xds_servers.size(); ++i) {
1714
+ authority_state.xds_channels.emplace_back(
1715
+ GetOrCreateXdsChannelLocked(*xds_servers[i], "start watch"));
1716
+ if (authority_state.xds_channels.back()->status().ok()) {
1717
+ break;
1776
1718
  }
1777
- work_serializer_.Schedule(
1778
- [watcher, details = std::move(details)]()
1779
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
1780
- watcher->OnError(absl::UnavailableError(absl::StrCat(
1781
- "invalid resource: ", details)),
1782
- ReadDelayHandle::NoWait());
1783
- },
1784
- DEBUG_LOCATION);
1785
1719
  }
1786
1720
  }
1787
- absl::Status channel_status = authority_state.xds_channels.back()->status();
1788
- if (!channel_status.ok()) {
1789
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
1790
- gpr_log(GPR_INFO,
1791
- "[xds_client %p] returning cached channel error for %s: %s",
1792
- this, std::string(name).c_str(),
1793
- channel_status.ToString().c_str());
1794
- }
1795
- work_serializer_.Schedule(
1796
- [watcher = std::move(watcher), status = std::move(channel_status)]()
1797
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) mutable {
1798
- watcher->OnError(std::move(status), ReadDelayHandle::NoWait());
1799
- },
1800
- DEBUG_LOCATION);
1721
+ } else {
1722
+ // If we already have a cached value for the resource, notify the new
1723
+ // watcher immediately.
1724
+ if (resource_state.HasResource()) {
1725
+ GRPC_TRACE_LOG(xds_client, INFO)
1726
+ << "[xds_client " << this << "] returning cached data for " << name;
1727
+ NotifyWatchersOnResourceChanged(resource_state.resource(), {watcher},
1728
+ ReadDelayHandle::NoWait());
1729
+ }
1730
+ if (!resource_state.failed_status().ok()) {
1731
+ GRPC_TRACE_LOG(xds_client, INFO)
1732
+ << "[xds_client " << this << "] returning cached error for " << name
1733
+ << ": " << resource_state.failed_status();
1734
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(),
1735
+ {watcher});
1801
1736
  }
1802
1737
  }
1803
- work_serializer_.DrainQueue();
1738
+ // Make sure all channels are subscribing to the resource.
1739
+ for (const auto& channel : authority_state.xds_channels) {
1740
+ channel->SubscribeLocked(type, *resource_name);
1741
+ }
1742
+ // If the channel is not connected, report an error to the watcher.
1743
+ absl::Status channel_status = authority_state.xds_channels.back()->status();
1744
+ if (!channel_status.ok()) {
1745
+ GRPC_TRACE_LOG(xds_client, INFO)
1746
+ << "[xds_client " << this << "] returning cached channel error for "
1747
+ << name << ": " << channel_status;
1748
+ NotifyWatchersOnError(resource_state, ReadDelayHandle::NoWait(), {watcher},
1749
+ std::move(channel_status));
1750
+ }
1804
1751
  }
1805
1752
 
1806
1753
  void XdsClient::CancelResourceWatch(const XdsResourceType* type,
@@ -1818,35 +1765,63 @@ void XdsClient::CancelResourceWatch(const XdsResourceType* type,
1818
1765
  if (authority_it == authority_state_map_.end()) return;
1819
1766
  AuthorityState& authority_state = authority_it->second;
1820
1767
  // Find type map.
1821
- auto type_it = authority_state.resource_map.find(type);
1822
- if (type_it == authority_state.resource_map.end()) return;
1823
- auto& type_map = type_it->second;
1768
+ auto type_it = authority_state.type_map.find(type);
1769
+ if (type_it == authority_state.type_map.end()) return;
1770
+ auto& resource_map = type_it->second;
1824
1771
  // Find resource key.
1825
- auto resource_it = type_map.find(resource_name->key);
1826
- if (resource_it == type_map.end()) return;
1772
+ auto resource_it = resource_map.find(resource_name->key);
1773
+ if (resource_it == resource_map.end()) return;
1827
1774
  ResourceState& resource_state = resource_it->second;
1828
1775
  // Remove watcher.
1829
- resource_state.watchers.erase(watcher);
1830
- // Clean up empty map entries, if any.
1831
- if (resource_state.watchers.empty()) {
1832
- if (resource_state.ignored_deletion) {
1833
- gpr_log(GPR_INFO,
1834
- "[xds_client %p] unsubscribing from a resource for which we "
1835
- "previously ignored a deletion: type %s name %s",
1836
- this, std::string(type->type_url()).c_str(),
1837
- std::string(name).c_str());
1838
- }
1776
+ resource_state.RemoveWatcher(watcher);
1777
+ // If this was the last watcher, clean up.
1778
+ if (!resource_state.HasWatchers()) {
1779
+ // Unsubscribe from this resource on all XdsChannels.
1839
1780
  for (const auto& xds_channel : authority_state.xds_channels) {
1840
1781
  xds_channel->UnsubscribeLocked(type, *resource_name,
1841
1782
  delay_unsubscription);
1842
1783
  }
1843
- type_map.erase(resource_it);
1844
- if (type_map.empty()) {
1845
- authority_state.resource_map.erase(type_it);
1846
- if (authority_state.resource_map.empty()) {
1847
- authority_state.xds_channels.clear();
1784
+ // Note: We wait to remove the cache entry until we actualle send
1785
+ // the unsubscription message on the ADS stream, so that if a watch is
1786
+ // stopped and then started again before we send the next request
1787
+ // for that resource type, we don't lose the cache entry without the
1788
+ // xDS server knowing it needs to re-send it.
1789
+ //
1790
+ // Note: Because the cache cleanup may have been triggered by the
1791
+ // unsubscription, it's no longer safe to access any of the
1792
+ // iterators that we have from above.
1793
+ }
1794
+ }
1795
+
1796
+ void XdsClient::MaybeRemoveUnsubscribedCacheEntriesForTypeLocked(
1797
+ XdsChannel* xds_channel, const XdsResourceType* type) {
1798
+ for (auto authority_it = authority_state_map_.begin();
1799
+ authority_it != authority_state_map_.end();) {
1800
+ AuthorityState& authority_state = authority_it->second;
1801
+ if (authority_state.xds_channels.back() == xds_channel) {
1802
+ // Find type map.
1803
+ auto type_it = authority_state.type_map.find(type);
1804
+ if (type_it != authority_state.type_map.end()) {
1805
+ auto& resource_map = type_it->second;
1806
+ // Remove the cache entry for any resource without watchers.
1807
+ for (auto resource_it = resource_map.begin();
1808
+ resource_it != resource_map.end();) {
1809
+ ResourceState& resource_state = resource_it->second;
1810
+ if (!resource_state.HasWatchers()) {
1811
+ resource_map.erase(resource_it++);
1812
+ } else {
1813
+ ++resource_it;
1814
+ }
1815
+ }
1816
+ // Clean up empty entries in the map.
1817
+ if (resource_map.empty()) authority_state.type_map.erase(type_it);
1848
1818
  }
1849
1819
  }
1820
+ if (authority_state.type_map.empty()) {
1821
+ authority_state_map_.erase(authority_it++);
1822
+ } else {
1823
+ ++authority_it;
1824
+ }
1850
1825
  }
1851
1826
  }
1852
1827
 
@@ -1889,9 +1864,9 @@ absl::StatusOr<XdsClient::XdsResourceName> XdsClient::ParseXdsResourceName(
1889
1864
  }
1890
1865
  // Canonicalize order of query params.
1891
1866
  std::vector<URI::QueryParam> query_params;
1892
- for (const auto& p : uri->query_parameter_map()) {
1867
+ for (const auto& [key, value] : uri->query_parameter_map()) {
1893
1868
  query_params.emplace_back(
1894
- URI::QueryParam{std::string(p.first), std::string(p.second)});
1869
+ URI::QueryParam{std::string(key), std::string(value)});
1895
1870
  }
1896
1871
  return XdsResourceName{
1897
1872
  uri->authority(),
@@ -1912,315 +1887,67 @@ std::string XdsClient::ConstructFullXdsResourceName(
1912
1887
  return key.id;
1913
1888
  }
1914
1889
 
1915
- RefCountedPtr<XdsClusterDropStats> XdsClient::AddClusterDropStats(
1916
- const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
1917
- absl::string_view eds_service_name) {
1918
- auto key =
1919
- std::make_pair(std::string(cluster_name), std::string(eds_service_name));
1920
- RefCountedPtr<XdsClusterDropStats> cluster_drop_stats;
1921
- {
1922
- MutexLock lock(&mu_);
1923
- // We jump through some hoops here to make sure that the
1924
- // absl::string_views stored in the XdsClusterDropStats object point
1925
- // to the strings in the xds_load_report_server_map_ keys, so that
1926
- // they have the same lifetime.
1927
- auto server_it = xds_load_report_server_map_
1928
- .emplace(xds_server.Key(), LoadReportServer())
1929
- .first;
1930
- if (server_it->second.xds_channel == nullptr) {
1931
- server_it->second.xds_channel = GetOrCreateXdsChannelLocked(
1932
- xds_server, "load report map (drop stats)");
1933
- }
1934
- auto load_report_it = server_it->second.load_report_map
1935
- .emplace(std::move(key), LoadReportState())
1936
- .first;
1937
- LoadReportState& load_report_state = load_report_it->second;
1938
- if (load_report_state.drop_stats != nullptr) {
1939
- cluster_drop_stats = load_report_state.drop_stats->RefIfNonZero();
1940
- }
1941
- if (cluster_drop_stats == nullptr) {
1942
- if (load_report_state.drop_stats != nullptr) {
1943
- load_report_state.deleted_drop_stats +=
1944
- load_report_state.drop_stats->GetSnapshotAndReset();
1945
- }
1946
- cluster_drop_stats = MakeRefCounted<XdsClusterDropStats>(
1947
- Ref(DEBUG_LOCATION, "DropStats"), server_it->first /*xds_server*/,
1948
- load_report_it->first.first /*cluster_name*/,
1949
- load_report_it->first.second /*eds_service_name*/);
1950
- load_report_state.drop_stats = cluster_drop_stats.get();
1951
- }
1952
- server_it->second.xds_channel->MaybeStartLrsCall();
1953
- }
1954
- work_serializer_.DrainQueue();
1955
- return cluster_drop_stats;
1956
- }
1957
-
1958
- void XdsClient::RemoveClusterDropStats(
1959
- absl::string_view xds_server_key, absl::string_view cluster_name,
1960
- absl::string_view eds_service_name,
1961
- XdsClusterDropStats* cluster_drop_stats) {
1962
- MutexLock lock(&mu_);
1963
- auto server_it = xds_load_report_server_map_.find(xds_server_key);
1964
- if (server_it == xds_load_report_server_map_.end()) return;
1965
- auto load_report_it = server_it->second.load_report_map.find(
1966
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
1967
- if (load_report_it == server_it->second.load_report_map.end()) return;
1968
- LoadReportState& load_report_state = load_report_it->second;
1969
- if (load_report_state.drop_stats == cluster_drop_stats) {
1970
- // Record final snapshot in deleted_drop_stats, which will be
1971
- // added to the next load report.
1972
- load_report_state.deleted_drop_stats +=
1973
- load_report_state.drop_stats->GetSnapshotAndReset();
1974
- load_report_state.drop_stats = nullptr;
1975
- }
1976
- }
1977
-
1978
- RefCountedPtr<XdsClusterLocalityStats> XdsClient::AddClusterLocalityStats(
1979
- const XdsBootstrap::XdsServer& xds_server, absl::string_view cluster_name,
1980
- absl::string_view eds_service_name,
1981
- RefCountedPtr<XdsLocalityName> locality) {
1982
- auto key =
1983
- std::make_pair(std::string(cluster_name), std::string(eds_service_name));
1984
- RefCountedPtr<XdsClusterLocalityStats> cluster_locality_stats;
1985
- {
1986
- MutexLock lock(&mu_);
1987
- // We jump through some hoops here to make sure that the
1988
- // absl::string_views stored in the XdsClusterDropStats object point
1989
- // to the strings in the xds_load_report_server_map_ keys, so that
1990
- // they have the same lifetime.
1991
- auto server_it = xds_load_report_server_map_
1992
- .emplace(xds_server.Key(), LoadReportServer())
1993
- .first;
1994
- if (server_it->second.xds_channel == nullptr) {
1995
- server_it->second.xds_channel = GetOrCreateXdsChannelLocked(
1996
- xds_server, "load report map (locality stats)");
1997
- }
1998
- auto load_report_it = server_it->second.load_report_map
1999
- .emplace(std::move(key), LoadReportState())
2000
- .first;
2001
- LoadReportState& load_report_state = load_report_it->second;
2002
- LoadReportState::LocalityState& locality_state =
2003
- load_report_state.locality_stats[locality];
2004
- if (locality_state.locality_stats != nullptr) {
2005
- cluster_locality_stats = locality_state.locality_stats->RefIfNonZero();
2006
- }
2007
- if (cluster_locality_stats == nullptr) {
2008
- if (locality_state.locality_stats != nullptr) {
2009
- locality_state.deleted_locality_stats +=
2010
- locality_state.locality_stats->GetSnapshotAndReset();
2011
- }
2012
- cluster_locality_stats = MakeRefCounted<XdsClusterLocalityStats>(
2013
- Ref(DEBUG_LOCATION, "LocalityStats"), server_it->first /*xds_server*/,
2014
- load_report_it->first.first /*cluster_name*/,
2015
- load_report_it->first.second /*eds_service_name*/,
2016
- std::move(locality));
2017
- locality_state.locality_stats = cluster_locality_stats.get();
2018
- }
2019
- server_it->second.xds_channel->MaybeStartLrsCall();
2020
- }
2021
- work_serializer_.DrainQueue();
2022
- return cluster_locality_stats;
2023
- }
2024
-
2025
- void XdsClient::RemoveClusterLocalityStats(
2026
- absl::string_view xds_server_key, absl::string_view cluster_name,
2027
- absl::string_view eds_service_name,
2028
- const RefCountedPtr<XdsLocalityName>& locality,
2029
- XdsClusterLocalityStats* cluster_locality_stats) {
2030
- MutexLock lock(&mu_);
2031
- auto server_it = xds_load_report_server_map_.find(xds_server_key);
2032
- if (server_it == xds_load_report_server_map_.end()) return;
2033
- auto load_report_it = server_it->second.load_report_map.find(
2034
- std::make_pair(std::string(cluster_name), std::string(eds_service_name)));
2035
- if (load_report_it == server_it->second.load_report_map.end()) return;
2036
- LoadReportState& load_report_state = load_report_it->second;
2037
- auto locality_it = load_report_state.locality_stats.find(locality);
2038
- if (locality_it == load_report_state.locality_stats.end()) return;
2039
- LoadReportState::LocalityState& locality_state = locality_it->second;
2040
- if (locality_state.locality_stats == cluster_locality_stats) {
2041
- // Record final snapshot in deleted_locality_stats, which will be
2042
- // added to the next load report.
2043
- locality_state.deleted_locality_stats +=
2044
- locality_state.locality_stats->GetSnapshotAndReset();
2045
- locality_state.locality_stats = nullptr;
2046
- }
2047
- }
2048
-
2049
1890
  void XdsClient::ResetBackoff() {
2050
1891
  MutexLock lock(&mu_);
2051
- for (auto& p : xds_channel_map_) {
2052
- p.second->ResetBackoff();
1892
+ for (auto& [_, xds_channel] : xds_channel_map_) {
1893
+ xds_channel->ResetBackoff();
2053
1894
  }
2054
1895
  }
2055
1896
 
2056
- void XdsClient::NotifyWatchersOnErrorLocked(
2057
- const std::map<ResourceWatcherInterface*,
2058
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
2059
- absl::Status status, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1897
+ absl::Status XdsClient::AppendNodeToStatus(const absl::Status& status) const {
2060
1898
  const auto* node = bootstrap_->node();
2061
- if (node != nullptr) {
2062
- status = absl::Status(
2063
- status.code(),
2064
- absl::StrCat(status.message(), " (node ID:", node->id(), ")"));
2065
- }
2066
- work_serializer_.Schedule(
2067
- [watchers, status = std::move(status),
1899
+ if (node == nullptr) return status;
1900
+ return absl::Status(
1901
+ status.code(), absl::StrCat(status.message(),
1902
+ " (node ID:", bootstrap_->node()->id(), ")"));
1903
+ }
1904
+
1905
+ void XdsClient::NotifyWatchersOnResourceChanged(
1906
+ absl::StatusOr<std::shared_ptr<const XdsResourceType::ResourceData>>
1907
+ resource,
1908
+ WatcherSet watchers, RefCountedPtr<ReadDelayHandle> read_delay_handle) {
1909
+ if (!resource.ok()) resource = AppendNodeToStatus(resource.status());
1910
+ work_serializer_.Run(
1911
+ [watchers = std::move(watchers), resource = std::move(resource),
2068
1912
  read_delay_handle = std::move(read_delay_handle)]()
2069
1913
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
2070
- for (const auto& p : watchers) {
2071
- p.first->OnError(status, read_delay_handle);
1914
+ for (const auto& watcher : watchers) {
1915
+ watcher->OnGenericResourceChanged(resource, read_delay_handle);
2072
1916
  }
2073
1917
  },
2074
1918
  DEBUG_LOCATION);
2075
1919
  }
2076
1920
 
2077
- void XdsClient::NotifyWatchersOnResourceDoesNotExist(
2078
- const std::map<ResourceWatcherInterface*,
2079
- RefCountedPtr<ResourceWatcherInterface>>& watchers,
1921
+ void XdsClient::NotifyWatchersOnAmbientError(
1922
+ absl::Status status, WatcherSet watchers,
2080
1923
  RefCountedPtr<ReadDelayHandle> read_delay_handle) {
2081
- work_serializer_.Schedule(
2082
- [watchers, read_delay_handle = std::move(read_delay_handle)]()
1924
+ if (!status.ok()) status = AppendNodeToStatus(status);
1925
+ work_serializer_.Run(
1926
+ [watchers = std::move(watchers), status = std::move(status),
1927
+ read_delay_handle = std::move(read_delay_handle)]()
2083
1928
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&work_serializer_) {
2084
- for (const auto& p : watchers) {
2085
- p.first->OnResourceDoesNotExist(read_delay_handle);
1929
+ for (const auto& watcher : watchers) {
1930
+ watcher->OnAmbientError(status, read_delay_handle);
2086
1931
  }
2087
1932
  },
2088
1933
  DEBUG_LOCATION);
2089
1934
  }
2090
1935
 
2091
- XdsApi::ClusterLoadReportMap XdsClient::BuildLoadReportSnapshotLocked(
2092
- const XdsBootstrap::XdsServer& xds_server, bool send_all_clusters,
2093
- const std::set<std::string>& clusters) {
2094
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
2095
- gpr_log(GPR_INFO, "[xds_client %p] start building load report", this);
2096
- }
2097
- XdsApi::ClusterLoadReportMap snapshot_map;
2098
- auto server_it = xds_load_report_server_map_.find(xds_server.Key());
2099
- if (server_it == xds_load_report_server_map_.end()) return snapshot_map;
2100
- auto& load_report_map = server_it->second.load_report_map;
2101
- for (auto load_report_it = load_report_map.begin();
2102
- load_report_it != load_report_map.end();) {
2103
- // Cluster key is cluster and EDS service name.
2104
- const auto& cluster_key = load_report_it->first;
2105
- LoadReportState& load_report = load_report_it->second;
2106
- // If the CDS response for a cluster indicates to use LRS but the
2107
- // LRS server does not say that it wants reports for this cluster,
2108
- // then we'll have stats objects here whose data we're not going to
2109
- // include in the load report. However, we still need to clear out
2110
- // the data from the stats objects, so that if the LRS server starts
2111
- // asking for the data in the future, we don't incorrectly include
2112
- // data from previous reporting intervals in that future report.
2113
- const bool record_stats =
2114
- send_all_clusters || clusters.find(cluster_key.first) != clusters.end();
2115
- XdsApi::ClusterLoadReport snapshot;
2116
- // Aggregate drop stats.
2117
- snapshot.dropped_requests = std::move(load_report.deleted_drop_stats);
2118
- if (load_report.drop_stats != nullptr) {
2119
- snapshot.dropped_requests +=
2120
- load_report.drop_stats->GetSnapshotAndReset();
2121
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
2122
- gpr_log(GPR_INFO,
2123
- "[xds_client %p] cluster=%s eds_service_name=%s drop_stats=%p",
2124
- this, cluster_key.first.c_str(), cluster_key.second.c_str(),
2125
- load_report.drop_stats);
2126
- }
2127
- }
2128
- // Aggregate locality stats.
2129
- for (auto it = load_report.locality_stats.begin();
2130
- it != load_report.locality_stats.end();) {
2131
- const RefCountedPtr<XdsLocalityName>& locality_name = it->first;
2132
- auto& locality_state = it->second;
2133
- XdsClusterLocalityStats::Snapshot& locality_snapshot =
2134
- snapshot.locality_stats[locality_name];
2135
- locality_snapshot = std::move(locality_state.deleted_locality_stats);
2136
- if (locality_state.locality_stats != nullptr) {
2137
- locality_snapshot +=
2138
- locality_state.locality_stats->GetSnapshotAndReset();
2139
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_client_trace)) {
2140
- gpr_log(GPR_INFO,
2141
- "[xds_client %p] cluster=%s eds_service_name=%s "
2142
- "locality=%s locality_stats=%p",
2143
- this, cluster_key.first.c_str(), cluster_key.second.c_str(),
2144
- locality_name->human_readable_string().c_str(),
2145
- locality_state.locality_stats);
2146
- }
2147
- }
2148
- // If the only thing left in this entry was final snapshots from
2149
- // deleted locality stats objects, remove the entry.
2150
- if (locality_state.locality_stats == nullptr) {
2151
- it = load_report.locality_stats.erase(it);
2152
- } else {
2153
- ++it;
2154
- }
2155
- }
2156
- // Compute load report interval.
2157
- const Timestamp now = Timestamp::Now();
2158
- snapshot.load_report_interval = now - load_report.last_report_time;
2159
- load_report.last_report_time = now;
2160
- // Record snapshot.
2161
- if (record_stats) {
2162
- snapshot_map[cluster_key] = std::move(snapshot);
2163
- }
2164
- // If the only thing left in this entry was final snapshots from
2165
- // deleted stats objects, remove the entry.
2166
- if (load_report.locality_stats.empty() &&
2167
- load_report.drop_stats == nullptr) {
2168
- load_report_it = load_report_map.erase(load_report_it);
2169
- } else {
2170
- ++load_report_it;
2171
- }
2172
- }
2173
- return snapshot_map;
2174
- }
2175
-
2176
- namespace {
2177
-
2178
- google_protobuf_Timestamp* EncodeTimestamp(Timestamp value, upb_Arena* arena) {
2179
- google_protobuf_Timestamp* timestamp = google_protobuf_Timestamp_new(arena);
2180
- gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
2181
- google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
2182
- google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
2183
- return timestamp;
2184
- }
2185
-
2186
- void FillGenericXdsConfig(
2187
- const XdsApi::ResourceMetadata& metadata, upb_StringView type_url,
2188
- upb_StringView resource_name, upb_Arena* arena,
2189
- envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry) {
2190
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(entry,
2191
- type_url);
2192
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(entry,
2193
- resource_name);
2194
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
2195
- entry, metadata.client_status);
2196
- if (!metadata.serialized_proto.empty()) {
2197
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
2198
- entry, StdStringToUpbString(metadata.version));
2199
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
2200
- entry, EncodeTimestamp(metadata.update_time, arena));
2201
- auto* any_field =
2202
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
2203
- entry, arena);
2204
- google_protobuf_Any_set_type_url(any_field, type_url);
2205
- google_protobuf_Any_set_value(
2206
- any_field, StdStringToUpbString(metadata.serialized_proto));
2207
- }
2208
- if (metadata.client_status == XdsApi::ResourceMetadata::NACKED) {
2209
- auto* update_failure_state = envoy_admin_v3_UpdateFailureState_new(arena);
2210
- envoy_admin_v3_UpdateFailureState_set_details(
2211
- update_failure_state, StdStringToUpbString(metadata.failed_details));
2212
- envoy_admin_v3_UpdateFailureState_set_version_info(
2213
- update_failure_state, StdStringToUpbString(metadata.failed_version));
2214
- envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
2215
- update_failure_state,
2216
- EncodeTimestamp(metadata.failed_update_time, arena));
2217
- envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
2218
- entry, update_failure_state);
1936
+ void XdsClient::NotifyWatchersOnError(
1937
+ const ResourceState& resource_state,
1938
+ RefCountedPtr<ReadDelayHandle> read_delay_handle, WatcherSet watchers,
1939
+ absl::Status status) {
1940
+ if (watchers.empty()) watchers = resource_state.watchers();
1941
+ if (status.ok()) status = resource_state.failed_status();
1942
+ if (!resource_state.HasResource()) {
1943
+ NotifyWatchersOnResourceChanged(std::move(status), std::move(watchers),
1944
+ std::move(read_delay_handle));
1945
+ } else {
1946
+ NotifyWatchersOnAmbientError(std::move(status), std::move(watchers),
1947
+ std::move(read_delay_handle));
2219
1948
  }
2220
1949
  }
2221
1950
 
2222
- } // namespace
2223
-
2224
1951
  void XdsClient::DumpClientConfig(
2225
1952
  std::set<std::string>* string_pool, upb_Arena* arena,
2226
1953
  envoy_service_status_v3_ClientConfig* client_config) {
@@ -2228,70 +1955,51 @@ void XdsClient::DumpClientConfig(
2228
1955
  // Fill-in the node information
2229
1956
  auto* node =
2230
1957
  envoy_service_status_v3_ClientConfig_mutable_node(client_config, arena);
2231
- api_.PopulateNode(node, arena);
1958
+ PopulateXdsNode(bootstrap_->node(), user_agent_name_, user_agent_version_,
1959
+ node, arena);
2232
1960
  // Dump each resource.
2233
- for (const auto& a : authority_state_map_) { // authority
2234
- const std::string& authority = a.first;
2235
- for (const auto& t : a.second.resource_map) { // type
2236
- const XdsResourceType* type = t.first;
1961
+ for (const auto& [authority, authority_state] : authority_state_map_) {
1962
+ for (const auto& [type, resource_map] : authority_state.type_map) {
2237
1963
  auto it =
2238
1964
  string_pool
2239
1965
  ->emplace(absl::StrCat("type.googleapis.com/", type->type_url()))
2240
1966
  .first;
2241
1967
  upb_StringView type_url = StdStringToUpbString(*it);
2242
- for (const auto& r : t.second) { // resource id
1968
+ for (const auto& [resource_key, resource_state] : resource_map) {
1969
+ if (!resource_state.HasWatchers()) continue;
2243
1970
  auto it2 = string_pool
2244
1971
  ->emplace(ConstructFullXdsResourceName(
2245
- authority, type->type_url(), r.first))
1972
+ authority, type->type_url(), resource_key))
2246
1973
  .first;
2247
1974
  upb_StringView resource_name = StdStringToUpbString(*it2);
2248
1975
  envoy_service_status_v3_ClientConfig_GenericXdsConfig* entry =
2249
1976
  envoy_service_status_v3_ClientConfig_add_generic_xds_configs(
2250
1977
  client_config, arena);
2251
- FillGenericXdsConfig(r.second.meta, type_url, resource_name, arena,
2252
- entry);
1978
+ resource_state.FillGenericXdsConfig(type_url, resource_name, arena,
1979
+ entry);
2253
1980
  }
2254
1981
  }
2255
1982
  }
2256
1983
  }
2257
1984
 
2258
- namespace {
2259
-
2260
- absl::string_view CacheStateForEntry(const XdsApi::ResourceMetadata& metadata,
2261
- bool resource_cached) {
2262
- switch (metadata.client_status) {
2263
- case XdsApi::ResourceMetadata::REQUESTED:
2264
- return "requested";
2265
- case XdsApi::ResourceMetadata::DOES_NOT_EXIST:
2266
- return "does_not_exist";
2267
- case XdsApi::ResourceMetadata::ACKED:
2268
- return "acked";
2269
- case XdsApi::ResourceMetadata::NACKED:
2270
- return resource_cached ? "nacked_but_cached" : "nacked";
2271
- }
2272
- Crash("unknown resource state");
2273
- }
2274
-
2275
- } // namespace
2276
-
2277
1985
  void XdsClient::ReportResourceCounts(
2278
1986
  absl::FunctionRef<void(const ResourceCountLabels&, uint64_t)> func) {
2279
1987
  ResourceCountLabels labels;
2280
- for (const auto& a : authority_state_map_) { // authority
2281
- labels.xds_authority = a.first;
2282
- for (const auto& t : a.second.resource_map) { // type
2283
- labels.resource_type = t.first->type_url();
1988
+ for (const auto& [authority, authority_state] : authority_state_map_) {
1989
+ labels.xds_authority = authority;
1990
+ for (const auto& [type, resource_map] : authority_state.type_map) {
1991
+ labels.resource_type = type->type_url();
2284
1992
  // Count the number of entries in each state.
2285
1993
  std::map<absl::string_view, uint64_t> counts;
2286
- for (const auto& r : t.second) { // resource id
2287
- absl::string_view cache_state =
2288
- CacheStateForEntry(r.second.meta, r.second.resource != nullptr);
2289
- ++counts[cache_state];
1994
+ for (const auto& [_, resource_state] : resource_map) {
1995
+ if (resource_state.HasWatchers()) {
1996
+ ++counts[resource_state.CacheStateString()];
1997
+ }
2290
1998
  }
2291
1999
  // Report the count for each state.
2292
- for (const auto& c : counts) {
2293
- labels.cache_state = c.first;
2294
- func(labels, c.second);
2000
+ for (const auto& [state, count] : counts) {
2001
+ labels.cache_state = state;
2002
+ func(labels, count);
2295
2003
  }
2296
2004
  }
2297
2005
  }
@@ -2299,8 +2007,8 @@ void XdsClient::ReportResourceCounts(
2299
2007
 
2300
2008
  void XdsClient::ReportServerConnections(
2301
2009
  absl::FunctionRef<void(absl::string_view, bool)> func) {
2302
- for (const auto& p : xds_channel_map_) {
2303
- func(p.second->server_uri(), p.second->status().ok());
2010
+ for (const auto& [_, xds_channel] : xds_channel_map_) {
2011
+ func(xds_channel->server_uri(), xds_channel->status().ok());
2304
2012
  }
2305
2013
  }
2306
2014