grpc 1.70.1 → 1.71.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1064) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +43 -79
  3. data/include/grpc/event_engine/endpoint_config.h +5 -5
  4. data/include/grpc/event_engine/event_engine.h +44 -5
  5. data/include/grpc/status.h +1 -1
  6. data/include/grpc/support/json.h +16 -16
  7. data/src/core/call/request_buffer.cc +22 -22
  8. data/src/core/call/request_buffer.h +4 -4
  9. data/src/core/channelz/channelz.cc +2 -2
  10. data/src/core/channelz/channelz.h +3 -22
  11. data/src/core/channelz/channelz_registry.cc +0 -7
  12. data/src/core/client_channel/client_channel.cc +16 -26
  13. data/src/core/client_channel/client_channel.h +2 -2
  14. data/src/core/client_channel/client_channel_filter.cc +54 -131
  15. data/src/core/client_channel/client_channel_filter.h +10 -6
  16. data/src/core/client_channel/client_channel_plugin.cc +2 -1
  17. data/src/core/client_channel/client_channel_service_config.cc +1 -1
  18. data/src/core/client_channel/client_channel_service_config.h +5 -5
  19. data/src/core/client_channel/direct_channel.cc +1 -1
  20. data/src/core/client_channel/direct_channel.h +1 -1
  21. data/src/core/client_channel/lb_metadata.cc +7 -8
  22. data/src/core/client_channel/lb_metadata.h +3 -3
  23. data/src/core/client_channel/load_balanced_call_destination.cc +4 -4
  24. data/src/core/client_channel/retry_filter.cc +1 -1
  25. data/src/core/client_channel/retry_filter.h +1 -1
  26. data/src/core/client_channel/retry_filter_legacy_call_data.cc +10 -12
  27. data/src/core/client_channel/retry_filter_legacy_call_data.h +7 -7
  28. data/src/core/client_channel/retry_interceptor.cc +16 -14
  29. data/src/core/client_channel/retry_interceptor.h +2 -2
  30. data/src/core/client_channel/retry_service_config.cc +1 -1
  31. data/src/core/client_channel/retry_service_config.h +3 -3
  32. data/src/core/client_channel/subchannel.cc +43 -76
  33. data/src/core/client_channel/subchannel.h +4 -4
  34. data/src/core/client_channel/subchannel_stream_client.cc +0 -1
  35. data/src/core/client_channel/subchannel_stream_client.h +3 -3
  36. data/src/core/config/config_vars.cc +1 -0
  37. data/src/core/config/config_vars.h +1 -0
  38. data/src/core/config/load_config.cc +3 -2
  39. data/src/core/config/load_config.h +1 -1
  40. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +4 -11
  41. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +7 -7
  42. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
  43. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +8 -15
  44. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +6 -6
  45. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  46. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +0 -7
  47. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +6 -6
  48. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +1 -1
  49. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +1 -1
  50. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -6
  51. data/src/core/ext/filters/http/client/http_client_filter.h +4 -4
  52. data/src/core/ext/filters/http/client_authority_filter.cc +6 -11
  53. data/src/core/ext/filters/http/client_authority_filter.h +6 -6
  54. data/src/core/ext/filters/http/message_compress/compression_filter.cc +18 -22
  55. data/src/core/ext/filters/http/message_compress/compression_filter.h +18 -13
  56. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -8
  57. data/src/core/ext/filters/http/server/http_server_filter.h +4 -4
  58. data/src/core/ext/filters/message_size/message_size_filter.cc +13 -25
  59. data/src/core/ext/filters/message_size/message_size_filter.h +20 -21
  60. data/src/core/ext/filters/rbac/rbac_filter.cc +0 -7
  61. data/src/core/ext/filters/rbac/rbac_filter.h +6 -6
  62. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +3 -3
  63. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +1 -6
  64. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +4 -4
  65. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +1 -1
  66. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +2 -2
  67. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -2
  68. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +4 -3
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -20
  70. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -5
  71. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
  72. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +2 -2
  73. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +4 -4
  74. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +84 -59
  75. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +7 -7
  76. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
  77. data/src/core/ext/transport/chttp2/transport/flow_control.h +3 -3
  78. data/src/core/ext/transport/chttp2/transport/frame.cc +2 -2
  79. data/src/core/ext/transport/chttp2/transport/frame.h +5 -5
  80. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +8 -8
  81. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +5 -5
  82. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -31
  84. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -7
  85. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +3 -3
  86. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -2
  87. data/src/core/ext/transport/chttp2/transport/internal.h +19 -8
  88. data/src/core/ext/transport/chttp2/transport/parsing.cc +14 -14
  89. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +1 -1
  90. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  91. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +2 -2
  92. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +2 -2
  93. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +2 -2
  94. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -39
  95. data/src/core/ext/transport/chttp2/transport/varint.cc +4 -4
  96. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -22
  97. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -3
  98. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +15 -10
  99. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +16 -0
  100. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +3 -2
  101. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +30 -0
  102. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +5 -3
  103. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +118 -0
  104. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +31 -6
  105. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +2 -0
  106. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +37 -7
  107. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +7 -5
  108. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +142 -0
  109. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +55 -0
  110. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +32 -0
  111. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +33 -0
  112. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +7 -4
  113. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +6 -4
  114. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +50 -47
  115. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +210 -199
  116. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  117. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +33 -33
  118. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +19 -17
  119. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +41 -0
  120. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +33 -0
  121. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +26 -19
  122. data/src/core/filter/blackboard.cc +2 -2
  123. data/src/core/filter/filter_args.h +2 -2
  124. data/src/core/handshaker/handshaker.cc +0 -3
  125. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -5
  126. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +31 -32
  127. data/src/core/handshaker/http_connect/http_proxy_mapper.h +4 -4
  128. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +5 -5
  129. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +5 -5
  130. data/src/core/handshaker/proxy_mapper.h +4 -4
  131. data/src/core/handshaker/proxy_mapper_registry.cc +5 -6
  132. data/src/core/handshaker/proxy_mapper_registry.h +4 -4
  133. data/src/core/handshaker/security/secure_endpoint.cc +2 -2
  134. data/src/core/handshaker/security/security_handshaker.cc +3 -5
  135. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +6 -4
  136. data/src/core/lib/channel/channel_args.cc +13 -13
  137. data/src/core/lib/channel/channel_args.h +8 -8
  138. data/src/core/lib/channel/connected_channel.cc +1 -1
  139. data/src/core/lib/channel/promise_based_filter.cc +9 -9
  140. data/src/core/lib/channel/promise_based_filter.h +79 -80
  141. data/src/core/lib/compression/compression.cc +3 -2
  142. data/src/core/lib/compression/compression_internal.cc +9 -9
  143. data/src/core/lib/compression/compression_internal.h +3 -3
  144. data/src/core/lib/debug/trace_flags.cc +3 -2
  145. data/src/core/lib/debug/trace_flags.h +1 -1
  146. data/src/core/lib/event_engine/ares_resolver.cc +9 -11
  147. data/src/core/lib/event_engine/ares_resolver.h +6 -10
  148. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -4
  149. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
  150. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +6 -7
  151. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -4
  152. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +2 -4
  153. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +3 -7
  154. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -4
  155. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +5 -7
  156. data/src/core/lib/event_engine/channel_args_endpoint_config.h +6 -7
  157. data/src/core/lib/event_engine/common_closures.h +2 -4
  158. data/src/core/lib/event_engine/default_event_engine.cc +62 -33
  159. data/src/core/lib/event_engine/default_event_engine.h +24 -33
  160. data/src/core/lib/event_engine/default_event_engine_factory.cc +6 -12
  161. data/src/core/lib/event_engine/default_event_engine_factory.h +2 -4
  162. data/src/core/lib/event_engine/event_engine.cc +2 -4
  163. data/src/core/lib/event_engine/extensions/can_track_errors.h +2 -4
  164. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +2 -4
  165. data/src/core/lib/event_engine/extensions/supports_fd.h +2 -4
  166. data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -4
  167. data/src/core/lib/event_engine/forkable.cc +2 -4
  168. data/src/core/lib/event_engine/forkable.h +2 -4
  169. data/src/core/lib/event_engine/grpc_polled_fd.h +2 -4
  170. data/src/core/lib/event_engine/handle_containers.h +2 -4
  171. data/src/core/lib/event_engine/memory_allocator_factory.h +2 -4
  172. data/src/core/lib/event_engine/poller.h +2 -4
  173. data/src/core/lib/event_engine/posix.h +2 -4
  174. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -50
  175. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -51
  177. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +2 -4
  178. data/src/core/lib/event_engine/posix_engine/event_poller.h +2 -4
  179. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -4
  180. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -4
  181. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +2 -4
  182. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -4
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +2 -4
  184. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -4
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -4
  186. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -4
  187. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +2 -4
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +6 -10
  189. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +2 -4
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +2 -4
  191. data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -4
  192. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -4
  193. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -5
  194. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -4
  195. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -4
  196. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +2 -4
  197. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +5 -6
  198. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +2 -4
  199. data/src/core/lib/event_engine/posix_engine/timer.cc +4 -6
  200. data/src/core/lib/event_engine/posix_engine/timer.h +4 -6
  201. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -4
  202. data/src/core/lib/event_engine/posix_engine/timer_heap.h +2 -4
  203. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -7
  204. data/src/core/lib/event_engine/posix_engine/timer_manager.h +4 -6
  205. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +4 -8
  206. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +24 -25
  207. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +2 -4
  208. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -4
  209. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -4
  210. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -4
  211. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +2 -4
  212. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +2 -4
  213. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +2 -4
  214. data/src/core/lib/event_engine/query_extensions.h +2 -4
  215. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -4
  216. data/src/core/lib/event_engine/resolved_address.cc +2 -4
  217. data/src/core/lib/event_engine/resolved_address_internal.h +2 -4
  218. data/src/core/lib/event_engine/shim.cc +2 -4
  219. data/src/core/lib/event_engine/shim.h +2 -4
  220. data/src/core/lib/event_engine/slice.cc +2 -4
  221. data/src/core/lib/event_engine/slice_buffer.cc +2 -4
  222. data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
  223. data/src/core/lib/event_engine/tcp_socket_utils.h +5 -7
  224. data/src/core/lib/event_engine/thread_local.cc +2 -4
  225. data/src/core/lib/event_engine/thread_local.h +2 -4
  226. data/src/core/lib/event_engine/thread_pool/thread_count.cc +2 -4
  227. data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -18
  228. data/src/core/lib/event_engine/thread_pool/thread_pool.h +2 -4
  229. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +2 -4
  230. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +3 -5
  231. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +2 -4
  232. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +2 -4
  233. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +2 -4
  234. data/src/core/lib/event_engine/time_util.cc +2 -4
  235. data/src/core/lib/event_engine/time_util.h +2 -4
  236. data/src/core/lib/event_engine/utils.cc +2 -4
  237. data/src/core/lib/event_engine/utils.h +2 -4
  238. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -4
  239. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +2 -4
  240. data/src/core/lib/event_engine/windows/iocp.cc +2 -4
  241. data/src/core/lib/event_engine/windows/iocp.h +2 -4
  242. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +2 -4
  243. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +2 -4
  244. data/src/core/lib/event_engine/windows/win_socket.cc +2 -4
  245. data/src/core/lib/event_engine/windows/win_socket.h +2 -4
  246. data/src/core/lib/event_engine/windows/windows_endpoint.cc +2 -4
  247. data/src/core/lib/event_engine/windows/windows_endpoint.h +4 -6
  248. data/src/core/lib/event_engine/windows/windows_engine.cc +2 -4
  249. data/src/core/lib/event_engine/windows/windows_engine.h +2 -4
  250. data/src/core/lib/event_engine/windows/windows_listener.cc +2 -4
  251. data/src/core/lib/event_engine/windows/windows_listener.h +2 -4
  252. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +2 -4
  253. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -4
  254. data/src/core/lib/event_engine/work_queue/work_queue.h +2 -4
  255. data/src/core/lib/experiments/experiments.cc +102 -213
  256. data/src/core/lib/experiments/experiments.h +53 -89
  257. data/src/core/lib/iomgr/buffer_list.h +22 -21
  258. data/src/core/lib/iomgr/cfstream_handle.cc +0 -2
  259. data/src/core/lib/iomgr/closure.h +1 -4
  260. data/src/core/lib/iomgr/combiner.cc +0 -1
  261. data/src/core/lib/iomgr/error.cc +2 -2
  262. data/src/core/lib/iomgr/event_engine_shims/closure.cc +0 -1
  263. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +0 -2
  264. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +0 -1
  265. data/src/core/lib/iomgr/exec_ctx.cc +1 -7
  266. data/src/core/lib/iomgr/exec_ctx.h +1 -132
  267. data/src/core/lib/iomgr/executor.cc +0 -11
  268. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -2
  269. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -2
  270. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -2
  271. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  272. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -3
  273. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
  274. data/src/core/lib/iomgr/timer_manager.cc +1 -9
  275. data/src/core/lib/promise/activity.h +4 -4
  276. data/src/core/lib/promise/detail/join_state.h +16 -68
  277. data/src/core/lib/promise/detail/promise_factory.h +85 -25
  278. data/src/core/lib/promise/detail/promise_like.h +16 -19
  279. data/src/core/lib/promise/detail/seq_state.h +102 -315
  280. data/src/core/lib/promise/for_each.h +14 -5
  281. data/src/core/lib/promise/if.h +48 -20
  282. data/src/core/lib/promise/interceptor_list.h +9 -9
  283. data/src/core/lib/promise/latch.h +14 -6
  284. data/src/core/lib/promise/loop.h +58 -18
  285. data/src/core/lib/promise/map.h +103 -49
  286. data/src/core/lib/promise/party.cc +48 -14
  287. data/src/core/lib/promise/party.h +216 -27
  288. data/src/core/lib/promise/pipe.h +12 -12
  289. data/src/core/lib/promise/poll.h +8 -5
  290. data/src/core/lib/promise/prioritized_race.h +16 -22
  291. data/src/core/lib/promise/promise.h +2 -3
  292. data/src/core/lib/promise/race.h +4 -12
  293. data/src/core/lib/promise/seq.h +41 -6
  294. data/src/core/lib/promise/sleep.cc +3 -3
  295. data/src/core/lib/promise/sleep.h +14 -1
  296. data/src/core/lib/promise/status_flag.h +9 -3
  297. data/src/core/lib/promise/try_join.h +119 -5
  298. data/src/core/lib/promise/try_seq.h +39 -12
  299. data/src/core/lib/resource_quota/arena.h +79 -0
  300. data/src/core/lib/resource_quota/memory_quota.cc +53 -49
  301. data/src/core/lib/resource_quota/memory_quota.h +4 -4
  302. data/src/core/lib/security/authorization/evaluate_args.cc +3 -3
  303. data/src/core/lib/security/authorization/evaluate_args.h +3 -3
  304. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +0 -7
  305. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +6 -6
  306. data/src/core/lib/security/authorization/matchers.h +3 -3
  307. data/src/core/lib/security/authorization/rbac_policy.cc +1 -1
  308. data/src/core/lib/security/authorization/rbac_policy.h +3 -3
  309. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +1 -2
  310. data/src/core/lib/security/credentials/external/external_account_credentials.cc +1 -3
  311. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +0 -1
  312. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -1
  313. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -2
  314. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -1
  315. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  316. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -2
  317. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  318. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +0 -1
  319. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +4 -4
  320. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -3
  321. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +0 -1
  322. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -2
  323. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +12 -13
  324. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +14 -14
  325. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +23 -15
  326. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +3 -3
  327. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +0 -1
  328. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -2
  329. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -2
  330. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +4 -5
  331. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +4 -4
  332. data/src/core/lib/security/credentials/xds/xds_credentials.cc +2 -1
  333. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  334. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -3
  335. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  336. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +9 -9
  337. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +13 -13
  338. data/src/core/lib/security/transport/auth_filters.h +95 -7
  339. data/src/core/lib/security/transport/client_auth_filter.cc +96 -6
  340. data/src/core/lib/security/transport/server_auth_filter.cc +0 -8
  341. data/src/core/lib/slice/slice_buffer.cc +2 -2
  342. data/src/core/lib/slice/slice_buffer.h +2 -2
  343. data/src/core/lib/surface/call.cc +0 -4
  344. data/src/core/lib/surface/call.h +4 -3
  345. data/src/core/lib/surface/call_utils.cc +2 -2
  346. data/src/core/lib/surface/call_utils.h +8 -4
  347. data/src/core/lib/surface/channel.cc +6 -14
  348. data/src/core/lib/surface/channel.h +3 -3
  349. data/src/core/lib/surface/channel_init.cc +1 -1
  350. data/src/core/lib/surface/client_call.cc +13 -6
  351. data/src/core/lib/surface/client_call.h +2 -2
  352. data/src/core/lib/surface/completion_queue.cc +10 -49
  353. data/src/core/lib/surface/filter_stack_call.cc +2 -4
  354. data/src/core/lib/surface/filter_stack_call.h +1 -1
  355. data/src/core/lib/surface/init.cc +17 -12
  356. data/src/core/lib/surface/legacy_channel.cc +10 -8
  357. data/src/core/lib/surface/legacy_channel.h +2 -2
  358. data/src/core/lib/surface/server_call.cc +23 -6
  359. data/src/core/lib/surface/server_call.h +2 -0
  360. data/src/core/lib/surface/version.cc +2 -2
  361. data/src/core/lib/transport/call_filters.h +100 -59
  362. data/src/core/lib/transport/call_spine.cc +32 -34
  363. data/src/core/lib/transport/call_spine.h +66 -23
  364. data/src/core/lib/transport/call_state.h +8 -8
  365. data/src/core/lib/transport/connectivity_state.cc +8 -9
  366. data/src/core/lib/transport/connectivity_state.h +2 -4
  367. data/src/core/lib/transport/http2_errors.h +5 -3
  368. data/src/core/lib/transport/interception_chain.h +27 -7
  369. data/src/core/lib/transport/metadata.h +88 -0
  370. data/src/core/lib/transport/metadata_batch.cc +2 -2
  371. data/src/core/lib/transport/metadata_batch.h +79 -18
  372. data/src/core/lib/transport/timeout_encoding.cc +15 -15
  373. data/src/core/lib/transport/timeout_encoding.h +3 -2
  374. data/src/core/lib/transport/transport.cc +0 -1
  375. data/src/core/lib/transport/transport.h +12 -7
  376. data/src/core/load_balancing/backend_metric_parser.cc +21 -28
  377. data/src/core/load_balancing/endpoint_list.cc +1 -1
  378. data/src/core/load_balancing/endpoint_list.h +7 -7
  379. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -6
  380. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +4 -4
  381. data/src/core/load_balancing/grpclb/grpclb.cc +21 -38
  382. data/src/core/load_balancing/health_check_client.cc +16 -48
  383. data/src/core/load_balancing/health_check_client_internal.h +7 -7
  384. data/src/core/load_balancing/lb_policy.cc +4 -6
  385. data/src/core/load_balancing/lb_policy.h +4 -4
  386. data/src/core/load_balancing/lb_policy_registry.cc +10 -8
  387. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +57 -68
  388. data/src/core/load_balancing/outlier_detection/outlier_detection.h +4 -3
  389. data/src/core/load_balancing/pick_first/pick_first.cc +21 -21
  390. data/src/core/load_balancing/priority/priority.cc +8 -13
  391. data/src/core/load_balancing/ring_hash/ring_hash.cc +54 -90
  392. data/src/core/load_balancing/rls/rls.cc +105 -194
  393. data/src/core/load_balancing/rls/rls.h +97 -1
  394. data/src/core/load_balancing/round_robin/round_robin.cc +5 -5
  395. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +4 -4
  396. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +2 -2
  397. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +8 -14
  398. data/src/core/load_balancing/weighted_target/weighted_target.cc +7 -15
  399. data/src/core/load_balancing/xds/cds.cc +11 -15
  400. data/src/core/load_balancing/xds/xds_cluster_impl.cc +15 -18
  401. data/src/core/load_balancing/xds/xds_cluster_manager.cc +10 -18
  402. data/src/core/load_balancing/xds/xds_override_host.cc +45 -92
  403. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  404. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +7 -7
  405. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +10 -15
  406. data/src/core/resolver/dns/native/dns_resolver.cc +1 -1
  407. data/src/core/resolver/fake/fake_resolver.cc +10 -11
  408. data/src/core/resolver/fake/fake_resolver.h +2 -2
  409. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +9 -12
  410. data/src/core/resolver/polling_resolver.cc +2 -5
  411. data/src/core/resolver/polling_resolver.h +3 -3
  412. data/src/core/resolver/resolver_registry.cc +4 -3
  413. data/src/core/resolver/xds/xds_config.cc +6 -6
  414. data/src/core/resolver/xds/xds_config.h +2 -2
  415. data/src/core/resolver/xds/xds_dependency_manager.cc +80 -77
  416. data/src/core/resolver/xds/xds_dependency_manager.h +4 -0
  417. data/src/core/resolver/xds/xds_resolver.cc +53 -75
  418. data/src/core/server/server.cc +71 -79
  419. data/src/core/server/server.h +16 -5
  420. data/src/core/server/server_call_tracer_filter.cc +3 -7
  421. data/src/core/server/server_config_selector_filter.cc +8 -15
  422. data/src/core/server/xds_server_config_fetcher.cc +16 -18
  423. data/src/core/service_config/service_config_channel_arg_filter.cc +7 -19
  424. data/src/core/service_config/service_config_impl.cc +3 -3
  425. data/src/core/telemetry/call_tracer.cc +8 -8
  426. data/src/core/telemetry/call_tracer.h +6 -5
  427. data/src/core/telemetry/metrics.cc +3 -3
  428. data/src/core/telemetry/metrics.h +2 -8
  429. data/src/core/telemetry/tcp_tracer.h +32 -32
  430. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -2
  431. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +14 -14
  432. data/src/core/tsi/fake_transport_security.cc +5 -0
  433. data/src/core/util/dump_args.h +1 -9
  434. data/src/core/util/env.h +3 -4
  435. data/src/core/util/examine_stack.cc +2 -2
  436. data/src/core/util/examine_stack.h +3 -4
  437. data/src/core/util/gpr_time.cc +0 -2
  438. data/src/core/util/http_client/httpcli.cc +4 -5
  439. data/src/core/util/http_client/httpcli.h +4 -4
  440. data/src/core/util/http_client/httpcli_security_connector.cc +2 -2
  441. data/src/core/util/json/json_channel_args.h +2 -1
  442. data/src/core/util/json/json_object_loader.cc +4 -4
  443. data/src/core/util/json/json_object_loader.h +12 -12
  444. data/src/core/util/json/json_reader.cc +4 -4
  445. data/src/core/util/json/json_writer.cc +3 -3
  446. data/src/core/util/latent_see.cc +3 -3
  447. data/src/core/util/latent_see.h +2 -2
  448. data/src/core/util/linux/env.cc +3 -4
  449. data/src/core/util/lru_cache.h +4 -4
  450. data/src/core/util/match.h +7 -7
  451. data/src/core/util/matchers.cc +1 -2
  452. data/src/core/util/matchers.h +2 -2
  453. data/src/core/util/posix/env.cc +2 -2
  454. data/src/core/util/posix/sync.cc +0 -1
  455. data/src/core/util/posix/time.cc +0 -1
  456. data/src/core/util/ring_buffer.h +4 -5
  457. data/src/core/util/status_helper.cc +16 -20
  458. data/src/core/util/status_helper.h +5 -5
  459. data/src/core/util/sync_abseil.cc +0 -1
  460. data/src/core/util/table.h +6 -21
  461. data/src/core/util/time.cc +1 -1
  462. data/src/core/util/time.h +3 -3
  463. data/src/core/util/time_precise.cc +0 -1
  464. data/src/core/util/type_list.h +56 -0
  465. data/src/core/util/uri.cc +6 -4
  466. data/src/core/util/uri.h +7 -0
  467. data/src/core/util/useful.h +4 -4
  468. data/src/core/util/validation_errors.cc +5 -5
  469. data/src/core/util/wait_for_single_owner.h +62 -0
  470. data/src/core/util/windows/env.cc +3 -3
  471. data/src/core/util/windows/sync.cc +0 -1
  472. data/src/core/util/windows/time.cc +0 -1
  473. data/src/core/util/work_serializer.cc +27 -267
  474. data/src/core/util/work_serializer.h +3 -27
  475. data/src/core/xds/grpc/certificate_provider_store.cc +12 -17
  476. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -2
  477. data/src/core/xds/grpc/xds_audit_logger_registry.cc +1 -1
  478. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +11 -14
  479. data/src/core/xds/grpc/xds_bootstrap_grpc.h +2 -2
  480. data/src/core/xds/grpc/xds_certificate_provider.cc +15 -15
  481. data/src/core/xds/grpc/xds_client_grpc.cc +7 -8
  482. data/src/core/xds/grpc/xds_cluster.h +4 -4
  483. data/src/core/xds/grpc/xds_cluster_parser.cc +26 -26
  484. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +4 -4
  485. data/src/core/xds/grpc/xds_common_types.cc +2 -2
  486. data/src/core/xds/grpc/xds_common_types.h +4 -4
  487. data/src/core/xds/grpc/xds_common_types_parser.cc +29 -31
  488. data/src/core/xds/grpc/xds_common_types_parser.h +8 -7
  489. data/src/core/xds/grpc/xds_endpoint.cc +3 -4
  490. data/src/core/xds/grpc/xds_endpoint_parser.cc +14 -14
  491. data/src/core/xds/grpc/xds_health_status.cc +4 -4
  492. data/src/core/xds/grpc/xds_health_status.h +4 -3
  493. data/src/core/xds/grpc/xds_http_fault_filter.cc +18 -20
  494. data/src/core/xds/grpc/xds_http_fault_filter.h +4 -3
  495. data/src/core/xds/grpc/xds_http_filter.h +3 -3
  496. data/src/core/xds/grpc/xds_http_filter_registry.cc +7 -7
  497. data/src/core/xds/grpc/xds_http_filter_registry.h +3 -3
  498. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +7 -7
  499. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +4 -3
  500. data/src/core/xds/grpc/xds_http_rbac_filter.cc +30 -23
  501. data/src/core/xds/grpc/xds_http_rbac_filter.h +4 -3
  502. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +10 -10
  503. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +4 -3
  504. data/src/core/xds/grpc/xds_lb_policy_registry.cc +4 -4
  505. data/src/core/xds/grpc/xds_listener.cc +4 -6
  506. data/src/core/xds/grpc/xds_listener.h +10 -10
  507. data/src/core/xds/grpc/xds_listener_parser.cc +58 -51
  508. data/src/core/xds/grpc/xds_listener_parser.h +2 -1
  509. data/src/core/xds/grpc/xds_metadata.cc +5 -5
  510. data/src/core/xds/grpc/xds_metadata_parser.cc +65 -52
  511. data/src/core/xds/grpc/xds_route_config.cc +9 -15
  512. data/src/core/xds/grpc/xds_route_config.h +9 -9
  513. data/src/core/xds/grpc/xds_route_config_parser.cc +114 -116
  514. data/src/core/xds/grpc/xds_route_config_parser.h +4 -4
  515. data/src/core/xds/grpc/xds_routing.cc +6 -6
  516. data/src/core/xds/grpc/xds_routing.h +5 -5
  517. data/src/core/xds/grpc/xds_server_grpc.cc +22 -1
  518. data/src/core/xds/grpc/xds_server_grpc.h +5 -2
  519. data/src/core/xds/grpc/xds_server_grpc_interface.h +33 -0
  520. data/src/core/xds/grpc/xds_transport_grpc.cc +5 -6
  521. data/src/core/xds/xds_client/lrs_client.cc +71 -83
  522. data/src/core/xds/xds_client/lrs_client.h +8 -8
  523. data/src/core/xds/xds_client/xds_api.cc +5 -5
  524. data/src/core/xds/xds_client/xds_bootstrap.cc +11 -1
  525. data/src/core/xds/xds_client/xds_bootstrap.h +7 -0
  526. data/src/core/xds/xds_client/xds_client.cc +552 -359
  527. data/src/core/xds/xds_client/xds_client.h +39 -14
  528. data/src/core/xds/xds_client/xds_resource_type.h +2 -3
  529. data/src/core/xds/xds_client/xds_resource_type_impl.h +3 -3
  530. data/src/ruby/lib/grpc/version.rb +1 -1
  531. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +13 -55
  532. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.cc +13 -55
  533. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.cc +13 -55
  534. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.cc +13 -55
  535. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.cc +17 -59
  536. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.cc +13 -55
  537. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +13 -55
  538. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.cc +13 -55
  539. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.cc +13 -55
  540. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.cc +13 -55
  541. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.cc +13 -55
  542. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.cc +13 -55
  543. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.cc +41 -76
  544. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.cc +13 -55
  545. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.cc +17 -91
  546. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.cc +13 -55
  547. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.cc +13 -55
  548. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.cc +13 -55
  549. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.cc +13 -55
  550. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.cc +13 -55
  551. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +13 -57
  552. data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.cc +13 -13
  553. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +13 -55
  554. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +13 -55
  555. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.cc +13 -55
  556. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.cc +13 -55
  557. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +13 -55
  558. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.cc +13 -55
  559. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.cc +13 -55
  560. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +13 -13
  561. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.cc +13 -55
  562. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.cc +13 -55
  563. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +16 -57
  564. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.cc +13 -55
  565. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.cc +14 -56
  566. data/third_party/boringssl-with-bazel/src/crypto/bio/file.cc +14 -56
  567. data/third_party/boringssl-with-bazel/src/crypto/bio/hexdump.cc +18 -58
  568. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +13 -55
  569. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.cc +15 -51
  570. data/third_party/boringssl-with-bazel/src/crypto/bio/printf.cc +17 -60
  571. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +13 -55
  572. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +13 -13
  573. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.cc +13 -13
  574. data/third_party/boringssl-with-bazel/src/crypto/{bn_extra → bn}/bn_asn1.cc +13 -13
  575. data/third_party/boringssl-with-bazel/src/crypto/{bn_extra → bn}/convert.cc +13 -55
  576. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.cc +14 -57
  577. data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.cc +13 -13
  578. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.cc +13 -13
  579. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +13 -13
  580. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +23 -15
  581. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +13 -13
  582. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.cc +13 -13
  583. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.cc +13 -13
  584. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +18 -18
  585. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +110 -0
  586. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_aesctrhmac.cc +18 -23
  587. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_aesgcmsiv.cc +20 -13
  588. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_chacha20poly1305.cc +13 -13
  589. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_des.cc +13 -55
  590. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_null.cc +51 -0
  591. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_rc2.cc +27 -69
  592. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_rc4.cc +54 -0
  593. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/e_tls.cc +13 -13
  594. data/third_party/boringssl-with-bazel/src/crypto/cipher/get_cipher.cc +85 -0
  595. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/internal.h +29 -69
  596. data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → cipher}/tls_cbc.cc +13 -51
  597. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.cc +14 -58
  598. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +13 -13
  599. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.cc +13 -13
  600. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.cc +13 -13
  601. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.cc +13 -13
  602. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.cc +13 -13
  603. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.cc +13 -13
  604. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.cc +14 -14
  605. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.cc +13 -13
  606. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +13 -13
  607. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +13 -13
  608. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +13 -67
  609. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +14 -14
  610. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.cc +13 -13
  611. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.cc +13 -13
  612. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +13 -13
  613. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +13 -13
  614. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.cc +15 -13
  615. data/third_party/boringssl-with-bazel/src/crypto/des/des.cc +13 -55
  616. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +27 -69
  617. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +124 -0
  618. data/third_party/boringssl-with-bazel/src/crypto/{dh_extra → dh}/params.cc +13 -51
  619. data/third_party/boringssl-with-bazel/src/crypto/{digest_extra → digest}/digest_extra.cc +13 -55
  620. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +13 -58
  621. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +13 -53
  622. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +13 -13
  623. data/third_party/boringssl-with-bazel/src/crypto/{ec_extra → ec}/ec_asn1.cc +24 -61
  624. data/third_party/boringssl-with-bazel/src/crypto/{ec_extra → ec}/ec_derive.cc +13 -13
  625. data/third_party/boringssl-with-bazel/src/crypto/{ec_extra → ec}/hash_to_curve.cc +14 -14
  626. data/third_party/boringssl-with-bazel/src/crypto/{ec_extra → ec}/internal.h +13 -13
  627. data/third_party/boringssl-with-bazel/src/crypto/ecdh/ecdh.cc +73 -0
  628. data/third_party/boringssl-with-bazel/src/crypto/{ecdsa_extra → ecdsa}/ecdsa_asn1.cc +17 -61
  629. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.cc +13 -13
  630. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +17 -107
  631. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +13 -13
  632. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.cc +29 -79
  633. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +122 -198
  634. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +13 -55
  635. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +13 -55
  636. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.cc +15 -8
  637. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.cc +13 -8
  638. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +56 -110
  639. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.cc +13 -54
  640. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +20 -66
  641. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.cc +13 -13
  642. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +13 -13
  643. data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.cc +13 -13
  644. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.cc +19 -57
  645. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +13 -54
  646. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.cc +13 -13
  647. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +13 -13
  648. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.cc +29 -77
  649. data/third_party/boringssl-with-bazel/src/crypto/evp/print.cc +13 -51
  650. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.cc +13 -8
  651. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +13 -55
  652. data/third_party/boringssl-with-bazel/src/crypto/ex_data.cc +13 -107
  653. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +112 -48
  654. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.cc.inc +13 -13
  655. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes → aes}/cbc.cc.inc +13 -47
  656. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes → aes}/cfb.cc.inc +13 -47
  657. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ctr.cc.inc +100 -0
  658. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes → aes}/gcm.cc.inc +127 -314
  659. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes → aes}/gcm_nohw.cc.inc +13 -13
  660. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +419 -66
  661. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +13 -47
  662. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +13 -53
  663. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/ofb.cc.inc +53 -0
  664. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/{modes → aes}/polyval.cc.inc +13 -13
  665. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +28 -20
  666. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +501 -14
  667. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/add.cc.inc +13 -55
  668. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +15 -2
  669. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.cc.inc +13 -55
  670. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.cc.inc +13 -55
  671. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.cc.inc +13 -55
  672. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.cc.inc +16 -57
  673. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +13 -55
  674. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.cc.inc +13 -13
  675. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +16 -109
  676. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +13 -107
  677. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +13 -13
  678. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.cc.inc +13 -55
  679. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -134
  680. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +13 -51
  681. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +14 -109
  682. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.cc.inc +13 -13
  683. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +13 -55
  684. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +13 -107
  685. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.cc.inc +13 -107
  686. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.cc.inc +18 -13
  687. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +20 -17
  688. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +13 -55
  689. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +13 -53
  690. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.cc.inc +13 -13
  691. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.cc.inc +14 -56
  692. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +69 -283
  693. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aesccm.cc.inc +21 -58
  694. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +14 -65
  695. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/cmac.cc.inc +13 -47
  696. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +13 -13
  697. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +13 -55
  698. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +13 -55
  699. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +13 -13
  700. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +13 -55
  701. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.cc.inc +13 -55
  702. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +13 -55
  703. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +13 -47
  704. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/digestsign.cc.inc +13 -54
  705. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +91 -91
  706. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +14 -66
  707. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +14 -72
  708. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.cc.inc +14 -66
  709. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.cc.inc +13 -13
  710. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +19 -66
  711. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +14 -66
  712. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.cc.inc +13 -13
  713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz-table.h +15 -10
  714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.cc.inc +22 -17
  715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +22 -17
  716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.cc.inc +13 -13
  717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +13 -13
  718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.cc.inc +21 -15
  719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +14 -66
  720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.cc.inc +13 -13
  721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.cc.inc +13 -13
  722. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.cc.inc +14 -66
  723. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.cc.inc +14 -65
  724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +13 -51
  725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +13 -13
  726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.cc +13 -13
  727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.cc.inc +13 -13
  728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.cc.inc +13 -55
  729. data/third_party/boringssl-with-bazel/src/crypto/{keccak → fipsmodule/keccak}/internal.h +13 -13
  730. data/third_party/boringssl-with-bazel/src/crypto/{keccak/keccak.cc → fipsmodule/keccak/keccak.cc.inc} +14 -14
  731. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +1993 -0
  732. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +1165 -0
  733. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.cc.inc +18 -25
  734. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +18 -24
  735. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +15 -13
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.cc.inc +14 -109
  737. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +13 -56
  738. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +13 -54
  739. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +18 -77
  740. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +38 -90
  741. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.cc.inc +13 -13
  742. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +13 -13
  743. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +34 -34
  744. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +13 -13
  745. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +44 -56
  746. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.cc.inc +13 -55
  747. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.cc.inc +13 -55
  748. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.cc.inc +13 -55
  749. data/third_party/boringssl-with-bazel/src/crypto/{slhdsa → fipsmodule/slhdsa}/address.h +28 -32
  750. data/third_party/boringssl-with-bazel/src/crypto/{slhdsa/fors.cc → fipsmodule/slhdsa/fors.cc.inc} +44 -44
  751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fors.h +58 -0
  752. data/third_party/boringssl-with-bazel/src/crypto/{slhdsa/merkle.cc → fipsmodule/slhdsa/merkle.cc.inc} +46 -46
  753. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/merkle.h +70 -0
  754. data/third_party/boringssl-with-bazel/src/crypto/{slhdsa → fipsmodule/slhdsa}/params.h +20 -25
  755. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +329 -0
  756. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.cc.inc +173 -0
  757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/thash.h +85 -0
  758. data/third_party/boringssl-with-bazel/src/crypto/{slhdsa/wots.cc → fipsmodule/slhdsa/wots.cc.inc} +46 -46
  759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/wots.h +50 -0
  760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +13 -13
  761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.cc.inc +13 -51
  762. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.cc +13 -13
  763. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.cc +21 -13
  764. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +13 -13
  765. data/third_party/boringssl-with-bazel/src/crypto/internal.h +62 -205
  766. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +13 -13
  767. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.cc +52 -28
  768. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +31 -75
  769. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.cc +13 -55
  770. data/third_party/boringssl-with-bazel/src/crypto/md4/md4.cc +13 -55
  771. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +13 -13
  772. data/third_party/boringssl-with-bazel/src/crypto/md5/md5.cc +13 -55
  773. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +13 -55
  774. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.cc +47 -1747
  775. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +97 -1042
  776. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +13 -55
  777. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +14 -56
  778. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.cc +13 -55
  779. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +44 -0
  780. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.cc +13 -107
  781. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.cc +18 -58
  782. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +56 -103
  783. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.cc +13 -55
  784. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.cc +13 -55
  785. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.cc +13 -55
  786. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.cc +13 -55
  787. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.cc +13 -55
  788. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +13 -13
  789. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +13 -13
  790. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +15 -13
  791. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +13 -54
  792. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +13 -54
  793. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +13 -54
  794. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +13 -54
  795. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +13 -13
  796. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.cc +13 -13
  797. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.cc +13 -13
  798. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.cc +13 -13
  799. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +13 -13
  800. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.cc +13 -13
  801. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/deterministic.cc +13 -13
  802. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/fork_detect.cc +13 -13
  803. data/third_party/boringssl-with-bazel/src/crypto/rand/forkunsafe.cc +44 -0
  804. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/getentropy.cc +13 -13
  805. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/getrandom_fillin.h +13 -13
  806. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +42 -0
  807. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/passive.cc +13 -13
  808. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra/rand_extra.cc → rand/rand.cc} +13 -13
  809. data/third_party/boringssl-with-bazel/src/crypto/rand/sysrand_internal.h +37 -0
  810. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +46 -0
  811. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/urandom.cc +13 -13
  812. data/third_party/boringssl-with-bazel/src/crypto/{rand_extra → rand}/windows.cc +13 -13
  813. data/third_party/boringssl-with-bazel/src/crypto/rc4/rc4.cc +13 -55
  814. data/third_party/boringssl-with-bazel/src/crypto/refcount.cc +13 -13
  815. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +36 -0
  816. data/third_party/boringssl-with-bazel/src/crypto/{rsa_extra → rsa}/rsa_asn1.cc +13 -54
  817. data/third_party/boringssl-with-bazel/src/crypto/{rsa_extra → rsa}/rsa_crypt.cc +13 -55
  818. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_extra.cc +19 -0
  819. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_print.cc +27 -0
  820. data/third_party/boringssl-with-bazel/src/crypto/sha/sha1.cc +13 -13
  821. data/third_party/boringssl-with-bazel/src/crypto/sha/sha256.cc +13 -13
  822. data/third_party/boringssl-with-bazel/src/crypto/sha/sha512.cc +13 -13
  823. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.cc +13 -13
  824. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/slhdsa.cc +62 -256
  825. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +204 -0
  826. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/spake2plus.cc +501 -0
  827. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.cc +13 -55
  828. data/third_party/boringssl-with-bazel/src/crypto/thread.cc +13 -55
  829. data/third_party/boringssl-with-bazel/src/crypto/thread_none.cc +13 -13
  830. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.cc +13 -13
  831. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +13 -13
  832. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +13 -13
  833. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.cc +14 -14
  834. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.cc +14 -14
  835. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.cc +14 -14
  836. data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.cc +13 -55
  837. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +13 -55
  838. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.cc +13 -55
  839. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.cc +13 -55
  840. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +14 -56
  841. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.cc +25 -71
  842. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.cc +13 -55
  843. data/third_party/boringssl-with-bazel/src/crypto/x509/ext_dat.h +13 -55
  844. data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.cc +13 -55
  845. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +13 -57
  846. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.cc +13 -55
  847. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.cc +13 -13
  848. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.cc +13 -54
  849. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.cc +13 -55
  850. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.cc +13 -55
  851. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.cc +13 -55
  852. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.cc +13 -55
  853. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akey.cc +13 -55
  854. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_akeya.cc +13 -55
  855. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_alt.cc +13 -54
  856. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bcons.cc +13 -55
  857. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_bitst.cc +13 -55
  858. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +13 -55
  859. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.cc +13 -57
  860. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.cc +13 -55
  861. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_enum.cc +13 -55
  862. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_extku.cc +13 -55
  863. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_genn.cc +13 -55
  864. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ia5.cc +13 -57
  865. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +17 -66
  866. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_int.cc +13 -55
  867. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.cc +14 -57
  868. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ncons.cc +13 -54
  869. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_ocsp.cc +13 -8
  870. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pcons.cc +13 -54
  871. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_pmaps.cc +13 -54
  872. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_prn.cc +13 -55
  873. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_purp.cc +13 -55
  874. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_skey.cc +13 -55
  875. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.cc +17 -70
  876. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.cc +13 -55
  877. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.cc +13 -55
  878. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.cc +13 -55
  879. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.cc +13 -55
  880. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.cc +13 -55
  881. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.cc +13 -55
  882. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.cc +14 -60
  883. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.cc +13 -55
  884. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.cc +13 -55
  885. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.cc +13 -55
  886. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.cc +13 -55
  887. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.cc +13 -55
  888. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.cc +13 -55
  889. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +13 -55
  890. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.cc +13 -55
  891. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.cc +13 -55
  892. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.cc +13 -55
  893. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.cc +13 -55
  894. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.cc +13 -55
  895. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +13 -55
  896. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.cc +13 -55
  897. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.cc +13 -55
  898. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.cc +13 -55
  899. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.cc +13 -55
  900. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +13 -55
  901. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.cc +13 -55
  902. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.cc +13 -55
  903. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.cc +13 -55
  904. data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.cc +13 -58
  905. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.cc +13 -55
  906. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +13 -55
  907. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +13 -55
  908. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +465 -451
  909. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +13 -13
  910. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +13 -47
  911. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +13 -51
  912. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +14 -14
  913. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +23 -62
  914. data/third_party/boringssl-with-bazel/src/include/openssl/asn1_mac.h +13 -13
  915. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +14 -56
  916. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +15 -53
  917. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +13 -55
  918. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +13 -13
  919. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +13 -55
  920. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +13 -13
  921. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +13 -55
  922. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -121
  923. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +13 -55
  924. data/third_party/boringssl-with-bazel/src/include/openssl/buffer.h +13 -13
  925. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +31 -16
  926. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +13 -55
  927. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +13 -13
  928. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +31 -59
  929. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +13 -13
  930. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +13 -55
  931. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +13 -13
  932. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +13 -13
  933. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +13 -13
  934. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +13 -13
  935. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +13 -55
  936. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +13 -55
  937. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +13 -55
  938. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +13 -58
  939. data/third_party/boringssl-with-bazel/src/include/openssl/dtls1.h +13 -13
  940. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +13 -13
  941. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +14 -66
  942. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +14 -71
  943. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +14 -65
  944. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +13 -51
  945. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +13 -13
  946. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -107
  947. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +13 -55
  948. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +13 -55
  949. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +13 -107
  950. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +13 -13
  951. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +13 -13
  952. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +13 -55
  953. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +13 -13
  954. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +13 -13
  955. data/third_party/boringssl-with-bazel/src/include/openssl/is_boringssl.h +13 -13
  956. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +13 -13
  957. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +13 -55
  958. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +13 -55
  959. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +13 -55
  960. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +13 -55
  961. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +13 -19
  962. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +13 -37
  963. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +27 -69
  964. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +13 -55
  965. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +13 -13
  966. data/third_party/boringssl-with-bazel/src/include/openssl/objects.h +13 -13
  967. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +13 -13
  968. data/third_party/boringssl-with-bazel/src/include/openssl/opensslv.h +13 -13
  969. data/third_party/boringssl-with-bazel/src/include/openssl/ossl_typ.h +13 -13
  970. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +22 -60
  971. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs12.h +13 -13
  972. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +13 -13
  973. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +13 -55
  974. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +13 -13
  975. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +13 -13
  976. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +13 -13
  977. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -13
  978. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +13 -55
  979. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +13 -55
  980. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +13 -58
  981. data/third_party/boringssl-with-bazel/src/include/openssl/safestack.h +13 -13
  982. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +13 -13
  983. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +13 -55
  984. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +13 -13
  985. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +54 -13
  986. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +19 -32
  987. data/third_party/boringssl-with-bazel/src/include/openssl/srtp.h +13 -13
  988. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +198 -174
  989. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +14 -114
  990. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +13 -55
  991. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +23 -13
  992. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +13 -55
  993. data/third_party/boringssl-with-bazel/src/include/openssl/time.h +13 -13
  994. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +27 -156
  995. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +15 -15
  996. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +13 -55
  997. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +14 -61
  998. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +13 -13
  999. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +13 -13
  1000. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3_errors.h +13 -53
  1001. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +13 -8
  1002. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +15 -114
  1003. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +13 -55
  1004. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +13 -110
  1005. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +17 -115
  1006. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -55
  1007. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +16 -115
  1008. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +32 -34
  1009. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +314 -132
  1010. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +19 -16
  1011. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +23 -123
  1012. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +55 -174
  1013. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +26 -157
  1014. data/third_party/boringssl-with-bazel/src/ssl/internal.h +104 -240
  1015. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +22 -120
  1016. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +16 -148
  1017. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +16 -110
  1018. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +16 -16
  1019. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +14 -81
  1020. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +15 -20
  1021. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +14 -113
  1022. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +19 -145
  1023. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +164 -37
  1024. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +13 -109
  1025. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +15 -17
  1026. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -184
  1027. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +23 -67
  1028. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +25 -144
  1029. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +14 -82
  1030. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +20 -143
  1031. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +15 -15
  1032. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +15 -139
  1033. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +28 -156
  1034. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +16 -16
  1035. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +91 -43
  1036. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +68 -80
  1037. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +154 -52
  1038. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +13 -55
  1039. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +15 -109
  1040. metadata +75 -66
  1041. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.cc +0 -127
  1042. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.cc +0 -152
  1043. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.cc +0 -93
  1044. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.cc +0 -96
  1045. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.cc +0 -165
  1046. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.cc +0 -124
  1047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.cc.inc +0 -196
  1048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +0 -448
  1049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.cc.inc +0 -87
  1050. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +0 -76
  1051. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +0 -90
  1052. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.cc +0 -44
  1053. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.cc +0 -42
  1054. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +0 -37
  1055. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.cc +0 -46
  1056. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +0 -79
  1057. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_extra.cc +0 -17
  1058. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.cc +0 -22
  1059. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/fors.h +0 -58
  1060. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/internal.h +0 -63
  1061. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/merkle.h +0 -70
  1062. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.cc +0 -173
  1063. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/thash.h +0 -85
  1064. data/third_party/boringssl-with-bazel/src/crypto/slhdsa/wots.h +0 -50
