grpc 1.71.0 → 1.74.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 (1726) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +129 -88
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/event_engine.h +182 -8
  6. data/include/grpc/event_engine/internal/write_event.h +34 -0
  7. data/include/grpc/event_engine/memory_request.h +3 -3
  8. data/include/grpc/grpc_posix.h +20 -1
  9. data/include/grpc/impl/channel_arg_names.h +81 -55
  10. data/include/grpc/impl/compression_types.h +3 -2
  11. data/include/grpc/impl/slice_type.h +1 -1
  12. data/include/grpc/module.modulemap +1 -0
  13. data/include/grpc/support/json.h +27 -21
  14. data/include/grpc/support/port_platform.h +8 -5
  15. data/include/grpc/support/workaround_list.h +1 -4
  16. data/src/core/{lib/transport → call}/call_arena_allocator.cc +1 -1
  17. data/src/core/{lib/transport → call}/call_arena_allocator.h +3 -3
  18. data/src/core/{lib/transport → call}/call_destination.h +4 -4
  19. data/src/core/{lib/transport → call}/call_filters.cc +2 -2
  20. data/src/core/{lib/transport → call}/call_filters.h +53 -25
  21. data/src/core/{lib/channel → call}/call_finalization.h +3 -3
  22. data/src/core/{lib/transport → call}/call_spine.cc +1 -1
  23. data/src/core/{lib/transport → call}/call_spine.h +70 -26
  24. data/src/core/{lib/transport → call}/call_state.cc +1 -1
  25. data/src/core/{lib/transport → call}/call_state.h +3 -3
  26. data/src/core/{lib/surface → call}/client_call.cc +9 -7
  27. data/src/core/{lib/surface → call}/client_call.h +4 -4
  28. data/src/core/{lib/transport → call}/custom_metadata.h +3 -3
  29. data/src/core/{lib/transport → call}/interception_chain.cc +5 -5
  30. data/src/core/{lib/transport → call}/interception_chain.h +14 -18
  31. data/src/core/{lib/transport → call}/message.cc +1 -1
  32. data/src/core/{lib/transport → call}/message.h +7 -3
  33. data/src/core/{lib/transport → call}/metadata.cc +2 -2
  34. data/src/core/{lib/transport → call}/metadata.h +21 -4
  35. data/src/core/{lib/transport → call}/metadata_batch.cc +1 -1
  36. data/src/core/{lib/transport → call}/metadata_batch.h +7 -7
  37. data/src/core/{lib/transport → call}/metadata_compression_traits.h +3 -3
  38. data/src/core/{lib/transport → call}/metadata_info.cc +27 -9
  39. data/src/core/{lib/transport → call}/metadata_info.h +4 -4
  40. data/src/core/{lib/transport → call}/parsed_metadata.cc +1 -1
  41. data/src/core/{lib/transport → call}/parsed_metadata.h +3 -3
  42. data/src/core/call/request_buffer.h +3 -3
  43. data/src/core/call/security_context.cc +125 -0
  44. data/src/core/call/security_context.h +114 -0
  45. data/src/core/{lib/surface → call}/server_call.cc +3 -3
  46. data/src/core/{lib/surface → call}/server_call.h +5 -5
  47. data/src/core/{lib/transport → call}/simple_slice_based_metadata.h +4 -4
  48. data/src/core/{lib/channel → call}/status_util.cc +1 -1
  49. data/src/core/{lib/channel → call}/status_util.h +3 -3
  50. data/src/core/channelz/channel_trace.cc +217 -111
  51. data/src/core/channelz/channel_trace.h +389 -64
  52. data/src/core/channelz/channelz.cc +480 -178
  53. data/src/core/channelz/channelz.h +426 -71
  54. data/src/core/channelz/channelz_registry.cc +323 -117
  55. data/src/core/channelz/channelz_registry.h +203 -21
  56. data/src/core/channelz/property_list.cc +357 -0
  57. data/src/core/channelz/property_list.h +202 -0
  58. data/src/core/channelz/ztrace_collector.h +316 -0
  59. data/src/core/client_channel/backup_poller.cc +17 -2
  60. data/src/core/client_channel/client_channel.cc +66 -68
  61. data/src/core/client_channel/client_channel.h +4 -3
  62. data/src/core/client_channel/client_channel_filter.cc +45 -64
  63. data/src/core/client_channel/client_channel_filter.h +1 -3
  64. data/src/core/client_channel/client_channel_internal.h +1 -1
  65. data/src/core/client_channel/config_selector.h +10 -4
  66. data/src/core/client_channel/connector.h +0 -3
  67. data/src/core/client_channel/direct_channel.cc +2 -2
  68. data/src/core/client_channel/dynamic_filters.cc +5 -7
  69. data/src/core/client_channel/dynamic_filters.h +1 -2
  70. data/src/core/client_channel/global_subchannel_pool.cc +71 -7
  71. data/src/core/client_channel/global_subchannel_pool.h +37 -4
  72. data/src/core/client_channel/lb_metadata.h +1 -1
  73. data/src/core/client_channel/load_balanced_call_destination.cc +1 -1
  74. data/src/core/client_channel/load_balanced_call_destination.h +1 -1
  75. data/src/core/client_channel/retry_filter.cc +21 -27
  76. data/src/core/client_channel/retry_filter.h +10 -7
  77. data/src/core/client_channel/retry_filter_legacy_call_data.cc +48 -46
  78. data/src/core/client_channel/retry_filter_legacy_call_data.h +7 -7
  79. data/src/core/client_channel/retry_interceptor.cc +30 -44
  80. data/src/core/client_channel/retry_interceptor.h +19 -18
  81. data/src/core/client_channel/retry_service_config.cc +1 -1
  82. data/src/core/client_channel/retry_service_config.h +1 -1
  83. data/src/core/client_channel/retry_throttle.cc +42 -61
  84. data/src/core/client_channel/retry_throttle.h +21 -35
  85. data/src/core/client_channel/subchannel.cc +57 -36
  86. data/src/core/client_channel/subchannel.h +11 -10
  87. data/src/core/client_channel/subchannel_pool_interface.cc +5 -6
  88. data/src/core/client_channel/subchannel_pool_interface.h +11 -1
  89. data/src/core/client_channel/subchannel_stream_client.cc +14 -11
  90. data/src/core/client_channel/subchannel_stream_client.h +2 -2
  91. data/src/core/config/config_vars.cc +13 -1
  92. data/src/core/config/config_vars.h +8 -0
  93. data/src/core/config/core_configuration.cc +51 -11
  94. data/src/core/config/core_configuration.h +102 -9
  95. data/src/core/credentials/call/call_credentials.h +157 -0
  96. data/src/core/credentials/call/call_creds_registry.h +125 -0
  97. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  98. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.cc +4 -4
  99. data/src/core/{lib/security/credentials → credentials/call}/call_creds_util.h +4 -4
  100. data/src/core/{lib/security/credentials/composite/composite_credentials.cc → credentials/call/composite/composite_call_credentials.cc} +4 -57
  101. data/src/core/credentials/call/composite/composite_call_credentials.h +82 -0
  102. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.cc +2 -2
  103. data/src/core/{lib/security/credentials → credentials/call}/external/aws_external_account_credentials.h +5 -5
  104. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.cc +4 -3
  105. data/src/core/{lib/security/credentials → credentials/call}/external/aws_request_signer.h +3 -3
  106. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.cc +6 -6
  107. data/src/core/{lib/security/credentials → credentials/call}/external/external_account_credentials.h +5 -5
  108. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.cc +1 -1
  109. data/src/core/{lib/security/credentials → credentials/call}/external/file_external_account_credentials.h +4 -4
  110. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.cc +5 -4
  111. data/src/core/{lib/security/credentials → credentials/call}/external/url_external_account_credentials.h +4 -4
  112. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +10 -51
  113. data/src/core/{lib/security/credentials → credentials/call}/gcp_service_account_identity/gcp_service_account_identity_credentials.h +6 -6
  114. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.cc +2 -2
  115. data/src/core/{lib/security/credentials → credentials/call}/iam/iam_credentials.h +4 -4
  116. data/src/core/{lib/security/util → credentials/call}/json_util.cc +1 -1
  117. data/src/core/{lib/security/util → credentials/call}/json_util.h +3 -3
  118. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.cc +2 -2
  119. data/src/core/{lib/security/credentials → credentials/call}/jwt/json_token.h +3 -3
  120. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.cc +3 -3
  121. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_credentials.h +5 -5
  122. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.cc +7 -6
  123. data/src/core/{lib/security/credentials → credentials/call}/jwt/jwt_verifier.h +3 -3
  124. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  125. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  126. data/src/core/credentials/call/jwt_util.cc +70 -0
  127. data/src/core/credentials/call/jwt_util.h +32 -0
  128. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.cc +8 -5
  129. data/src/core/{lib/security/credentials → credentials/call}/oauth2/oauth2_credentials.h +5 -5
  130. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.cc +2 -2
  131. data/src/core/{lib/security/credentials → credentials/call}/plugin/plugin_credentials.h +5 -5
  132. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.cc +1 -1
  133. data/src/core/{lib/security/credentials → credentials/call}/token_fetcher/token_fetcher_credentials.h +5 -5
  134. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.cc +4 -4
  135. data/src/core/{lib/security/credentials → credentials/transport}/alts/alts_credentials.h +5 -5
  136. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.cc +13 -12
  137. data/src/core/{lib/security/security_connector → credentials/transport}/alts/alts_security_connector.h +4 -4
  138. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.cc +1 -1
  139. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment.h +3 -3
  140. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_linux.cc +1 -1
  141. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_no_op.cc +1 -1
  142. data/src/core/{lib/security/credentials → credentials/transport}/alts/check_gcp_environment_windows.cc +1 -1
  143. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_client_options.cc +1 -1
  144. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.cc +1 -1
  145. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_options.h +3 -3
  146. data/src/core/{lib/security/credentials → credentials/transport}/alts/grpc_alts_credentials_server_options.cc +1 -1
  147. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry.h +4 -4
  148. data/src/core/{lib/security/credentials → credentials/transport}/channel_creds_registry_init.cc +22 -18
  149. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +68 -0
  150. data/src/core/{lib/security/credentials/composite/composite_credentials.h → credentials/transport/composite/composite_channel_credentials.h} +6 -51
  151. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.cc +4 -26
  152. data/src/core/{lib/security/credentials → credentials/transport}/fake/fake_credentials.h +5 -37
  153. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.cc +4 -4
  154. data/src/core/{lib/security/security_connector → credentials/transport}/fake/fake_security_connector.h +4 -4
  155. data/src/core/{lib/security/credentials → credentials/transport}/google_default/credentials_generic.cc +2 -2
  156. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.cc +106 -26
  157. data/src/core/{lib/security/credentials → credentials/transport}/google_default/google_default_credentials.h +5 -5
  158. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.cc +2 -2
  159. data/src/core/{lib/security/credentials → credentials/transport}/insecure/insecure_credentials.h +5 -5
  160. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.cc +2 -2
  161. data/src/core/{lib/security/security_connector → credentials/transport}/insecure/insecure_security_connector.h +5 -5
  162. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.cc +2 -2
  163. data/src/core/{lib/security/credentials → credentials/transport}/local/local_credentials.h +5 -5
  164. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.cc +4 -4
  165. data/src/core/{lib/security/security_connector → credentials/transport}/local/local_security_connector.h +4 -4
  166. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.cc +2 -2
  167. data/src/core/{lib/security/security_connector → credentials/transport}/security_connector.h +3 -3
  168. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.cc +4 -5
  169. data/src/core/{lib/security/credentials → credentials/transport}/ssl/ssl_credentials.h +6 -6
  170. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.cc +46 -16
  171. data/src/core/{lib/security/security_connector → credentials/transport}/ssl/ssl_security_connector.h +6 -5
  172. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_factory.h +3 -3
  173. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.cc +1 -1
  174. data/src/core/{lib/security/certificate_provider → credentials/transport/tls}/certificate_provider_registry.h +4 -4
  175. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.cc +1 -1
  176. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_distributor.h +4 -4
  177. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_match.cc +1 -1
  178. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.cc +2 -2
  179. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_provider.h +5 -5
  180. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.cc +2 -2
  181. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_certificate_verifier.h +3 -3
  182. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.cc +1 -1
  183. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_credentials_options.h +7 -7
  184. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.cc +1 -1
  185. data/src/core/{lib/security/credentials → credentials/transport}/tls/grpc_tls_crl_provider.h +3 -3
  186. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots.h +3 -3
  187. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_fallback.cc +1 -1
  188. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.cc +3 -2
  189. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_supported.h +3 -3
  190. data/src/core/{lib/security/security_connector → credentials/transport/tls}/load_system_roots_windows.cc +1 -1
  191. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.cc +21 -3
  192. data/src/core/{lib/security/security_connector → credentials/transport/tls}/ssl_utils.h +9 -4
  193. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.cc +4 -4
  194. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_credentials.h +5 -5
  195. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.cc +8 -7
  196. data/src/core/{lib/security/security_connector → credentials/transport}/tls/tls_security_connector.h +6 -6
  197. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.cc +1 -1
  198. data/src/core/{lib/security/credentials → credentials/transport}/tls/tls_utils.h +3 -3
  199. data/src/core/{lib/security/credentials/credentials.cc → credentials/transport/transport_credentials.cc} +1 -3
  200. data/src/core/{lib/security/credentials/credentials.h → credentials/transport/transport_credentials.h} +5 -121
  201. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.cc +5 -8
  202. data/src/core/{lib/security/credentials → credentials/transport}/xds/xds_credentials.h +6 -6
  203. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -1
  204. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +14 -8
  205. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -2
  206. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  207. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +10 -10
  208. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +17 -17
  209. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  210. data/src/core/ext/filters/http/client_authority_filter.cc +4 -6
  211. data/src/core/ext/filters/http/message_compress/compression_filter.cc +1 -1
  212. data/src/core/ext/filters/http/message_compress/compression_filter.h +38 -5
  213. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  214. data/src/core/ext/filters/http/server/http_server_filter.h +18 -6
  215. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  216. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -2
  217. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -1
  218. data/src/core/ext/transport/chttp2/chttp2_plugin.cc +40 -0
  219. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +133 -149
  220. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -0
  221. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +45 -970
  222. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -2
  223. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  224. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +1 -3
  225. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +263 -133
  226. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -6
  227. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  228. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  229. data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -0
  230. data/src/core/ext/transport/chttp2/transport/frame.cc +310 -171
  231. data/src/core/ext/transport/chttp2/transport/frame.h +113 -5
  232. data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -0
  233. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -0
  234. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -3
  235. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
  236. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  237. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  238. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
  239. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +30 -11
  240. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -5
  241. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  242. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +7 -0
  243. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
  244. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +1 -1
  245. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +3 -3
  246. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  247. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  248. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +14 -3
  249. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  250. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  251. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +10 -8
  252. data/src/core/ext/transport/chttp2/transport/http2_settings.h +25 -2
  253. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  254. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  255. data/src/core/ext/transport/chttp2/transport/http2_status.h +414 -0
  256. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  257. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  258. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +223 -0
  259. data/src/core/ext/transport/chttp2/transport/internal.h +54 -23
  260. data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
  261. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  262. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  263. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  264. data/src/core/ext/transport/chttp2/transport/parsing.cc +57 -31
  265. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  266. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  267. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  268. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +15 -18
  269. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +17 -0
  270. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  271. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  272. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  273. data/src/core/ext/transport/chttp2/transport/writing.cc +103 -65
  274. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -3
  275. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +7 -3
  276. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +4 -0
  277. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +65 -65
  278. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +28 -28
  279. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +14 -14
  280. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +6 -6
  281. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +6 -6
  282. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +4 -4
  283. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +133 -133
  284. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +71 -71
  285. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +38 -26
  286. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +7 -7
  287. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +228 -240
  288. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +66 -66
  289. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +27 -27
  290. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +9 -9
  291. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +338 -350
  292. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +103 -103
  293. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +58 -58
  294. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +14 -14
  295. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +50 -46
  296. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +3 -3
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +41 -29
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +16 -16
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +210 -259
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +54 -54
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +58 -54
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +21 -21
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +4 -0
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +88 -92
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +17 -17
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +112 -100
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +34 -34
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +16 -12
  309. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +5 -5
  310. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +126 -118
  311. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +39 -39
  312. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +23 -19
  313. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +9 -9
  314. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +31 -27
  315. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +10 -10
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +12 -37
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +2 -2
  318. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +49 -41
  319. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +16 -16
  320. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +24 -24
  321. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +9 -9
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +147 -139
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +46 -46
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +73 -61
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +20 -20
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +3 -3
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +1 -1
  328. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +6 -6
  329. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +4 -4
  330. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +53 -33
  331. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +14 -14
  332. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +12 -0
  333. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +20 -36
  334. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +2 -2
  335. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +52 -77
  336. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +10 -10
  337. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +684 -692
  338. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +215 -215
  339. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +17 -13
  340. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +4 -4
  341. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +15 -3
  342. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +2 -2
  343. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +4 -0
  344. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +7 -7
  345. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +3 -3
  346. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +19 -15
  347. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +7 -7
  348. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +7 -7
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +3 -3
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +16 -16
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -10
  352. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +310 -407
  353. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +96 -96
  354. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +8 -0
  355. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +65 -61
  356. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -27
  357. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +19 -19
  358. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +6 -6
  359. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +25 -25
  360. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +9 -9
  361. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +34 -34
  362. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +9 -9
  363. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +7 -3
  364. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +2 -2
  365. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +322 -294
  366. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +105 -105
  367. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +7 -3
  368. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +1 -1
  369. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +23 -23
  370. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +8 -8
  371. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +88 -84
  372. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +28 -28
  373. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +4 -0
  374. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +99 -87
  375. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +31 -31
  376. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +32 -24
  377. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +5 -5
  378. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +138 -168
  379. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +43 -43
  380. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +6 -6
  381. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +2 -2
  382. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +64 -60
  383. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +26 -26
  384. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +7 -7
  385. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +3 -3
  386. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +4 -0
  387. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +4 -0
  388. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +10 -6
  389. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +2 -2
  390. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +4 -0
  391. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +4 -0
  392. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +11 -7
  393. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +3 -3
  394. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +4 -0
  395. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +4 -0
  396. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +8 -0
  397. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +8 -0
  398. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +15 -11
  399. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +4 -4
  400. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +4 -0
  401. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +4 -0
  402. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +93 -133
  403. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +20 -20
  404. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +92 -123
  405. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +27 -27
  406. data/src/core/ext/upb-gen/google/api/http.upb.h +55 -51
  407. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -22
  408. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +516 -317
  409. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +150 -100
  410. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +5 -0
  411. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +13 -33
  412. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  413. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  414. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  415. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  416. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  417. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  418. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  419. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  420. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  421. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +9 -28
  422. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +199 -142
  423. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +37 -31
  424. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +154 -0
  425. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +40 -2
  426. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +4 -0
  427. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +14 -6
  428. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +4 -4
  429. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +21 -40
  430. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +3 -3
  431. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +70 -108
  432. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +17 -17
  433. data/src/core/ext/upb-gen/validate/validate.upb.h +380 -368
  434. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +117 -117
  435. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +4 -0
  436. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +9 -28
  437. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +7 -7
  438. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +3 -3
  439. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +20 -12
  440. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +2 -2
  441. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +27 -84
  442. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +7 -7
  443. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +3 -3
  444. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +3 -3
  445. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +1 -1
  446. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +42 -46
  447. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +3 -3
  448. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +4 -0
  449. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +4 -0
  450. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +4 -0
  451. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
  452. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -1
  453. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
  454. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -1
  455. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
  456. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -1
  457. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -255
  458. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -1
  459. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
  460. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -1
  461. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
  462. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -1
  463. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
  464. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -1
  465. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
  466. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -1
  467. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
  468. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -1
  469. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -126
  470. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -1
  471. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
  472. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -1
  473. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
  474. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -1
  475. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
  476. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -1
  477. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
  478. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -1
  479. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
  480. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -1
  481. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
  482. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -1
  483. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -557
  484. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -1
  485. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
  486. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -1
  487. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
  488. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -1
  489. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
  490. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -1
  491. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
  492. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -1
  493. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
  494. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -1
  495. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -295
  496. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -1
  497. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
  498. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -1
  499. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
  500. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -1
  501. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
  502. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -1
  503. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
  504. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -1
  505. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
  506. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -1
  507. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
  508. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -1
  509. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
  510. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -1
  511. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
  512. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -1
  513. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -303
  514. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -1
  515. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
  516. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -1
  517. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
  518. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -1
  519. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +47 -25
  520. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +5 -1
  521. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -49
  522. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -1
  523. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
  524. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -1
  525. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
  526. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -1
  527. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
  528. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -1
  529. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
  530. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -1
  531. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
  532. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -1
  533. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
  534. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -1
  535. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
  536. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -1
  537. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -153
  538. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -1
  539. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +173 -90
  540. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -1
  541. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
  542. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -1
  543. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
  544. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -1
  545. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
  546. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -1
  547. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -118
  548. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -1
  549. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -210
  550. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -1
  551. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
  552. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -1
  553. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2003 -973
  554. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -1
  555. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
  556. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -1
  557. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
  558. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -1
  559. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
  560. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -1
  561. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
  562. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -1
  563. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
  564. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -1
  565. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
  566. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -1
  567. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
  568. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -1
  569. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
  570. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -1
  571. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
  572. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -1
  573. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +55 -32
  574. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -1
  575. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
  576. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -1
  577. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
  578. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -1
  579. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
  580. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -1
  581. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
  582. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -1
  583. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
  584. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -1
  585. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
  586. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -1
  587. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
  588. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +5 -1
  589. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
  590. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -1
  591. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
  592. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -1
  593. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
  594. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -1
  595. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -570
  596. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -1
  597. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
  598. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -1
  599. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +55 -29
  600. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +5 -1
  601. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
  602. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -1
  603. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
  604. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -1
  605. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
  606. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -1
  607. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -246
  608. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -1
  609. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -38
  610. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -1
  611. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
  612. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -1
  613. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
  614. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -1
  615. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -187
  616. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -1
  617. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
  618. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -1
  619. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -129
  620. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -1
  621. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
  622. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -1
  623. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
  624. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -1
  625. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +38 -20
  626. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +5 -1
  627. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +59 -32
  628. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -1
  629. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
  630. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  631. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
  632. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -1
  633. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
  634. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -1
  635. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
  636. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -1
  637. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
  638. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -1
  639. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
  640. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -1
  641. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
  642. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -1
  643. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
  644. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -1
  645. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
  646. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -1
  647. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
  648. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -1
  649. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
  650. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -1
  651. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
  652. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -1
  653. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
  654. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -1
  655. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
  656. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -1
  657. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
  658. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -1
  659. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
  660. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -1
  661. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
  662. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -1
  663. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
  664. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -1
  665. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
  666. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -1
  667. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
  668. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -1
  669. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
  670. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -1
  671. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
  672. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -1
  673. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
  674. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -1
  675. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
  676. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +5 -1
  677. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
  678. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -1
  679. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
  680. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -1
  681. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
  682. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -1
  683. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -497
  684. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -1
  685. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
  686. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -1
  687. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
  688. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -1
  689. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
  690. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -1
  691. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
  692. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -1
  693. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
  694. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -1
  695. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
  696. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -1
  697. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  698. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  699. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  700. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  701. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
  702. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -1
  703. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
  704. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -1
  705. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
  706. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -1
  707. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
  708. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -1
  709. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
  710. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -1
  711. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
  712. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -1
  713. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
  714. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -1
  715. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
  716. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -1
  717. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
  718. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -1
  719. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
  720. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -1
  721. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
  722. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -1
  723. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
  724. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -1
  725. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
  726. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -1
  727. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
  728. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -1
  729. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
  730. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -1
  731. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
  732. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -1
  733. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
  734. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -1
  735. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
  736. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -1
  737. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
  738. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -1
  739. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
  740. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -1
  741. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
  742. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -1
  743. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
  744. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -1
  745. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
  746. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  747. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
  748. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -1
  749. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
  750. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -1
  751. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
  752. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -1
  753. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
  754. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -1
  755. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
  756. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -1
  757. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
  758. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -1
  759. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
  760. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -1
  761. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
  762. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -1
  763. data/src/core/{lib/security/transport → filter/auth}/auth_filters.h +8 -32
  764. data/src/core/{lib/security/transport → filter/auth}/client_auth_filter.cc +7 -124
  765. data/src/core/{lib/security/transport → filter/auth}/server_auth_filter.cc +5 -4
  766. data/src/core/filter/filter_args.h +9 -23
  767. data/src/core/handshaker/handshaker.cc +23 -22
  768. data/src/core/handshaker/handshaker.h +3 -0
  769. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  770. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +7 -22
  771. data/src/core/handshaker/security/legacy_secure_endpoint.cc +597 -0
  772. data/src/core/handshaker/security/secure_endpoint.cc +812 -310
  773. data/src/core/handshaker/security/secure_endpoint.h +17 -0
  774. data/src/core/handshaker/security/security_handshaker.cc +8 -5
  775. data/src/core/handshaker/security/security_handshaker.h +1 -1
  776. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  777. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -5
  778. data/src/core/lib/channel/channel_args.cc +15 -0
  779. data/src/core/lib/channel/channel_args.h +56 -30
  780. data/src/core/lib/channel/channel_stack.cc +32 -4
  781. data/src/core/lib/channel/channel_stack.h +16 -6
  782. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -2
  783. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  784. data/src/core/lib/channel/connected_channel.cc +2 -2
  785. data/src/core/lib/channel/promise_based_filter.h +715 -307
  786. data/src/core/lib/debug/trace_flags.cc +4 -6
  787. data/src/core/lib/debug/trace_flags.h +2 -3
  788. data/src/core/lib/debug/trace_impl.h +0 -1
  789. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  790. data/src/core/lib/event_engine/ares_resolver.h +48 -2
  791. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +8 -2
  792. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
  793. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +4 -4
  794. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +10 -6
  795. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -6
  796. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -1
  797. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  798. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  799. data/src/core/lib/event_engine/event_engine.cc +7 -0
  800. data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
  801. data/src/core/lib/event_engine/extensions/channelz.h +66 -0
  802. data/src/core/lib/event_engine/extensions/iomgr_compatible.h +39 -0
  803. data/src/core/lib/event_engine/extensions/supports_win_sockets.h +48 -0
  804. data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -2
  805. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  806. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
  807. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
  808. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
  809. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
  810. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
  811. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
  812. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  813. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  814. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
  815. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  816. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  817. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +4 -7
  818. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +3 -0
  819. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +149 -99
  820. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +29 -33
  821. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +342 -105
  822. data/src/core/lib/event_engine/posix_engine/posix_engine.h +72 -29
  823. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
  824. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  825. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +58 -142
  826. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +10 -5
  827. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  828. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  829. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  830. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  831. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  832. data/src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc +64 -0
  833. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -730
  834. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
  835. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  836. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  837. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  838. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  839. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  840. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  841. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -54
  842. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  843. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  844. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  845. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  846. data/src/core/lib/event_engine/query_extensions.h +10 -21
  847. data/src/core/lib/event_engine/shim.cc +16 -14
  848. data/src/core/lib/event_engine/shim.h +14 -0
  849. data/src/core/lib/event_engine/tcp_socket_utils.cc +10 -9
  850. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  851. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  852. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -9
  853. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +5 -3
  854. data/src/core/lib/event_engine/utils.cc +34 -0
  855. data/src/core/lib/event_engine/utils.h +3 -0
  856. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
  857. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  858. data/src/core/lib/event_engine/windows/win_socket.cc +11 -0
  859. data/src/core/lib/event_engine/windows/win_socket.h +3 -0
  860. data/src/core/lib/event_engine/windows/windows_endpoint.cc +7 -12
  861. data/src/core/lib/event_engine/windows/windows_endpoint.h +5 -2
  862. data/src/core/lib/event_engine/windows/windows_engine.cc +42 -1
  863. data/src/core/lib/event_engine/windows/windows_engine.h +7 -3
  864. data/src/core/lib/event_engine/windows/windows_listener.cc +19 -8
  865. data/src/core/lib/event_engine/windows/windows_listener.h +9 -4
  866. data/src/core/lib/experiments/experiments.cc +393 -141
  867. data/src/core/lib/experiments/experiments.h +149 -79
  868. data/src/core/lib/iomgr/combiner.cc +3 -2
  869. data/src/core/lib/iomgr/endpoint.cc +4 -3
  870. data/src/core/lib/iomgr/endpoint.h +7 -4
  871. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  872. data/src/core/lib/iomgr/endpoint_pair_posix.cc +43 -16
  873. data/src/core/lib/iomgr/endpoint_pair_windows.cc +43 -8
  874. data/src/core/lib/iomgr/error.cc +27 -43
  875. data/src/core/lib/iomgr/ev_epoll1_linux.cc +18 -1
  876. data/src/core/lib/iomgr/ev_poll_posix.cc +22 -0
  877. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +11 -10
  878. data/src/core/lib/iomgr/fork_posix.cc +0 -7
  879. data/src/core/lib/iomgr/iomgr.cc +0 -3
  880. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
  881. data/src/core/lib/iomgr/polling_entity.cc +2 -7
  882. data/src/core/lib/iomgr/resolve_address_posix.cc +37 -47
  883. data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
  884. data/src/core/lib/iomgr/resolve_address_windows.cc +22 -45
  885. data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
  886. data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -0
  887. data/src/core/lib/iomgr/socket_utils_posix.cc +22 -11
  888. data/src/core/lib/iomgr/socket_utils_posix.h +12 -2
  889. data/src/core/lib/iomgr/tcp_client_cfstream.cc +8 -9
  890. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -21
  891. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  892. data/src/core/lib/iomgr/tcp_posix.cc +82 -47
  893. data/src/core/lib/iomgr/tcp_posix.h +10 -2
  894. data/src/core/lib/iomgr/tcp_server_posix.cc +9 -1
  895. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -4
  896. data/src/core/lib/iomgr/tcp_server_windows.cc +41 -18
  897. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  898. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -2
  899. data/src/core/lib/promise/activity.h +1 -0
  900. data/src/core/lib/promise/all_ok.h +31 -0
  901. data/src/core/lib/promise/arena_promise.h +23 -7
  902. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  903. data/src/core/lib/promise/detail/promise_like.h +132 -1
  904. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  905. data/src/core/lib/promise/detail/seq_state.h +880 -0
  906. data/src/core/lib/promise/if.h +20 -0
  907. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  908. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  909. data/src/core/lib/promise/loop.h +73 -8
  910. data/src/core/lib/promise/map.h +106 -2
  911. data/src/core/lib/promise/match_promise.h +103 -0
  912. data/src/core/lib/promise/mpsc.cc +425 -0
  913. data/src/core/lib/promise/mpsc.h +490 -0
  914. data/src/core/lib/promise/party.cc +50 -1
  915. data/src/core/lib/promise/party.h +71 -2
  916. data/src/core/lib/promise/poll.h +22 -20
  917. data/src/core/lib/promise/promise.h +4 -2
  918. data/src/core/lib/promise/race.h +31 -0
  919. data/src/core/lib/promise/seq.h +5 -0
  920. data/src/core/lib/promise/sleep.cc +6 -3
  921. data/src/core/lib/promise/status_flag.h +28 -9
  922. data/src/core/lib/promise/try_seq.h +5 -0
  923. data/src/core/lib/promise/wait_set.cc +28 -0
  924. data/src/core/lib/promise/wait_set.h +86 -0
  925. data/src/core/lib/resource_quota/arena.h +19 -0
  926. data/src/core/lib/resource_quota/memory_quota.cc +9 -0
  927. data/src/core/lib/resource_quota/memory_quota.h +1 -3
  928. data/src/core/lib/security/authorization/evaluate_args.cc +1 -1
  929. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  930. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  931. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  932. data/src/core/lib/slice/slice.h +11 -0
  933. data/src/core/lib/slice/slice_buffer.h +6 -0
  934. data/src/core/lib/surface/call.cc +24 -18
  935. data/src/core/lib/surface/call_utils.cc +3 -3
  936. data/src/core/lib/surface/call_utils.h +3 -3
  937. data/src/core/lib/surface/channel.h +2 -2
  938. data/src/core/lib/surface/channel_create.cc +139 -4
  939. data/src/core/lib/surface/channel_create.h +4 -0
  940. data/src/core/lib/surface/channel_init.cc +164 -47
  941. data/src/core/lib/surface/channel_init.h +66 -3
  942. data/src/core/lib/surface/completion_queue.cc +77 -17
  943. data/src/core/lib/surface/filter_stack_call.cc +58 -36
  944. data/src/core/lib/surface/filter_stack_call.h +1 -1
  945. data/src/core/lib/surface/init.cc +10 -20
  946. data/src/core/lib/surface/lame_client.cc +1 -1
  947. data/src/core/lib/surface/legacy_channel.cc +30 -28
  948. data/src/core/lib/surface/legacy_channel.h +4 -2
  949. data/src/core/lib/surface/version.cc +2 -2
  950. data/src/core/lib/transport/error_utils.cc +65 -11
  951. data/src/core/lib/transport/error_utils.h +2 -2
  952. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  953. data/src/core/lib/transport/promise_endpoint.h +307 -0
  954. data/src/core/lib/transport/status_conversion.cc +11 -36
  955. data/src/core/lib/transport/status_conversion.h +5 -4
  956. data/src/core/lib/transport/transport.cc +2 -2
  957. data/src/core/lib/transport/transport.h +8 -5
  958. data/src/core/lib/transport/transport_op_string.cc +1 -1
  959. data/src/core/load_balancing/backend_metric_parser.cc +12 -18
  960. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  961. data/src/core/load_balancing/delegating_helper.h +3 -4
  962. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -1
  963. data/src/core/load_balancing/grpclb/grpclb.cc +3 -4
  964. data/src/core/load_balancing/health_check_client.cc +3 -9
  965. data/src/core/load_balancing/lb_policy.h +1 -3
  966. data/src/core/load_balancing/oob_backend_metric.cc +3 -9
  967. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +4 -3
  968. data/src/core/load_balancing/pick_first/pick_first.cc +6 -958
  969. data/src/core/load_balancing/rls/rls.cc +37 -42
  970. data/src/core/load_balancing/round_robin/round_robin.cc +2 -3
  971. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +4 -4
  972. data/src/core/load_balancing/weighted_target/weighted_target.cc +4 -10
  973. data/src/core/load_balancing/xds/cds.cc +13 -11
  974. data/src/core/load_balancing/xds/xds_cluster_impl.cc +1 -1
  975. data/src/core/load_balancing/xds/xds_override_host.cc +55 -34
  976. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  977. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -2
  978. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  979. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -0
  980. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +1 -1
  981. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +2 -1
  982. data/src/core/resolver/xds/xds_config.cc +6 -3
  983. data/src/core/resolver/xds/xds_config.h +9 -4
  984. data/src/core/resolver/xds/xds_dependency_manager.cc +29 -9
  985. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  986. data/src/core/resolver/xds/xds_resolver.cc +35 -14
  987. data/src/core/server/add_port.cc +87 -0
  988. data/src/core/server/server.cc +135 -66
  989. data/src/core/server/server.h +24 -7
  990. data/src/core/server/server_call_tracer_filter.cc +1 -1
  991. data/src/core/server/server_config_selector.h +1 -1
  992. data/src/core/server/server_config_selector_filter.cc +1 -1
  993. data/src/core/server/xds_server_config_fetcher.cc +68 -30
  994. data/src/core/service_config/service_config.h +1 -1
  995. data/src/core/service_config/service_config_channel_arg_filter.cc +1 -1
  996. data/src/core/service_config/service_config_impl.h +1 -1
  997. data/src/core/telemetry/call_tracer.cc +4 -6
  998. data/src/core/telemetry/call_tracer.h +4 -4
  999. data/src/core/telemetry/context_list_entry.cc +38 -0
  1000. data/src/core/{ext/transport/chttp2/transport → telemetry}/context_list_entry.h +45 -15
  1001. data/src/core/telemetry/default_tcp_tracer.cc +26 -0
  1002. data/src/core/telemetry/default_tcp_tracer.h +44 -0
  1003. data/src/core/telemetry/metrics.cc +30 -12
  1004. data/src/core/telemetry/metrics.h +15 -3
  1005. data/src/core/telemetry/stats.h +0 -5
  1006. data/src/core/telemetry/stats_data.cc +564 -423
  1007. data/src/core/telemetry/stats_data.h +474 -241
  1008. data/src/core/telemetry/tcp_tracer.cc +38 -0
  1009. data/src/core/telemetry/tcp_tracer.h +103 -99
  1010. data/src/core/{lib/security/context/security_context.cc → transport/auth_context.cc} +1 -97
  1011. data/src/core/{lib/security/context/security_context.h → transport/auth_context.h} +5 -76
  1012. data/src/core/transport/endpoint_transport.h +90 -0
  1013. data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
  1014. data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
  1015. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +33 -1
  1016. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -1
  1017. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +76 -22
  1018. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -3
  1019. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  1020. data/src/core/tsi/fake_transport_security.cc +17 -0
  1021. data/src/core/tsi/ssl_transport_security.cc +192 -72
  1022. data/src/core/tsi/ssl_transport_security.h +6 -1
  1023. data/src/core/tsi/transport_security.h +3 -0
  1024. data/src/core/tsi/transport_security_grpc.cc +8 -0
  1025. data/src/core/tsi/transport_security_grpc.h +22 -3
  1026. data/src/core/tsi/transport_security_interface.h +30 -25
  1027. data/src/core/util/backoff.cc +5 -16
  1028. data/src/core/util/backoff.h +1 -1
  1029. data/src/core/util/check_class_size.h +48 -0
  1030. data/src/core/util/down_cast.h +1 -1
  1031. data/src/core/util/dual_ref_counted.h +48 -0
  1032. data/src/core/util/function_signature.h +80 -0
  1033. data/src/core/util/gcp_metadata_query.cc +4 -3
  1034. data/src/core/util/http_client/httpcli.cc +15 -8
  1035. data/src/core/util/http_client/httpcli.h +4 -1
  1036. data/src/core/util/http_client/httpcli_security_connector.cc +5 -4
  1037. data/src/core/util/json/json_object_loader.h +3 -3
  1038. data/src/core/util/latent_see.cc +28 -2
  1039. data/src/core/util/latent_see.h +19 -28
  1040. data/src/core/util/linux/env.cc +3 -1
  1041. data/src/core/util/load_file.cc +26 -14
  1042. data/src/core/util/log.cc +4 -0
  1043. data/src/core/util/memory_usage.h +268 -0
  1044. data/src/core/util/per_cpu.cc +2 -0
  1045. data/src/core/util/per_cpu.h +7 -0
  1046. data/src/core/util/ref_counted_ptr.h +26 -0
  1047. data/src/core/util/shared_bit_gen.cc +21 -0
  1048. data/src/core/util/shared_bit_gen.h +64 -0
  1049. data/src/core/util/single_set_ptr.h +35 -4
  1050. data/src/core/util/status_helper.cc +86 -63
  1051. data/src/core/util/status_helper.h +9 -26
  1052. data/src/core/util/upb_utils.h +42 -0
  1053. data/src/core/util/uri.cc +76 -17
  1054. data/src/core/util/uri.h +13 -8
  1055. data/src/core/util/useful.h +53 -2
  1056. data/src/core/util/wait_for_single_owner.cc +31 -0
  1057. data/src/core/util/wait_for_single_owner.h +24 -0
  1058. data/src/core/xds/grpc/certificate_provider_store.cc +1 -1
  1059. data/src/core/xds/grpc/certificate_provider_store.h +3 -3
  1060. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  1061. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +1 -1
  1062. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +12 -7
  1063. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  1064. data/src/core/xds/grpc/xds_certificate_provider.cc +1 -1
  1065. data/src/core/xds/grpc/xds_certificate_provider.h +2 -2
  1066. data/src/core/xds/grpc/xds_client_grpc.cc +13 -8
  1067. data/src/core/xds/grpc/xds_client_grpc.h +4 -2
  1068. data/src/core/xds/grpc/xds_cluster.h +3 -3
  1069. data/src/core/xds/grpc/xds_cluster_parser.cc +3 -2
  1070. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -58
  1071. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  1072. data/src/core/xds/grpc/xds_http_fault_filter.cc +1 -1
  1073. data/src/core/xds/grpc/xds_http_filter.h +8 -1
  1074. data/src/core/xds/grpc/xds_http_filter_registry.cc +1 -3
  1075. data/src/core/xds/grpc/xds_http_filter_registry.h +1 -1
  1076. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  1077. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  1078. data/src/core/xds/grpc/xds_http_rbac_filter.cc +10 -17
  1079. data/src/core/xds/grpc/xds_metadata_parser.cc +40 -64
  1080. data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
  1081. data/src/core/xds/grpc/xds_route_config.h +1 -1
  1082. data/src/core/xds/grpc/xds_route_config_parser.cc +71 -116
  1083. data/src/core/xds/grpc/xds_route_config_parser.h +1 -1
  1084. data/src/core/xds/grpc/xds_routing.h +1 -1
  1085. data/src/core/xds/grpc/xds_server_grpc.cc +110 -48
  1086. data/src/core/xds/grpc/xds_server_grpc.h +31 -13
  1087. data/src/core/xds/grpc/xds_server_grpc_interface.h +6 -2
  1088. data/src/core/xds/grpc/xds_transport_grpc.cc +23 -5
  1089. data/src/core/xds/grpc/xds_transport_grpc.h +5 -3
  1090. data/src/core/xds/xds_client/lrs_client.cc +6 -5
  1091. data/src/core/xds/xds_client/lrs_client.h +7 -7
  1092. data/src/core/xds/xds_client/xds_bootstrap.h +18 -1
  1093. data/src/core/xds/xds_client/xds_client.cc +52 -29
  1094. data/src/core/xds/xds_client/xds_client.h +3 -1
  1095. data/src/core/xds/xds_client/xds_resource_type.h +1 -2
  1096. data/src/core/xds/xds_client/xds_transport.h +1 -1
  1097. data/src/ruby/ext/grpc/extconf.rb +4 -2
  1098. data/src/ruby/ext/grpc/rb_call.c +1 -8
  1099. data/src/ruby/ext/grpc/rb_channel.c +72 -568
  1100. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  1101. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  1102. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  1103. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  1104. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  1105. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  1106. data/src/ruby/ext/grpc/rb_server.c +31 -50
  1107. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  1108. data/src/ruby/lib/grpc/version.rb +1 -1
  1109. data/src/ruby/spec/core_spec.rb +22 -0
  1110. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  1111. data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
  1112. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1113. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
  1114. data/third_party/abseil-cpp/absl/algorithm/container.h +81 -67
  1115. data/third_party/abseil-cpp/absl/base/attributes.h +142 -23
  1116. data/third_party/abseil-cpp/absl/base/call_once.h +18 -16
  1117. data/third_party/abseil-cpp/absl/base/config.h +23 -132
  1118. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  1119. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  1120. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  1121. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  1122. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  1123. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  1124. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +106 -0
  1125. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
  1126. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  1127. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  1128. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
  1129. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
  1130. data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  1131. data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  1132. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  1133. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
  1134. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +17 -0
  1135. data/third_party/abseil-cpp/absl/base/macros.h +35 -4
  1136. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  1137. data/third_party/abseil-cpp/absl/base/nullability.h +124 -56
  1138. data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
  1139. data/third_party/abseil-cpp/absl/base/options.h +7 -81
  1140. data/third_party/abseil-cpp/absl/base/policy_checks.h +9 -7
  1141. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  1142. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  1143. data/third_party/abseil-cpp/absl/container/btree_map.h +891 -0
  1144. data/third_party/abseil-cpp/absl/container/btree_set.h +826 -0
  1145. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -15
  1146. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +22 -3
  1147. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +23 -4
  1148. data/third_party/abseil-cpp/absl/container/inlined_vector.h +10 -6
  1149. data/third_party/abseil-cpp/absl/container/internal/btree.h +3149 -0
  1150. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +867 -0
  1151. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  1152. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +10 -2
  1153. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -10
  1154. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  1155. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  1156. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  1157. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  1158. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  1159. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +6 -9
  1160. data/third_party/abseil-cpp/absl/container/internal/layout.h +27 -43
  1161. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  1162. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1462 -263
  1163. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1170 -1547
  1164. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  1165. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  1166. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  1167. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
  1168. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  1169. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  1170. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
  1171. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  1172. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  1173. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  1174. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +12 -37
  1175. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  1176. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
  1177. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -21
  1178. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  1179. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
  1180. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  1181. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  1182. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  1183. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -8
  1184. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  1185. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  1186. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  1187. data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  1188. data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  1189. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  1190. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  1191. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
  1192. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +67 -18
  1193. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  1194. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  1195. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
  1196. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +9 -2
  1197. data/third_party/abseil-cpp/absl/flags/flag.h +18 -15
  1198. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  1199. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +14 -5
  1200. data/third_party/abseil-cpp/absl/flags/internal/flag.h +23 -11
  1201. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
  1202. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
  1203. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
  1204. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  1205. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  1206. data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
  1207. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  1208. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  1209. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  1210. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  1211. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  1212. data/third_party/abseil-cpp/absl/hash/hash.h +44 -2
  1213. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +14 -18
  1214. data/third_party/abseil-cpp/absl/hash/internal/hash.h +257 -127
  1215. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +27 -72
  1216. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  1217. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  1218. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
  1219. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  1220. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  1221. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  1222. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +43 -38
  1223. data/third_party/abseil-cpp/absl/log/internal/check_op.h +124 -99
  1224. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  1225. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  1226. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +158 -64
  1227. data/third_party/abseil-cpp/absl/log/internal/log_message.h +140 -83
  1228. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  1229. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -5
  1230. data/third_party/abseil-cpp/absl/log/internal/proto.h +28 -18
  1231. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  1232. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  1233. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
  1234. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
  1235. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  1236. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  1237. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  1238. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
  1239. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
  1240. data/third_party/abseil-cpp/absl/meta/type_traits.h +62 -181
  1241. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  1242. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  1243. data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
  1244. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
  1245. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
  1246. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  1247. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  1248. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
  1249. data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
  1250. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +12 -12
  1251. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
  1252. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
  1253. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  1254. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
  1255. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +3 -2
  1256. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -7
  1257. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  1258. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  1259. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
  1260. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  1261. data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
  1262. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +57 -6
  1263. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
  1264. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  1265. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  1266. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
  1267. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
  1268. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
  1269. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
  1270. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  1271. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
  1272. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  1273. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
  1274. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
  1275. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
  1276. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
  1277. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +10 -7
  1278. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  1279. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  1280. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  1281. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  1282. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  1283. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  1284. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  1285. data/third_party/abseil-cpp/absl/strings/ascii.cc +44 -29
  1286. data/third_party/abseil-cpp/absl/strings/ascii.h +62 -22
  1287. data/third_party/abseil-cpp/absl/strings/charconv.cc +25 -29
  1288. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  1289. data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
  1290. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  1291. data/third_party/abseil-cpp/absl/strings/cord.h +99 -102
  1292. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  1293. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  1294. data/third_party/abseil-cpp/absl/strings/escaping.cc +186 -197
  1295. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  1296. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  1297. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
  1298. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +53 -22
  1299. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  1300. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  1301. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  1302. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  1303. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  1304. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
  1305. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  1306. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  1307. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  1308. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
  1309. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  1310. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  1311. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  1312. data/third_party/abseil-cpp/absl/strings/match.h +21 -11
  1313. data/third_party/abseil-cpp/absl/strings/numbers.cc +55 -33
  1314. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  1315. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  1316. data/third_party/abseil-cpp/absl/strings/str_cat.h +41 -30
  1317. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  1318. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  1319. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  1320. data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
  1321. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  1322. data/third_party/abseil-cpp/absl/strings/string_view.h +46 -50
  1323. data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
  1324. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  1325. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  1326. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
  1327. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
  1328. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
  1329. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  1330. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  1331. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  1332. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  1333. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  1334. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  1335. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  1336. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +39 -13
  1337. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  1338. data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
  1339. data/third_party/abseil-cpp/absl/synchronization/notification.h +12 -2
  1340. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  1341. data/third_party/abseil-cpp/absl/time/duration.cc +18 -58
  1342. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  1343. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1344. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1345. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
  1346. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
  1347. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
  1348. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
  1349. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
  1350. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  1351. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
  1352. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +92 -112
  1353. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
  1354. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
  1355. data/third_party/abseil-cpp/absl/time/time.h +89 -23
  1356. data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
  1357. data/third_party/abseil-cpp/absl/types/optional.h +7 -745
  1358. data/third_party/abseil-cpp/absl/types/span.h +98 -54
  1359. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  1360. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  1361. data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
  1362. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +16 -0
  1363. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +15 -0
  1364. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +19 -3
  1365. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +79 -48
  1366. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +11 -19
  1367. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +3 -7
  1368. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +0 -35
  1369. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +0 -2
  1370. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +3 -5
  1371. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +0 -3
  1372. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +0 -2
  1373. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +31 -47
  1374. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
  1375. data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
  1376. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
  1377. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +14 -8
  1378. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +1 -1
  1379. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +3 -3
  1380. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +4 -4
  1381. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +13 -15
  1382. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
  1383. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +179 -102
  1384. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +3 -3
  1385. data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
  1386. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +0 -2
  1387. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +0 -2
  1388. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +0 -2
  1389. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +0 -2
  1390. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +0 -2
  1391. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +0 -2
  1392. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +0 -1
  1393. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +28 -6
  1394. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +11 -9
  1395. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +0 -6
  1396. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +1 -3
  1397. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +3 -3
  1398. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +3 -3
  1399. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +13 -14
  1400. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +27 -61
  1401. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +16 -8
  1402. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +112 -122
  1403. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +23 -35
  1404. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  1405. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +47 -63
  1406. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +60 -68
  1407. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +3 -3
  1408. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +11 -17
  1409. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +0 -2
  1410. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +10 -11
  1411. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +10 -11
  1412. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +3 -3
  1413. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +6 -6
  1414. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +6 -6
  1415. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +6 -6
  1416. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +6 -6
  1417. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +6 -6
  1418. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +23 -42
  1419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +29 -18
  1420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +10 -10
  1421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +16 -45
  1422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -4
  1423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +15 -6
  1424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +3 -3
  1425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +101 -5
  1426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +96 -187
  1427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +24 -512
  1428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +58 -80
  1429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +29 -45
  1430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +27 -25
  1431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +7 -16
  1432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +27 -48
  1433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +34 -34
  1434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +102 -154
  1435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +3 -3
  1436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +3 -8
  1437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +1 -78
  1438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +10 -17
  1439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +3 -3
  1440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +15 -8
  1441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +40 -53
  1442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +57 -76
  1443. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +4 -10
  1444. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +3 -3
  1445. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +3 -3
  1446. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +37 -52
  1447. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +13 -20
  1448. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +3 -3
  1449. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +28 -39
  1450. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +3 -3
  1451. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +6 -11
  1452. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +3 -3
  1453. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  1454. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +335 -28
  1455. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  1456. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +265 -33
  1457. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +3 -3
  1458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +1 -1
  1459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +3 -3
  1460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +19 -26
  1461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +7 -7
  1462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +121 -138
  1463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +96 -83
  1464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +3 -3
  1465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +8 -20
  1466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  1467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +235 -60
  1468. data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
  1469. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +3 -3
  1470. data/third_party/boringssl-with-bazel/src/crypto/internal.h +59 -33
  1471. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +3 -3
  1472. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +3 -3
  1473. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +0 -2
  1474. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +2 -8
  1475. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +3 -3
  1476. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +8 -13
  1477. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +22 -8
  1478. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +19 -17
  1479. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +134 -136
  1480. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -8
  1481. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +25 -21
  1482. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +36 -52
  1483. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +97 -79
  1484. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +3 -3
  1485. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +3 -3
  1486. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +1 -1
  1487. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +2 -2
  1488. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +1 -1
  1489. data/third_party/boringssl-with-bazel/src/crypto/rand/{sysrand_internal.h → internal.h} +22 -4
  1490. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +1 -1
  1491. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +1 -1
  1492. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +1 -1
  1493. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +1 -5
  1494. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +3 -3
  1495. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +14 -22
  1496. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +3 -3
  1497. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +0 -2
  1498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +3 -3
  1499. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +3 -5
  1500. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +8 -12
  1501. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +15 -3
  1502. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +16 -24
  1503. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +18 -21
  1504. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +10 -3
  1505. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +9 -0
  1506. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +10 -1
  1507. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +64 -85
  1508. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +16 -32
  1509. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +576 -567
  1510. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +16 -8
  1511. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +1 -1
  1512. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -25
  1513. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -54
  1514. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +1 -1
  1515. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +8 -4
  1516. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +1 -1
  1517. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +1 -1
  1518. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +1 -1
  1519. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
  1520. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +1 -1
  1521. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1 -1
  1522. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +1 -1
  1523. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +7 -1
  1524. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +1 -1
  1525. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1526. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +1 -1
  1527. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
  1528. data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
  1529. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +1 -1
  1530. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +23 -3
  1531. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
  1532. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
  1533. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +1 -1
  1534. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +1 -1
  1535. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -7
  1536. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +1 -1
  1537. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
  1538. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +1 -1
  1539. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +1 -1
  1540. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +1 -1
  1541. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -1
  1542. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
  1543. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -1
  1544. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
  1545. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  1546. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
  1547. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
  1548. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +1 -1
  1549. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +4 -4
  1550. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
  1551. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
  1552. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +1 -1
  1553. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +1 -1
  1554. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +1 -1
  1555. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +1 -1
  1556. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +1 -1
  1557. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
  1558. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +1 -1
  1559. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +1 -1
  1560. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
  1561. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +10 -4
  1562. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
  1563. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +19 -6
  1564. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
  1565. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
  1566. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
  1567. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  1568. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +1 -1
  1569. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +1 -1
  1570. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +2 -2
  1571. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +1 -1
  1572. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +1 -1
  1573. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
  1574. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +1 -1
  1575. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +1 -1
  1576. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +291 -40
  1577. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +1 -1
  1578. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +0 -5
  1579. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -1
  1580. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +9 -1
  1581. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
  1582. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +1 -1
  1583. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +7 -4
  1584. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +2 -0
  1585. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +32 -26
  1586. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +49 -49
  1587. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +256 -57
  1588. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +12 -12
  1589. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +7 -5
  1590. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +3 -2
  1591. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +25 -33
  1592. data/third_party/boringssl-with-bazel/src/ssl/internal.h +106 -10
  1593. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +6 -12
  1594. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +18 -4
  1595. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +85 -8
  1596. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -1
  1597. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +173 -19
  1598. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +5 -18
  1599. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +28 -15
  1600. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +1 -1
  1601. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +31 -7
  1602. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +14 -2
  1603. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -11
  1604. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +14 -12
  1605. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +2 -5
  1606. data/third_party/upb/upb/base/internal/log2.h +3 -1
  1607. data/third_party/upb/upb/base/string_view.h +10 -0
  1608. data/third_party/upb/upb/hash/common.c +312 -187
  1609. data/third_party/upb/upb/hash/common.h +44 -43
  1610. data/third_party/upb/upb/hash/int_table.h +29 -5
  1611. data/third_party/upb/upb/hash/str_table.h +6 -0
  1612. data/third_party/upb/upb/json/decode.c +2 -2
  1613. data/third_party/upb/upb/json/decode.h +0 -1
  1614. data/third_party/upb/upb/mem/alloc.h +5 -0
  1615. data/third_party/upb/upb/mem/arena.c +437 -160
  1616. data/third_party/upb/upb/mem/arena.h +57 -11
  1617. data/third_party/upb/upb/mem/arena.hpp +4 -20
  1618. data/third_party/upb/upb/mem/internal/arena.h +65 -29
  1619. data/third_party/upb/upb/message/accessors.c +1 -5
  1620. data/third_party/upb/upb/message/accessors.h +41 -0
  1621. data/third_party/upb/upb/message/array.c +7 -6
  1622. data/third_party/upb/upb/message/array.h +4 -4
  1623. data/third_party/upb/upb/message/compat.c +11 -14
  1624. data/third_party/upb/upb/message/compat.h +4 -3
  1625. data/third_party/upb/upb/message/copy.c +35 -30
  1626. data/third_party/upb/upb/message/internal/accessors.h +142 -13
  1627. data/third_party/upb/upb/message/internal/extension.c +16 -25
  1628. data/third_party/upb/upb/message/internal/extension.h +17 -5
  1629. data/third_party/upb/upb/message/internal/iterator.c +58 -0
  1630. data/third_party/upb/upb/message/internal/iterator.h +29 -0
  1631. data/third_party/upb/upb/message/internal/map.h +76 -22
  1632. data/third_party/upb/upb/message/internal/map_sorter.h +13 -4
  1633. data/third_party/upb/upb/message/internal/message.c +48 -29
  1634. data/third_party/upb/upb/message/internal/message.h +203 -25
  1635. data/third_party/upb/upb/message/map.c +68 -20
  1636. data/third_party/upb/upb/message/map.h +8 -1
  1637. data/third_party/upb/upb/message/map_gencode_util.h +3 -45
  1638. data/third_party/upb/upb/message/map_sorter.c +52 -16
  1639. data/third_party/upb/upb/message/merge.h +3 -3
  1640. data/third_party/upb/upb/message/message.c +200 -42
  1641. data/third_party/upb/upb/message/message.h +69 -4
  1642. data/third_party/upb/upb/message/value.h +9 -0
  1643. data/third_party/upb/upb/mini_descriptor/build_enum.c +16 -6
  1644. data/third_party/upb/upb/mini_descriptor/decode.c +115 -138
  1645. data/third_party/upb/upb/mini_descriptor/decode.h +4 -3
  1646. data/third_party/upb/upb/mini_descriptor/internal/encode.hpp +1 -1
  1647. data/third_party/upb/upb/mini_descriptor/link.c +4 -0
  1648. data/third_party/upb/upb/mini_table/extension.h +8 -1
  1649. data/third_party/upb/upb/mini_table/extension_registry.c +25 -13
  1650. data/third_party/upb/upb/mini_table/extension_registry.h +13 -6
  1651. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  1652. data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
  1653. data/third_party/upb/upb/mini_table/internal/field.h +4 -4
  1654. data/third_party/upb/upb/mini_table/internal/message.h +1 -1
  1655. data/third_party/upb/upb/mini_table/message.c +21 -13
  1656. data/third_party/upb/upb/port/atomic.h +134 -7
  1657. data/third_party/upb/upb/port/def.inc +163 -45
  1658. data/third_party/upb/upb/port/undef.inc +12 -1
  1659. data/third_party/upb/upb/reflection/def.hpp +5 -1
  1660. data/third_party/upb/upb/reflection/def_pool.c +10 -3
  1661. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  1662. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +4 -4
  1663. data/third_party/upb/upb/reflection/enum_def.c +4 -4
  1664. data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
  1665. data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
  1666. data/third_party/upb/upb/reflection/extension_range.c +1 -2
  1667. data/third_party/upb/upb/reflection/field_def.c +3 -5
  1668. data/third_party/upb/upb/reflection/field_def.h +1 -1
  1669. data/third_party/upb/upb/reflection/file_def.c +16 -10
  1670. data/third_party/upb/upb/reflection/internal/def_builder.c +1 -1
  1671. data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
  1672. data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
  1673. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  1674. data/third_party/upb/upb/reflection/message.c +19 -16
  1675. data/third_party/upb/upb/reflection/message.h +3 -1
  1676. data/third_party/upb/upb/reflection/message_def.c +4 -7
  1677. data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
  1678. data/third_party/upb/upb/reflection/method_def.c +1 -1
  1679. data/third_party/upb/upb/reflection/oneof_def.c +3 -3
  1680. data/third_party/upb/upb/reflection/service_def.c +2 -5
  1681. data/third_party/upb/upb/text/encode.c +17 -13
  1682. data/third_party/upb/upb/text/internal/encode.c +25 -6
  1683. data/third_party/upb/upb/text/internal/encode.h +6 -1
  1684. data/third_party/upb/upb/wire/decode.c +154 -107
  1685. data/third_party/upb/upb/wire/decode.h +4 -2
  1686. data/third_party/upb/upb/wire/encode.c +114 -55
  1687. data/third_party/upb/upb/wire/encode.h +2 -0
  1688. data/third_party/upb/upb/wire/eps_copy_input_stream.h +18 -20
  1689. data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
  1690. data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
  1691. data/third_party/upb/upb/wire/internal/decoder.h +4 -11
  1692. data/third_party/utf8_range/utf8_range.c +15 -275
  1693. data/third_party/utf8_range/utf8_range_neon.inc +117 -0
  1694. data/third_party/utf8_range/utf8_range_sse.inc +272 -0
  1695. data/third_party/zlib/deflate.c +40 -15
  1696. data/third_party/zlib/deflate.h +33 -2
  1697. data/third_party/zlib/gzguts.h +2 -6
  1698. data/third_party/zlib/inflate.c +1 -1
  1699. data/third_party/zlib/inftrees.c +3 -3
  1700. data/third_party/zlib/inftrees.h +2 -2
  1701. data/third_party/zlib/trees.c +18 -4
  1702. data/third_party/zlib/zconf.h +1 -9
  1703. data/third_party/zlib/zlib.h +12 -12
  1704. data/third_party/zlib/zutil.h +4 -25
  1705. metadata +266 -168
  1706. data/include/grpc/grpc_cronet.h +0 -37
  1707. data/src/core/lib/event_engine/forkable.cc +0 -105
  1708. data/src/core/lib/event_engine/forkable.h +0 -67
  1709. data/src/core/lib/iomgr/executor.cc +0 -441
  1710. data/src/core/lib/iomgr/executor.h +0 -119
  1711. data/src/core/lib/iomgr/python_util.h +0 -46
  1712. data/src/core/lib/transport/http2_errors.h +0 -43
  1713. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  1714. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  1715. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +0 -108
  1716. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  1717. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  1718. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  1719. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  1720. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  1721. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  1722. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  1723. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  1724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +0 -89
  1725. data/third_party/upb/upb/message/internal/compare_unknown.c +0 -289
  1726. data/third_party/upb/upb/message/internal/compare_unknown.h +0 -49