@@ -58,6 +58,13 @@ struct Done<StatusFlag> {
58
58
  }
59
59
  };
60
60
 
61
+ template <>
62
+ struct Done<Success> {
63
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static StatusFlag Make(bool cancelled) {
64
+ return StatusFlag(!cancelled);
65
+ }
66
+ };
67
+
61
68
  template <typename T, typename SfinaeVoid = void>
62
69
  struct NextValueTraits;
63
70
 
@@ -83,11 +90,11 @@ struct NextValueTraits<T, absl::void_t<typename T::value_type>> {
83
90
  };
84
91
 
85
92
  template <typename T>
86
- struct NextValueTraits<ValueOrFailure<absl::optional<T>>> {
93
+ struct NextValueTraits<ValueOrFailure<std::optional<T>>> {
87
94
  using Value = T;
88
95
 
89
96
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static NextValueType Type(
90
- const ValueOrFailure<absl::optional<T>>& t) {
97
+ const ValueOrFailure<std::optional<T>>& t) {
91
98
  if (t.ok()) {
92
99
  if (t.value().has_value()) return NextValueType::kValue;
93
100
  return NextValueType::kEndOfStream;
@@ -96,7 +103,7 @@ struct NextValueTraits<ValueOrFailure<absl::optional<T>>> {
96
103
  }
97
104
 
98
105
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Value&& TakeValue(
99
- ValueOrFailure<absl::optional<T>>& t) {
106
+ ValueOrFailure<std::optional<T>>& t) {
100
107
  return std::move(**t);
101
108
  }
102
109
  };
@@ -111,10 +118,12 @@ class ForEach {
111
118
  using ActionFactory =
112
119
  promise_detail::RepeatedPromiseFactory<ReaderResultValue, Action>;
113
120
  using ActionPromise = typename ActionFactory::Promise;
121
+ using ActionResult =
122
+ typename PollTraits<decltype(std::declval<ActionPromise>()())>::Type;
114
123
 
115
124
  public:
116
- using Result =
117
- typename PollTraits<decltype(std::declval<ActionPromise>()())>::Type;
125
+ using Result = decltype(Done<ActionResult>::Make(false));
126
+
118
127
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION ForEach(Reader reader, Action action,
119
128
  DebugLocation whence = {})
120
129
  : reader_(std::move(reader)),
@@ -19,9 +19,9 @@
19
19
 
20
20
  #include <memory>
21
21
  #include <utility>
22
+ #include <variant>
22
23
 
23
24
  #include "absl/status/statusor.h"
24
- #include "absl/types/variant.h"
25
25
  #include "src/core/lib/promise/detail/promise_factory.h"
26
26
  #include "src/core/lib/promise/detail/promise_like.h"
27
27
  #include "src/core/lib/promise/poll.h"
@@ -31,6 +31,47 @@ namespace grpc_core {
31
31
 
32
32
  namespace promise_detail {
33
33
 
34
+ // If promise combinator.
35
+ //
36
+ // If(C condition, T if_true, F if_false)
37
+ //
38
+ // Takes exactly 3 inputs
39
+ //
40
+ // The first input C can be one of the following
41
+ // 1. A bool variable or constant.
42
+ // 2. A promise that returns Poll<bool>
43
+ // 3. A promise factory that returns a promise that returns Poll<bool>
44
+ // 4. A promise that returns Poll<absl::StatusOr<bool>>
45
+ // 5. A promise factory that returns a promise that returns
46
+ // Poll<absl::StatusOr<bool>>
47
+ //
48
+ // The second and third inputs can be one of the following
49
+ // 1. Promise
50
+ // 2. Promise Factory
51
+ // The second and third promises must have the same return type.
52
+ //
53
+ // The If combinator works in the following way
54
+ // 1. It processes the first input first. If the first input is a promise or a
55
+ // promise factory, the promise is executed. The return value of this execution
56
+ // could either be Poll<bool> or Poll<absl::StatusOr<bool>> . If the first input
57
+ // is a bool, it is taken as it is.
58
+ // 2. If the first promise returns Pending{} , the second and third promises are
59
+ // not executed.
60
+ // 3. If the promise returns any failure status , the second and third promises
61
+ // are not executed.
62
+ // 4. If the return value of the first promise is equivalent to true, the
63
+ // combinator executes the second promise (if_true).
64
+ // 5. If the return value of the first promise is equivalent to false, the
65
+ // combinator executes the third promise (if_false).
66
+ //
67
+ // Both the condition and the if_true/if_false promises will be executed
68
+ // serially on the same thread.
69
+ //
70
+ // If first input is a constant, it's guaranteed that one of the promise
71
+ // factories if_true or if_false will be evaluated before returning from this
72
+ // function. This makes it safe to capture lambda arguments in the promise
73
+ // factory by reference.
74
+
34
75
  template <typename CallPoll, typename T, typename F>
35
76
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline typename CallPoll::PollResult
36
77
  ChooseIf(CallPoll call_poll, bool result, T* if_true, F* if_false) {
@@ -58,12 +99,14 @@ ChooseIf(CallPoll call_poll, absl::StatusOr<bool> result, T* if_true,
58
99
  }
59
100
  }
60
101
 
102
+ } // namespace promise_detail
103
+
61
104
  template <typename C, typename T, typename F>
62
105
  class If {
63
106
  private:
64
107
  using TrueFactory = promise_detail::OncePromiseFactory<void, T>;
65
108
  using FalseFactory = promise_detail::OncePromiseFactory<void, F>;
66
- using ConditionPromise = PromiseLike<C>;
109
+ using ConditionPromise = promise_detail::PromiseLike<C>;
67
110
  using TruePromise = typename TrueFactory::Promise;
68
111
  using FalsePromise = typename FalseFactory::Promise;
69
112
  using Result =
@@ -76,7 +119,7 @@ class If {
76
119
  FalseFactory(std::move(if_false))}) {}
77
120
 
78
121
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll<Result> operator()() {
79
- return absl::visit(CallPoll<false>{this}, state_);
122
+ return std::visit(CallPoll<false>{this}, state_);
80
123
  }
81
124
 
82
125
  private:
@@ -85,7 +128,7 @@ class If {
85
128
  TrueFactory if_true;
86
129
  FalseFactory if_false;
87
130
  };
88
- using State = absl::variant<Evaluating, TruePromise, FalsePromise>;
131
+ using State = std::variant<Evaluating, TruePromise, FalsePromise>;
89
132
  State state_;
90
133
 
91
134
  template <bool kSetState>
@@ -188,23 +231,8 @@ class If<bool, T, F> {
188
231
  #endif
189
232
  };
190
233
 
191
- } // namespace promise_detail
192
-
193
- // If promise combinator.
194
- // Takes 3 promise factories, and evaluates the first.
195
- // If it returns failure, returns failure for the entire combinator.
196
- // If it returns true, evaluates the second promise.
197
- // If it returns false, evaluates the third promise.
198
- // If C is a constant, it's guaranteed that one of the promise factories
199
- // if_true or if_false will be evaluated before returning from this function.
200
- // This makes it safe to capture lambda arguments in the promise factory by
201
- // reference.
202
234
  template <typename C, typename T, typename F>
203
- GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::If<C, T, F> If(
204
- C condition, T if_true, F if_false) {
205
- return promise_detail::If<C, T, F>(std::move(condition), std::move(if_true),
206
- std::move(if_false));
207
- }
235
+ If(C, T, F) -> If<C, T, F>;
208
236
 
209
237
  } // namespace grpc_core
210
238
 
@@ -20,6 +20,7 @@
20
20
 
21
21
  #include <algorithm>
22
22
  #include <new>
23
+ #include <optional>
23
24
  #include <string>
24
25
  #include <utility>
25
26
 
@@ -27,7 +28,6 @@
27
28
  #include "absl/log/log.h"
28
29
  #include "absl/strings/str_cat.h"
29
30
  #include "absl/strings/str_format.h"
30
- #include "absl/types/optional.h"
31
31
  #include "src/core/lib/promise/context.h"
32
32
  #include "src/core/lib/promise/detail/promise_factory.h"
33
33
  #include "src/core/lib/promise/poll.h"
@@ -58,7 +58,7 @@ class InterceptorList {
58
58
  // Poll a promise constructed at memory.
59
59
  // Resolves to an optional<T> -- if nullopt it means terminate the chain and
60
60
  // resolve.
61
- virtual Poll<absl::optional<T>> PollOnce(void* memory) = 0;
61
+ virtual Poll<std::optional<T>> PollOnce(void* memory) = 0;
62
62
  virtual ~Map() = default;
63
63
 
64
64
  // Update the next pointer stored with this map.
@@ -83,7 +83,7 @@ class InterceptorList {
83
83
  // The result of Run: a promise that will execute the entire chain.
84
84
  class RunPromise {
85
85
  public:
86
- RunPromise(size_t memory_required, Map** factory, absl::optional<T> value) {
86
+ RunPromise(size_t memory_required, Map** factory, std::optional<T> value) {
87
87
  if (!value.has_value() || *factory == nullptr) {
88
88
  GRPC_TRACE_VLOG(promise_primitives, 2)
89
89
  << "InterceptorList::RunPromise[" << this << "]: create immediate";
@@ -133,14 +133,14 @@ class InterceptorList {
133
133
 
134
134
  RunPromise& operator=(RunPromise&& other) noexcept = delete;
135
135
 
136
- Poll<absl::optional<T>> operator()() {
136
+ Poll<std::optional<T>> operator()() {
137
137
  GRPC_TRACE_VLOG(promise_primitives, 2)
138
138
  << "InterceptorList::RunPromise[" << this << "]: " << DebugString();
139
139
  if (is_immediately_resolved_) return std::move(result_);
140
140
  while (true) {
141
141
  if (*async_resolution_.first_factory == nullptr) {
142
142
  // Cancelled whilst polling
143
- return absl::nullopt;
143
+ return std::nullopt;
144
144
  }
145
145
  auto r = async_resolution_.current_factory->PollOnce(
146
146
  async_resolution_.space.get());
@@ -194,7 +194,7 @@ class InterceptorList {
194
194
  };
195
195
  union {
196
196
  AsyncResolution async_resolution_;
197
- absl::optional<T> result_;
197
+ std::optional<T> result_;
198
198
  };
199
199
  // If true, the result_ union is valid, otherwise async_resolution_ is.
200
200
  // Indicates whether the promise resolved immediately at construction or if
@@ -207,7 +207,7 @@ class InterceptorList {
207
207
  InterceptorList& operator=(const InterceptorList&) = delete;
208
208
  ~InterceptorList() { DeleteFactories(); }
209
209
 
210
- RunPromise Run(absl::optional<T> initial_value) {
210
+ RunPromise Run(std::optional<T> initial_value) {
211
211
  return RunPromise(promise_memory_required_, &first_map_,
212
212
  std::move(initial_value));
213
213
  }
@@ -263,8 +263,8 @@ class InterceptorList {
263
263
  void Destroy(void* memory) override {
264
264
  static_cast<Promise*>(memory)->~Promise();
265
265
  }
266
- Poll<absl::optional<T>> PollOnce(void* memory) override {
267
- return poll_cast<absl::optional<T>>((*static_cast<Promise*>(memory))());
266
+ Poll<std::optional<T>> PollOnce(void* memory) override {
267
+ return poll_cast<std::optional<T>>((*static_cast<Promise*>(memory))());
268
268
  }
269
269
 
270
270
  private:
@@ -31,11 +31,19 @@
31
31
 
32
32
  namespace grpc_core {
33
33
 
34
- // Latch provides a single set waitable object.
35
- // Initially the Latch is unset.
36
- // It can be waited upon by the Wait method, which produces a Promise that
37
- // resolves when the Latch is Set to a value of type T.
38
- // Latches only work correctly within a single activity.
34
+ // Latches only work correctly within a single activity or a single party. If
35
+ // you need something that works across activities/parties refer to
36
+ // inter_activity_latch.h
37
+ //
38
+ // Latch provides a single set waitable object. We use Latch when we want to
39
+ // wait for a particular object to be set. This object would typically be set by
40
+ // some promise getting resolved.
41
+ //
42
+ // Initially the value Latch is unset.
43
+ //
44
+ // We can wait for Latch to be set using either the Wait or WaitAndCopy method.
45
+ // These two methods produce Promises that resolves when the Latch is value Set
46
+ // to a value of type T.
39
47
  template <typename T>
40
48
  class Latch {
41
49
  public:
@@ -117,7 +125,7 @@ class Latch {
117
125
 
118
126
  // The value stored (if has_value_ is true), otherwise some random value, we
119
127
  // don't care.
120
- // Why not absl::optional<>? Writing things this way lets us compress
128
+ // Why not std::optional<>? Writing things this way lets us compress
121
129
  // has_value_ with waiter_ and leads to some significant memory savings for
122
130
  // some scenarios.
123
131
  GPR_NO_UNIQUE_ADDRESS T value_;
@@ -18,10 +18,10 @@
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
20
  #include <utility>
21
+ #include <variant>
21
22
 
22
23
  #include "absl/status/status.h"
23
24
  #include "absl/status/statusor.h"
24
- #include "absl/types/variant.h"
25
25
  #include "src/core/lib/debug/trace.h"
26
26
  #include "src/core/lib/promise/detail/promise_factory.h"
27
27
  #include "src/core/lib/promise/poll.h"
@@ -29,6 +29,48 @@
29
29
 
30
30
  namespace grpc_core {
31
31
 
32
+ // A Loop combinator
33
+ //
34
+ // Input:
35
+ //
36
+ // 1. A Loop combinator takes as input only one promise factory.
37
+ // 2. This input promise factory should have a return type of either
38
+ // a. LoopCtl<T> which is an alias for std::variant<Continue, T>
39
+ // b. Or Poll<LoopCtl<T>>
40
+ //
41
+ // Running of the Loop combinator:
42
+ //
43
+ // 1. The input promise is guranteed to run at least once when the combinator
44
+ // is invoked.
45
+ // 2. The Loop combinators execution will keep running input promise for
46
+ // as long as the input promise returns the Continue() object.
47
+ // 3. The Loop breaks if
48
+ // a. the input promise returns T.
49
+ // b. the input promise returns Pending{}.
50
+ //
51
+ // The execution of multiple iterations of the input
52
+ // promise happen on the same thread.
53
+ //
54
+ // Return:
55
+ //
56
+ // The Loop combinator when executed will return Poll<T>.
57
+ //
58
+ // Example:
59
+ //
60
+ // {
61
+ // std::string execution_order;
62
+ // int i = 0;
63
+ // Poll<int> retval = Loop([&execution_order, &i]() -> LoopCtl<int> {
64
+ // absl::StrAppend(&execution_order, i);
65
+ // i++;
66
+ // if (i < 5) return Continue();
67
+ // return i;
68
+ // })();
69
+ // EXPECT_TRUE(retval.ready());
70
+ // EXPECT_EQ(retval.value(), 5);
71
+ // EXPECT_STREQ(execution_order.c_str(), "01234");
72
+ // }
73
+
32
74
  // Special type - signals to loop to take another iteration, instead of
33
75
  // finishing
34
76
  struct Continue {};
@@ -36,7 +78,7 @@ struct Continue {};
36
78
  // Result of polling a loop promise - either Continue looping, or return a value
37
79
  // T
38
80
  template <typename T>
39
- using LoopCtl = absl::variant<Continue, T>;
81
+ using LoopCtl = std::variant<Continue, T>;
40
82
 
41
83
  namespace promise_detail {
42
84
 
@@ -59,8 +101,8 @@ struct LoopTraits<absl::StatusOr<LoopCtl<T>>> {
59
101
  absl::StatusOr<LoopCtl<T>> value) {
60
102
  if (!value.ok()) return value.status();
61
103
  auto& inner = *value;
62
- if (absl::holds_alternative<Continue>(inner)) return Continue{};
63
- return absl::get<T>(std::move(inner));
104
+ if (std::holds_alternative<Continue>(inner)) return Continue{};
105
+ return std::get<T>(std::move(inner));
64
106
  }
65
107
  };
66
108
 
@@ -71,20 +113,24 @@ struct LoopTraits<absl::StatusOr<LoopCtl<absl::Status>>> {
71
113
  absl::StatusOr<LoopCtl<absl::Status>> value) {
72
114
  if (!value.ok()) return value.status();
73
115
  const auto& inner = *value;
74
- if (absl::holds_alternative<Continue>(inner)) return Continue{};
75
- return absl::get<absl::Status>(inner);
116
+ if (std::holds_alternative<Continue>(inner)) return Continue{};
117
+ return std::get<absl::Status>(inner);
76
118
  }
77
119
  };
78
120
 
121
+ } // namespace promise_detail
122
+
79
123
  template <typename F>
80
124
  class Loop {
81
125
  private:
126
+ static_assert(promise_detail::kIsRepeatedPromiseFactory<void, F>);
127
+
82
128
  using Factory = promise_detail::RepeatedPromiseFactory<void, F>;
83
129
  using PromiseType = decltype(std::declval<Factory>().Make());
84
130
  using PromiseResult = typename PromiseType::Result;
85
131
 
86
132
  public:
87
- using Result = typename LoopTraits<PromiseResult>::Result;
133
+ using Result = typename promise_detail::LoopTraits<PromiseResult>::Result;
88
134
 
89
135
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit Loop(F f)
90
136
  : factory_(std::move(f)) {}
@@ -114,8 +160,9 @@ class Loop {
114
160
  if (auto* p = promise_result.value_if_ready()) {
115
161
  // - then if it's Continue, destroy the promise and recreate a new one
116
162
  // from our factory.
117
- auto lc = LoopTraits<PromiseResult>::ToLoopCtl(std::move(*p));
118
- if (absl::holds_alternative<Continue>(lc)) {
163
+ auto lc =
164
+ promise_detail::LoopTraits<PromiseResult>::ToLoopCtl(std::move(*p));
165
+ if (std::holds_alternative<Continue>(lc)) {
119
166
  GRPC_TRACE_LOG(promise_primitives, INFO)
120
167
  << "loop[" << this << "] iteration complete, continue";
121
168
  Destruct(&promise_);
@@ -125,7 +172,7 @@ class Loop {
125
172
  GRPC_TRACE_LOG(promise_primitives, INFO)
126
173
  << "loop[" << this << "] iteration complete, return";
127
174
  // - otherwise there's our result... return it out.
128
- return absl::get<Result>(std::move(lc));
175
+ return std::get<Result>(std::move(lc));
129
176
  } else {
130
177
  // Otherwise the inner promise was pending, so we are pending.
131
178
  GRPC_TRACE_LOG(promise_primitives, INFO)
@@ -143,15 +190,8 @@ class Loop {
143
190
  bool started_ = false;
144
191
  };
145
192
 
146
- } // namespace promise_detail
147
-
148
- // Looping combinator.
149
- // Expects F returns LoopCtl<T> - if it's Continue, then run the loop again -
150
- // otherwise yield the returned value as the result of the loop.
151
193
  template <typename F>
152
- GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Loop<F> Loop(F f) {
153
- return promise_detail::Loop<F>(std::move(f));
154
- }
194
+ Loop(F) -> Loop<F>;
155
195
 
156
196
  } // namespace grpc_core
157
197
 
@@ -19,6 +19,7 @@
19
19
  #include <stddef.h>
20
20
 
21
21
  #include <tuple>
22
+ #include <type_traits>
22
23
  #include <utility>
23
24
 
24
25
  #include "absl/status/status.h"
@@ -31,23 +32,82 @@ namespace grpc_core {
31
32
 
32
33
  namespace promise_detail {
33
34
 
34
- // Implementation of mapping combinator - use this via the free function below!
35
- // Promise is the type of promise to poll on, Fn is a function that takes the
36
- // result of Promise and maps it to some new type.
37
- template <typename Promise, typename Fn, typename SfinaeVoid = void>
38
- class Map;
35
+ template <typename Fn, typename Arg, typename SfinaeVoid = void>
36
+ class WrappedFn;
39
37
 
38
+ template <typename Fn, typename Arg>
39
+ class WrappedFn<
40
+ Fn, Arg, std::enable_if_t<!std::is_void_v<std::invoke_result_t<Fn, Arg>>>> {
41
+ public:
42
+ using Result = RemoveCVRef<std::invoke_result_t<Fn, Arg>>;
43
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit WrappedFn(Fn&& fn)
44
+ : fn_(std::move(fn)) {}
45
+ WrappedFn(const WrappedFn&) = delete;
46
+ WrappedFn& operator=(const WrappedFn&) = delete;
47
+ WrappedFn(WrappedFn&&) = default;
48
+ WrappedFn& operator=(WrappedFn&&) = default;
49
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()(Arg&& arg) {
50
+ return fn_(std::forward<Arg>(arg));
51
+ }
52
+
53
+ private:
54
+ GPR_NO_UNIQUE_ADDRESS Fn fn_;
55
+ };
56
+
57
+ template <typename Fn, typename Arg>
58
+ class WrappedFn<
59
+ Fn, Arg, std::enable_if_t<std::is_void_v<std::invoke_result_t<Fn, Arg>>>> {
60
+ public:
61
+ using Result = Empty;
62
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION explicit WrappedFn(Fn&& fn)
63
+ : fn_(std::move(fn)) {}
64
+ WrappedFn(const WrappedFn&) = delete;
65
+ WrappedFn& operator=(const WrappedFn&) = delete;
66
+ WrappedFn(WrappedFn&&) = default;
67
+ WrappedFn& operator=(WrappedFn&&) = default;
68
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Empty operator()(Arg&& arg) {
69
+ fn_(std::forward<Arg>(arg));
70
+ return Empty{};
71
+ }
72
+
73
+ private:
74
+ GPR_NO_UNIQUE_ADDRESS Fn fn_;
75
+ };
76
+
77
+ template <typename PromiseResult, typename Fn0, typename Fn1>
78
+ class FusedFns {
79
+ using InnerResult =
80
+ decltype(std::declval<Fn0>()(std::declval<PromiseResult>()));
81
+
82
+ public:
83
+ using Result = typename WrappedFn<Fn1, InnerResult>::Result;
84
+
85
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION FusedFns(Fn0 fn0, Fn1 fn1)
86
+ : fn0_(std::move(fn0)), fn1_(std::move(fn1)) {}
87
+ FusedFns(const FusedFns&) = delete;
88
+ FusedFns& operator=(const FusedFns&) = delete;
89
+ FusedFns(FusedFns&&) = default;
90
+ FusedFns& operator=(FusedFns&&) = default;
91
+
92
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Result operator()(PromiseResult arg) {
93
+ InnerResult inner_result = fn0_(std::move(arg));
94
+ return fn1_(std::move(inner_result));
95
+ }
96
+
97
+ private:
98
+ GPR_NO_UNIQUE_ADDRESS Fn0 fn0_;
99
+ GPR_NO_UNIQUE_ADDRESS WrappedFn<Fn1, InnerResult> fn1_;
100
+ };
101
+
102
+ } // namespace promise_detail
103
+
104
+ // Mapping combinator.
105
+ // Takes a promise, and a synchronous function to mutate its result, and
106
+ // returns a promise.
40
107
  template <typename Promise, typename Fn>
41
- class Map<Promise, Fn,
42
- absl::enable_if_t<!std::is_void<
43
- #if (defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703L) || \
44
- (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
45
- std::invoke_result_t<Fn, typename PromiseLike<Promise>::Result>
46
- #else
47
- typename std::result_of<Fn(
48
- typename PromiseLike<Promise>::Result)>::type
49
- #endif
50
- >::value>> {
108
+ class Map {
109
+ using PromiseType = promise_detail::PromiseLike<Promise>;
110
+
51
111
  public:
52
112
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Promise promise, Fn fn)
53
113
  : promise_(std::move(promise)), fn_(std::move(fn)) {}
@@ -59,9 +119,8 @@ class Map<Promise, Fn,
59
119
  // NOLINTNEXTLINE(performance-noexcept-move-constructor): clang6 bug
60
120
  Map& operator=(Map&& other) = default;
61
121
 
62
- using PromiseResult = typename PromiseLike<Promise>::Result;
63
- using Result =
64
- RemoveCVRef<decltype(std::declval<Fn>()(std::declval<PromiseResult>()))>;
122
+ using PromiseResult = typename PromiseType::Result;
123
+ using Result = typename promise_detail::WrappedFn<Fn, PromiseResult>::Result;
65
124
 
66
125
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll<Result> operator()() {
67
126
  Poll<PromiseResult> r = promise_();
@@ -72,24 +131,25 @@ class Map<Promise, Fn,
72
131
  }
73
132
 
74
133
  private:
75
- PromiseLike<Promise> promise_;
76
- Fn fn_;
134
+ template <typename SomeOtherPromise, typename SomeOtherFn>
135
+ friend class Map;
136
+
137
+ GPR_NO_UNIQUE_ADDRESS PromiseType promise_;
138
+ GPR_NO_UNIQUE_ADDRESS promise_detail::WrappedFn<Fn, PromiseResult> fn_;
77
139
  };
78
140
 
79
- template <typename Promise, typename Fn>
80
- class Map<Promise, Fn,
81
- absl::enable_if_t<std::is_void<
82
- #if (defined(__cpp_lib_is_invocable) && __cpp_lib_is_invocable >= 201703L) || \
83
- (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
84
- std::invoke_result_t<Fn, typename PromiseLike<Promise>::Result>
85
- #else
86
- typename std::result_of<Fn(
87
- typename PromiseLike<Promise>::Result)>::type
88
- #endif
89
- >::value>> {
141
+ template <typename Promise, typename Fn0, typename Fn1>
142
+ class Map<Map<Promise, Fn0>, Fn1> {
143
+ using InnerMapFn = decltype(std::declval<Map<Promise, Fn0>>().fn_);
144
+ using FusedFn =
145
+ promise_detail::FusedFns<typename Map<Promise, Fn0>::PromiseResult,
146
+ InnerMapFn, Fn1>;
147
+ using PromiseType = typename Map<Promise, Fn0>::PromiseType;
148
+
90
149
  public:
91
- GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Promise promise, Fn fn)
92
- : promise_(std::move(promise)), fn_(std::move(fn)) {}
150
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Map(Map<Promise, Fn0> map, Fn1 fn1)
151
+ : promise_(std::move(map.promise_)),
152
+ fn_(FusedFn(std::move(map.fn_), std::move(fn1))) {}
93
153
 
94
154
  Map(const Map&) = delete;
95
155
  Map& operator=(const Map&) = delete;
@@ -98,33 +158,27 @@ class Map<Promise, Fn,
98
158
  // NOLINTNEXTLINE(performance-noexcept-move-constructor): clang6 bug
99
159
  Map& operator=(Map&& other) = default;
100
160
 
101
- using PromiseResult = typename PromiseLike<Promise>::Result;
102
- using Result = Empty;
161
+ using PromiseResult = typename Map<Promise, Fn0>::PromiseResult;
162
+ using Result = typename FusedFn::Result;
103
163
 
104
164
  GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION Poll<Result> operator()() {
105
165
  Poll<PromiseResult> r = promise_();
106
166
  if (auto* p = r.value_if_ready()) {
107
- fn_(std::move(*p));
108
- return Empty{};
167
+ return fn_(std::move(*p));
109
168
  }
110
169
  return Pending();
111
170
  }
112
171
 
113
172
  private:
114
- PromiseLike<Promise> promise_;
115
- Fn fn_;
116
- };
173
+ template <typename SomeOtherPromise, typename SomeOtherFn>
174
+ friend class Map;
117
175
 
118
- } // namespace promise_detail
176
+ GPR_NO_UNIQUE_ADDRESS PromiseType promise_;
177
+ GPR_NO_UNIQUE_ADDRESS FusedFn fn_;
178
+ };
119
179
 
120
- // Mapping combinator.
121
- // Takes a promise, and a synchronous function to mutate its result, and
122
- // returns a promise.
123
180
  template <typename Promise, typename Fn>
124
- GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline promise_detail::Map<Promise, Fn>
125
- Map(Promise promise, Fn fn) {
126
- return promise_detail::Map<Promise, Fn>(std::move(promise), std::move(fn));
127
- }
181
+ Map(Promise, Fn) -> Map<Promise, Fn>;
128
182
 
129
183
  // Maps a promise to a new promise that returns a tuple of the original result
130
184
  // and a bool indicating whether there was ever a Pending{} value observed from
@@ -139,7 +193,7 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto CheckDelayed(Promise promise) {
139
193
  delayed = true;
140
194
  return Pending{};
141
195
  }
142
- return std::make_tuple(std::move(r.value()), delayed);
196
+ return std::tuple(std::move(r.value()), delayed);
143
197
  };
144
198
  }
145
199