@@ -0,0 +1,826 @@
1
+ // Copyright 2018 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // https://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // -----------------------------------------------------------------------------
16
+ // File: btree_set.h
17
+ // -----------------------------------------------------------------------------
18
+ //
19
+ // This header file defines B-tree sets: sorted associative containers of
20
+ // values.
21
+ //
22
+ // * `absl::btree_set<>`
23
+ // * `absl::btree_multiset<>`
24
+ //
25
+ // These B-tree types are similar to the corresponding types in the STL
26
+ // (`std::set` and `std::multiset`) and generally conform to the STL interfaces
27
+ // of those types. However, because they are implemented using B-trees, they
28
+ // are more efficient in most situations.
29
+ //
30
+ // Unlike `std::set` and `std::multiset`, which are commonly implemented using
31
+ // red-black tree nodes, B-tree sets use more generic B-tree nodes able to hold
32
+ // multiple values per node. Holding multiple values per node often makes
33
+ // B-tree sets perform better than their `std::set` counterparts, because
34
+ // multiple entries can be checked within the same cache hit.
35
+ //
36
+ // However, these types should not be considered drop-in replacements for
37
+ // `std::set` and `std::multiset` as there are some API differences, which are
38
+ // noted in this header file. The most consequential differences with respect to
39
+ // migrating to b-tree from the STL types are listed in the next paragraph.
40
+ // Other API differences are minor.
41
+ //
42
+ // Importantly, insertions and deletions may invalidate outstanding iterators,
43
+ // pointers, and references to elements. Such invalidations are typically only
44
+ // an issue if insertion and deletion operations are interleaved with the use of
45
+ // more than one iterator, pointer, or reference simultaneously. For this
46
+ // reason, `insert()`, `erase()`, and `extract_and_get_next()` return a valid
47
+ // iterator at the current position.
48
+ //
49
+ // There are other API differences: first, btree iterators can be subtracted,
50
+ // and this is faster than using `std::distance`. Additionally, btree
51
+ // iterators can be advanced via `operator+=` and `operator-=`, which is faster
52
+ // than using `std::advance`.
53
+ //
54
+ // B-tree sets are not exception-safe.
55
+
56
+ #ifndef ABSL_CONTAINER_BTREE_SET_H_
57
+ #define ABSL_CONTAINER_BTREE_SET_H_
58
+
59
+ #include "absl/base/attributes.h"
60
+ #include "absl/container/internal/btree.h" // IWYU pragma: export
61
+ #include "absl/container/internal/btree_container.h" // IWYU pragma: export
62
+
63
+ namespace absl {
64
+ ABSL_NAMESPACE_BEGIN
65
+
66
+ namespace container_internal {
67
+
68
+ template <typename Key>
69
+ struct set_slot_policy;
70
+
71
+ template <typename Key, typename Compare, typename Alloc, int TargetNodeSize,
72
+ bool IsMulti>
73
+ struct set_params;
74
+
75
+ } // namespace container_internal
76
+
77
+ // absl::btree_set<>
78
+ //
79
+ // An `absl::btree_set<K>` is an ordered associative container of unique key
80
+ // values designed to be a more efficient replacement for `std::set` (in most
81
+ // cases).
82
+ //
83
+ // Keys are sorted using an (optional) comparison function, which defaults to
84
+ // `std::less<K>`.
85
+ //
86
+ // An `absl::btree_set<K>` uses a default allocator of `std::allocator<K>` to
87
+ // allocate (and deallocate) nodes, and construct and destruct values within
88
+ // those nodes. You may instead specify a custom allocator `A` (which in turn
89
+ // requires specifying a custom comparator `C`) as in
90
+ // `absl::btree_set<K, C, A>`.
91
+ //
92
+ template <typename Key, typename Compare = std::less<Key>,
93
+ typename Alloc = std::allocator<Key>>
94
+ class ABSL_ATTRIBUTE_OWNER btree_set
95
+ : public container_internal::btree_set_container<
96
+ container_internal::btree<container_internal::set_params<
97
+ Key, Compare, Alloc, /*TargetNodeSize=*/256,
98
+ /*IsMulti=*/false>>> {
99
+ using Base = typename btree_set::btree_set_container;
100
+
101
+ public:
102
+ // Constructors and Assignment Operators
103
+ //
104
+ // A `btree_set` supports the same overload set as `std::set`
105
+ // for construction and assignment:
106
+ //
107
+ // * Default constructor
108
+ //
109
+ // absl::btree_set<std::string> set1;
110
+ //
111
+ // * Initializer List constructor
112
+ //
113
+ // absl::btree_set<std::string> set2 =
114
+ // {{"huey"}, {"dewey"}, {"louie"},};
115
+ //
116
+ // * Copy constructor
117
+ //
118
+ // absl::btree_set<std::string> set3(set2);
119
+ //
120
+ // * Copy assignment operator
121
+ //
122
+ // absl::btree_set<std::string> set4;
123
+ // set4 = set3;
124
+ //
125
+ // * Move constructor
126
+ //
127
+ // // Move is guaranteed efficient
128
+ // absl::btree_set<std::string> set5(std::move(set4));
129
+ //
130
+ // * Move assignment operator
131
+ //
132
+ // // May be efficient if allocators are compatible
133
+ // absl::btree_set<std::string> set6;
134
+ // set6 = std::move(set5);
135
+ //
136
+ // * Range constructor
137
+ //
138
+ // std::vector<std::string> v = {"a", "b"};
139
+ // absl::btree_set<std::string> set7(v.begin(), v.end());
140
+ btree_set() {}
141
+ using Base::Base;
142
+
143
+ // btree_set::begin()
144
+ //
145
+ // Returns an iterator to the beginning of the `btree_set`.
146
+ using Base::begin;
147
+
148
+ // btree_set::cbegin()
149
+ //
150
+ // Returns a const iterator to the beginning of the `btree_set`.
151
+ using Base::cbegin;
152
+
153
+ // btree_set::end()
154
+ //
155
+ // Returns an iterator to the end of the `btree_set`.
156
+ using Base::end;
157
+
158
+ // btree_set::cend()
159
+ //
160
+ // Returns a const iterator to the end of the `btree_set`.
161
+ using Base::cend;
162
+
163
+ // btree_set::empty()
164
+ //
165
+ // Returns whether or not the `btree_set` is empty.
166
+ using Base::empty;
167
+
168
+ // btree_set::max_size()
169
+ //
170
+ // Returns the largest theoretical possible number of elements within a
171
+ // `btree_set` under current memory constraints. This value can be thought
172
+ // of as the largest value of `std::distance(begin(), end())` for a
173
+ // `btree_set<Key>`.
174
+ using Base::max_size;
175
+
176
+ // btree_set::size()
177
+ //
178
+ // Returns the number of elements currently within the `btree_set`.
179
+ using Base::size;
180
+
181
+ // btree_set::clear()
182
+ //
183
+ // Removes all elements from the `btree_set`. Invalidates any references,
184
+ // pointers, or iterators referring to contained elements.
185
+ using Base::clear;
186
+
187
+ // btree_set::erase()
188
+ //
189
+ // Erases elements within the `btree_set`. Overloads are listed below.
190
+ //
191
+ // iterator erase(iterator position):
192
+ // iterator erase(const_iterator position):
193
+ //
194
+ // Erases the element at `position` of the `btree_set`, returning
195
+ // the iterator pointing to the element after the one that was erased
196
+ // (or end() if none exists).
197
+ //
198
+ // iterator erase(const_iterator first, const_iterator last):
199
+ //
200
+ // Erases the elements in the open interval [`first`, `last`), returning
201
+ // the iterator pointing to the element after the interval that was erased
202
+ // (or end() if none exists).
203
+ //
204
+ // template <typename K> size_type erase(const K& key):
205
+ //
206
+ // Erases the element with the matching key, if it exists, returning the
207
+ // number of elements erased (0 or 1).
208
+ using Base::erase;
209
+
210
+ // btree_set::insert()
211
+ //
212
+ // Inserts an element of the specified value into the `btree_set`,
213
+ // returning an iterator pointing to the newly inserted element, provided that
214
+ // an element with the given key does not already exist. If an insertion
215
+ // occurs, any references, pointers, or iterators are invalidated.
216
+ // Overloads are listed below.
217
+ //
218
+ // std::pair<iterator,bool> insert(const value_type& value):
219
+ //
220
+ // Inserts a value into the `btree_set`. Returns a pair consisting of an
221
+ // iterator to the inserted element (or to the element that prevented the
222
+ // insertion) and a bool denoting whether the insertion took place.
223
+ //
224
+ // std::pair<iterator,bool> insert(value_type&& value):
225
+ //
226
+ // Inserts a moveable value into the `btree_set`. Returns a pair
227
+ // consisting of an iterator to the inserted element (or to the element that
228
+ // prevented the insertion) and a bool denoting whether the insertion took
229
+ // place.
230
+ //
231
+ // iterator insert(const_iterator hint, const value_type& value):
232
+ // iterator insert(const_iterator hint, value_type&& value):
233
+ //
234
+ // Inserts a value, using the position of `hint` as a non-binding suggestion
235
+ // for where to begin the insertion search. Returns an iterator to the
236
+ // inserted element, or to the existing element that prevented the
237
+ // insertion.
238
+ //
239
+ // void insert(InputIterator first, InputIterator last):
240
+ //
241
+ // Inserts a range of values [`first`, `last`).
242
+ //
243
+ // void insert(std::initializer_list<init_type> ilist):
244
+ //
245
+ // Inserts the elements within the initializer list `ilist`.
246
+ using Base::insert;
247
+
248
+ // btree_set::emplace()
249
+ //
250
+ // Inserts an element of the specified value by constructing it in-place
251
+ // within the `btree_set`, provided that no element with the given key
252
+ // already exists.
253
+ //
254
+ // The element may be constructed even if there already is an element with the
255
+ // key in the container, in which case the newly constructed element will be
256
+ // destroyed immediately.
257
+ //
258
+ // If an insertion occurs, any references, pointers, or iterators are
259
+ // invalidated.
260
+ using Base::emplace;
261
+
262
+ // btree_set::emplace_hint()
263
+ //
264
+ // Inserts an element of the specified value by constructing it in-place
265
+ // within the `btree_set`, using the position of `hint` as a non-binding
266
+ // suggestion for where to begin the insertion search, and only inserts
267
+ // provided that no element with the given key already exists.
268
+ //
269
+ // The element may be constructed even if there already is an element with the
270
+ // key in the container, in which case the newly constructed element will be
271
+ // destroyed immediately.
272
+ //
273
+ // If an insertion occurs, any references, pointers, or iterators are
274
+ // invalidated.
275
+ using Base::emplace_hint;
276
+
277
+ // btree_set::extract()
278
+ //
279
+ // Extracts the indicated element, erasing it in the process, and returns it
280
+ // as a C++17-compatible node handle. Any references, pointers, or iterators
281
+ // are invalidated. Overloads are listed below.
282
+ //
283
+ // node_type extract(const_iterator position):
284
+ //
285
+ // Extracts the element at the indicated position and returns a node handle
286
+ // owning that extracted data.
287
+ //
288
+ // template <typename K> node_type extract(const K& k):
289
+ //
290
+ // Extracts the element with the key matching the passed key value and
291
+ // returns a node handle owning that extracted data. If the `btree_set`
292
+ // does not contain an element with a matching key, this function returns an
293
+ // empty node handle.
294
+ //
295
+ // NOTE: In this context, `node_type` refers to the C++17 concept of a
296
+ // move-only type that owns and provides access to the elements in associative
297
+ // containers (https://en.cppreference.com/w/cpp/container/node_handle).
298
+ // It does NOT refer to the data layout of the underlying btree.
299
+ using Base::extract;
300
+
301
+ // btree_set::extract_and_get_next()
302
+ //
303
+ // Extracts the indicated element, erasing it in the process, and returns it
304
+ // as a C++17-compatible node handle along with an iterator to the next
305
+ // element.
306
+ //
307
+ // extract_and_get_next_return_type extract_and_get_next(
308
+ // const_iterator position):
309
+ //
310
+ // Extracts the element at the indicated position, returns a struct
311
+ // containing a member named `node`: a node handle owning that extracted
312
+ // data and a member named `next`: an iterator pointing to the next element
313
+ // in the btree.
314
+ using Base::extract_and_get_next;
315
+
316
+ // btree_set::merge()
317
+ //
318
+ // Extracts elements from a given `source` btree_set into this
319
+ // `btree_set`. If the destination `btree_set` already contains an
320
+ // element with an equivalent key, that element is not extracted.
321
+ using Base::merge;
322
+
323
+ // btree_set::swap(btree_set& other)
324
+ //
325
+ // Exchanges the contents of this `btree_set` with those of the `other`
326
+ // btree_set, avoiding invocation of any move, copy, or swap operations on
327
+ // individual elements.
328
+ //
329
+ // All iterators and references on the `btree_set` remain valid, excepting
330
+ // for the past-the-end iterator, which is invalidated.
331
+ using Base::swap;
332
+
333
+ // btree_set::contains()
334
+ //
335
+ // template <typename K> bool contains(const K& key) const:
336
+ //
337
+ // Determines whether an element comparing equal to the given `key` exists
338
+ // within the `btree_set`, returning `true` if so or `false` otherwise.
339
+ //
340
+ // Supports heterogeneous lookup, provided that the set has a compatible
341
+ // heterogeneous comparator.
342
+ using Base::contains;
343
+
344
+ // btree_set::count()
345
+ //
346
+ // template <typename K> size_type count(const K& key) const:
347
+ //
348
+ // Returns the number of elements comparing equal to the given `key` within
349
+ // the `btree_set`. Note that this function will return either `1` or `0`
350
+ // since duplicate elements are not allowed within a `btree_set`.
351
+ //
352
+ // Supports heterogeneous lookup, provided that the set has a compatible
353
+ // heterogeneous comparator.
354
+ using Base::count;
355
+
356
+ // btree_set::equal_range()
357
+ //
358
+ // Returns a closed range [first, last], defined by a `std::pair` of two
359
+ // iterators, containing all elements with the passed key in the
360
+ // `btree_set`.
361
+ using Base::equal_range;
362
+
363
+ // btree_set::find()
364
+ //
365
+ // template <typename K> iterator find(const K& key):
366
+ // template <typename K> const_iterator find(const K& key) const:
367
+ //
368
+ // Finds an element with the passed `key` within the `btree_set`.
369
+ //
370
+ // Supports heterogeneous lookup, provided that the set has a compatible
371
+ // heterogeneous comparator.
372
+ using Base::find;
373
+
374
+ // btree_set::lower_bound()
375
+ //
376
+ // template <typename K> iterator lower_bound(const K& key):
377
+ // template <typename K> const_iterator lower_bound(const K& key) const:
378
+ //
379
+ // Finds the first element that is not less than `key` within the `btree_set`.
380
+ //
381
+ // Supports heterogeneous lookup, provided that the set has a compatible
382
+ // heterogeneous comparator.
383
+ using Base::lower_bound;
384
+
385
+ // btree_set::upper_bound()
386
+ //
387
+ // template <typename K> iterator upper_bound(const K& key):
388
+ // template <typename K> const_iterator upper_bound(const K& key) const:
389
+ //
390
+ // Finds the first element that is greater than `key` within the `btree_set`.
391
+ //
392
+ // Supports heterogeneous lookup, provided that the set has a compatible
393
+ // heterogeneous comparator.
394
+ using Base::upper_bound;
395
+
396
+ // btree_set::get_allocator()
397
+ //
398
+ // Returns the allocator function associated with this `btree_set`.
399
+ using Base::get_allocator;
400
+
401
+ // btree_set::key_comp();
402
+ //
403
+ // Returns the key comparator associated with this `btree_set`.
404
+ using Base::key_comp;
405
+
406
+ // btree_set::value_comp();
407
+ //
408
+ // Returns the value comparator associated with this `btree_set`. The keys to
409
+ // sort the elements are the values themselves, therefore `value_comp` and its
410
+ // sibling member function `key_comp` are equivalent.
411
+ using Base::value_comp;
412
+ };
413
+
414
+ // absl::swap(absl::btree_set<>, absl::btree_set<>)
415
+ //
416
+ // Swaps the contents of two `absl::btree_set` containers.
417
+ template <typename K, typename C, typename A>
418
+ void swap(btree_set<K, C, A> &x, btree_set<K, C, A> &y) {
419
+ return x.swap(y);
420
+ }
421
+
422
+ // absl::erase_if(absl::btree_set<>, Pred)
423
+ //
424
+ // Erases all elements that satisfy the predicate pred from the container.
425
+ // Returns the number of erased elements.
426
+ template <typename K, typename C, typename A, typename Pred>
427
+ typename btree_set<K, C, A>::size_type erase_if(btree_set<K, C, A> &set,
428
+ Pred pred) {
429
+ return container_internal::btree_access::erase_if(set, std::move(pred));
430
+ }
431
+
432
+ // absl::btree_multiset<>
433
+ //
434
+ // An `absl::btree_multiset<K>` is an ordered associative container of
435
+ // keys and associated values designed to be a more efficient replacement
436
+ // for `std::multiset` (in most cases). Unlike `absl::btree_set`, a B-tree
437
+ // multiset allows equivalent elements.
438
+ //
439
+ // Keys are sorted using an (optional) comparison function, which defaults to
440
+ // `std::less<K>`.
441
+ //
442
+ // An `absl::btree_multiset<K>` uses a default allocator of `std::allocator<K>`
443
+ // to allocate (and deallocate) nodes, and construct and destruct values within
444
+ // those nodes. You may instead specify a custom allocator `A` (which in turn
445
+ // requires specifying a custom comparator `C`) as in
446
+ // `absl::btree_multiset<K, C, A>`.
447
+ //
448
+ template <typename Key, typename Compare = std::less<Key>,
449
+ typename Alloc = std::allocator<Key>>
450
+ class ABSL_ATTRIBUTE_OWNER btree_multiset
451
+ : public container_internal::btree_multiset_container<
452
+ container_internal::btree<container_internal::set_params<
453
+ Key, Compare, Alloc, /*TargetNodeSize=*/256,
454
+ /*IsMulti=*/true>>> {
455
+ using Base = typename btree_multiset::btree_multiset_container;
456
+
457
+ public:
458
+ // Constructors and Assignment Operators
459
+ //
460
+ // A `btree_multiset` supports the same overload set as `std::set`
461
+ // for construction and assignment:
462
+ //
463
+ // * Default constructor
464
+ //
465
+ // absl::btree_multiset<std::string> set1;
466
+ //
467
+ // * Initializer List constructor
468
+ //
469
+ // absl::btree_multiset<std::string> set2 =
470
+ // {{"huey"}, {"dewey"}, {"louie"},};
471
+ //
472
+ // * Copy constructor
473
+ //
474
+ // absl::btree_multiset<std::string> set3(set2);
475
+ //
476
+ // * Copy assignment operator
477
+ //
478
+ // absl::btree_multiset<std::string> set4;
479
+ // set4 = set3;
480
+ //
481
+ // * Move constructor
482
+ //
483
+ // // Move is guaranteed efficient
484
+ // absl::btree_multiset<std::string> set5(std::move(set4));
485
+ //
486
+ // * Move assignment operator
487
+ //
488
+ // // May be efficient if allocators are compatible
489
+ // absl::btree_multiset<std::string> set6;
490
+ // set6 = std::move(set5);
491
+ //
492
+ // * Range constructor
493
+ //
494
+ // std::vector<std::string> v = {"a", "b"};
495
+ // absl::btree_multiset<std::string> set7(v.begin(), v.end());
496
+ btree_multiset() {}
497
+ using Base::Base;
498
+
499
+ // btree_multiset::begin()
500
+ //
501
+ // Returns an iterator to the beginning of the `btree_multiset`.
502
+ using Base::begin;
503
+
504
+ // btree_multiset::cbegin()
505
+ //
506
+ // Returns a const iterator to the beginning of the `btree_multiset`.
507
+ using Base::cbegin;
508
+
509
+ // btree_multiset::end()
510
+ //
511
+ // Returns an iterator to the end of the `btree_multiset`.
512
+ using Base::end;
513
+
514
+ // btree_multiset::cend()
515
+ //
516
+ // Returns a const iterator to the end of the `btree_multiset`.
517
+ using Base::cend;
518
+
519
+ // btree_multiset::empty()
520
+ //
521
+ // Returns whether or not the `btree_multiset` is empty.
522
+ using Base::empty;
523
+
524
+ // btree_multiset::max_size()
525
+ //
526
+ // Returns the largest theoretical possible number of elements within a
527
+ // `btree_multiset` under current memory constraints. This value can be
528
+ // thought of as the largest value of `std::distance(begin(), end())` for a
529
+ // `btree_multiset<Key>`.
530
+ using Base::max_size;
531
+
532
+ // btree_multiset::size()
533
+ //
534
+ // Returns the number of elements currently within the `btree_multiset`.
535
+ using Base::size;
536
+
537
+ // btree_multiset::clear()
538
+ //
539
+ // Removes all elements from the `btree_multiset`. Invalidates any references,
540
+ // pointers, or iterators referring to contained elements.
541
+ using Base::clear;
542
+
543
+ // btree_multiset::erase()
544
+ //
545
+ // Erases elements within the `btree_multiset`. Overloads are listed below.
546
+ //
547
+ // iterator erase(iterator position):
548
+ // iterator erase(const_iterator position):
549
+ //
550
+ // Erases the element at `position` of the `btree_multiset`, returning
551
+ // the iterator pointing to the element after the one that was erased
552
+ // (or end() if none exists).
553
+ //
554
+ // iterator erase(const_iterator first, const_iterator last):
555
+ //
556
+ // Erases the elements in the open interval [`first`, `last`), returning
557
+ // the iterator pointing to the element after the interval that was erased
558
+ // (or end() if none exists).
559
+ //
560
+ // template <typename K> size_type erase(const K& key):
561
+ //
562
+ // Erases the elements matching the key, if any exist, returning the
563
+ // number of elements erased.
564
+ using Base::erase;
565
+
566
+ // btree_multiset::insert()
567
+ //
568
+ // Inserts an element of the specified value into the `btree_multiset`,
569
+ // returning an iterator pointing to the newly inserted element.
570
+ // Any references, pointers, or iterators are invalidated. Overloads are
571
+ // listed below.
572
+ //
573
+ // iterator insert(const value_type& value):
574
+ //
575
+ // Inserts a value into the `btree_multiset`, returning an iterator to the
576
+ // inserted element.
577
+ //
578
+ // iterator insert(value_type&& value):
579
+ //
580
+ // Inserts a moveable value into the `btree_multiset`, returning an iterator
581
+ // to the inserted element.
582
+ //
583
+ // iterator insert(const_iterator hint, const value_type& value):
584
+ // iterator insert(const_iterator hint, value_type&& value):
585
+ //
586
+ // Inserts a value, using the position of `hint` as a non-binding suggestion
587
+ // for where to begin the insertion search. Returns an iterator to the
588
+ // inserted element.
589
+ //
590
+ // void insert(InputIterator first, InputIterator last):
591
+ //
592
+ // Inserts a range of values [`first`, `last`).
593
+ //
594
+ // void insert(std::initializer_list<init_type> ilist):
595
+ //
596
+ // Inserts the elements within the initializer list `ilist`.
597
+ using Base::insert;
598
+
599
+ // btree_multiset::emplace()
600
+ //
601
+ // Inserts an element of the specified value by constructing it in-place
602
+ // within the `btree_multiset`. Any references, pointers, or iterators are
603
+ // invalidated.
604
+ using Base::emplace;
605
+
606
+ // btree_multiset::emplace_hint()
607
+ //
608
+ // Inserts an element of the specified value by constructing it in-place
609
+ // within the `btree_multiset`, using the position of `hint` as a non-binding
610
+ // suggestion for where to begin the insertion search.
611
+ //
612
+ // Any references, pointers, or iterators are invalidated.
613
+ using Base::emplace_hint;
614
+
615
+ // btree_multiset::extract()
616
+ //
617
+ // Extracts the indicated element, erasing it in the process, and returns it
618
+ // as a C++17-compatible node handle. Overloads are listed below.
619
+ //
620
+ // node_type extract(const_iterator position):
621
+ //
622
+ // Extracts the element at the indicated position and returns a node handle
623
+ // owning that extracted data.
624
+ //
625
+ // template <typename K> node_type extract(const K& k):
626
+ //
627
+ // Extracts the element with the key matching the passed key value and
628
+ // returns a node handle owning that extracted data. If the `btree_multiset`
629
+ // does not contain an element with a matching key, this function returns an
630
+ // empty node handle.
631
+ //
632
+ // NOTE: In this context, `node_type` refers to the C++17 concept of a
633
+ // move-only type that owns and provides access to the elements in associative
634
+ // containers (https://en.cppreference.com/w/cpp/container/node_handle).
635
+ // It does NOT refer to the data layout of the underlying btree.
636
+ using Base::extract;
637
+
638
+ // btree_multiset::extract_and_get_next()
639
+ //
640
+ // Extracts the indicated element, erasing it in the process, and returns it
641
+ // as a C++17-compatible node handle along with an iterator to the next
642
+ // element.
643
+ //
644
+ // extract_and_get_next_return_type extract_and_get_next(
645
+ // const_iterator position):
646
+ //
647
+ // Extracts the element at the indicated position, returns a struct
648
+ // containing a member named `node`: a node handle owning that extracted
649
+ // data and a member named `next`: an iterator pointing to the next element
650
+ // in the btree.
651
+ using Base::extract_and_get_next;
652
+
653
+ // btree_multiset::merge()
654
+ //
655
+ // Extracts all elements from a given `source` btree_multiset into this
656
+ // `btree_multiset`.
657
+ using Base::merge;
658
+
659
+ // btree_multiset::swap(btree_multiset& other)
660
+ //
661
+ // Exchanges the contents of this `btree_multiset` with those of the `other`
662
+ // btree_multiset, avoiding invocation of any move, copy, or swap operations
663
+ // on individual elements.
664
+ //
665
+ // All iterators and references on the `btree_multiset` remain valid,
666
+ // excepting for the past-the-end iterator, which is invalidated.
667
+ using Base::swap;
668
+
669
+ // btree_multiset::contains()
670
+ //
671
+ // template <typename K> bool contains(const K& key) const:
672
+ //
673
+ // Determines whether an element comparing equal to the given `key` exists
674
+ // within the `btree_multiset`, returning `true` if so or `false` otherwise.
675
+ //
676
+ // Supports heterogeneous lookup, provided that the set has a compatible
677
+ // heterogeneous comparator.
678
+ using Base::contains;
679
+
680
+ // btree_multiset::count()
681
+ //
682
+ // template <typename K> size_type count(const K& key) const:
683
+ //
684
+ // Returns the number of elements comparing equal to the given `key` within
685
+ // the `btree_multiset`.
686
+ //
687
+ // Supports heterogeneous lookup, provided that the set has a compatible
688
+ // heterogeneous comparator.
689
+ using Base::count;
690
+
691
+ // btree_multiset::equal_range()
692
+ //
693
+ // Returns a closed range [first, last], defined by a `std::pair` of two
694
+ // iterators, containing all elements with the passed key in the
695
+ // `btree_multiset`.
696
+ using Base::equal_range;
697
+
698
+ // btree_multiset::find()
699
+ //
700
+ // template <typename K> iterator find(const K& key):
701
+ // template <typename K> const_iterator find(const K& key) const:
702
+ //
703
+ // Finds an element with the passed `key` within the `btree_multiset`.
704
+ //
705
+ // Supports heterogeneous lookup, provided that the set has a compatible
706
+ // heterogeneous comparator.
707
+ using Base::find;
708
+
709
+ // btree_multiset::lower_bound()
710
+ //
711
+ // template <typename K> iterator lower_bound(const K& key):
712
+ // template <typename K> const_iterator lower_bound(const K& key) const:
713
+ //
714
+ // Finds the first element that is not less than `key` within the
715
+ // `btree_multiset`.
716
+ //
717
+ // Supports heterogeneous lookup, provided that the set has a compatible
718
+ // heterogeneous comparator.
719
+ using Base::lower_bound;
720
+
721
+ // btree_multiset::upper_bound()
722
+ //
723
+ // template <typename K> iterator upper_bound(const K& key):
724
+ // template <typename K> const_iterator upper_bound(const K& key) const:
725
+ //
726
+ // Finds the first element that is greater than `key` within the
727
+ // `btree_multiset`.
728
+ //
729
+ // Supports heterogeneous lookup, provided that the set has a compatible
730
+ // heterogeneous comparator.
731
+ using Base::upper_bound;
732
+
733
+ // btree_multiset::get_allocator()
734
+ //
735
+ // Returns the allocator function associated with this `btree_multiset`.
736
+ using Base::get_allocator;
737
+
738
+ // btree_multiset::key_comp();
739
+ //
740
+ // Returns the key comparator associated with this `btree_multiset`.
741
+ using Base::key_comp;
742
+
743
+ // btree_multiset::value_comp();
744
+ //
745
+ // Returns the value comparator associated with this `btree_multiset`. The
746
+ // keys to sort the elements are the values themselves, therefore `value_comp`
747
+ // and its sibling member function `key_comp` are equivalent.
748
+ using Base::value_comp;
749
+ };
750
+
751
+ // absl::swap(absl::btree_multiset<>, absl::btree_multiset<>)
752
+ //
753
+ // Swaps the contents of two `absl::btree_multiset` containers.
754
+ template <typename K, typename C, typename A>
755
+ void swap(btree_multiset<K, C, A> &x, btree_multiset<K, C, A> &y) {
756
+ return x.swap(y);
757
+ }
758
+
759
+ // absl::erase_if(absl::btree_multiset<>, Pred)
760
+ //
761
+ // Erases all elements that satisfy the predicate pred from the container.
762
+ // Returns the number of erased elements.
763
+ template <typename K, typename C, typename A, typename Pred>
764
+ typename btree_multiset<K, C, A>::size_type erase_if(
765
+ btree_multiset<K, C, A> & set, Pred pred) {
766
+ return container_internal::btree_access::erase_if(set, std::move(pred));
767
+ }
768
+
769
+ namespace container_internal {
770
+
771
+ // This type implements the necessary functions from the
772
+ // absl::container_internal::slot_type interface for btree_(multi)set.
773
+ template <typename Key>
774
+ struct set_slot_policy {
775
+ using slot_type = Key;
776
+ using value_type = Key;
777
+ using mutable_value_type = Key;
778
+
779
+ static value_type &element(slot_type *slot) { return *slot; }
780
+ static const value_type &element(const slot_type *slot) { return *slot; }
781
+
782
+ template <typename Alloc, class... Args>
783
+ static void construct(Alloc *alloc, slot_type *slot, Args &&...args) {
784
+ absl::allocator_traits<Alloc>::construct(*alloc, slot,
785
+ std::forward<Args>(args)...);
786
+ }
787
+
788
+ template <typename Alloc>
789
+ static void construct(Alloc *alloc, slot_type *slot, slot_type *other) {
790
+ absl::allocator_traits<Alloc>::construct(*alloc, slot, std::move(*other));
791
+ }
792
+
793
+ template <typename Alloc>
794
+ static void construct(Alloc *alloc, slot_type *slot, const slot_type *other) {
795
+ absl::allocator_traits<Alloc>::construct(*alloc, slot, *other);
796
+ }
797
+
798
+ template <typename Alloc>
799
+ static void destroy(Alloc *alloc, slot_type *slot) {
800
+ absl::allocator_traits<Alloc>::destroy(*alloc, slot);
801
+ }
802
+ };
803
+
804
+ // A parameters structure for holding the type parameters for a btree_set.
805
+ // Compare and Alloc should be nothrow copy-constructible.
806
+ template <typename Key, typename Compare, typename Alloc, int TargetNodeSize,
807
+ bool IsMulti>
808
+ struct set_params : common_params<Key, Compare, Alloc, TargetNodeSize, IsMulti,
809
+ /*IsMap=*/false, set_slot_policy<Key>> {
810
+ using value_type = Key;
811
+ using slot_type = typename set_params::common_params::slot_type;
812
+
813
+ template <typename V>
814
+ static const V &key(const V &value) {
815
+ return value;
816
+ }
817
+ static const Key &key(const slot_type *slot) { return *slot; }
818
+ static const Key &key(slot_type *slot) { return *slot; }
819
+ };
820
+
821
+ } // namespace container_internal
822
+
823
+ ABSL_NAMESPACE_END
824
+ } // namespace absl
825
+
826
+ #endif // ABSL_CONTAINER_BTREE_SET_H_