grpc 1.54.3 → 1.59.2

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 (1765) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +665 -324
  3. data/include/grpc/event_engine/event_engine.h +32 -46
  4. data/include/grpc/event_engine/memory_allocator.h +2 -2
  5. data/include/grpc/grpc_audit_logging.h +96 -0
  6. data/include/grpc/grpc_security.h +19 -0
  7. data/include/grpc/impl/channel_arg_names.h +375 -0
  8. data/include/grpc/impl/grpc_types.h +1 -348
  9. data/include/grpc/module.modulemap +3 -0
  10. data/include/grpc/support/json.h +218 -0
  11. data/include/grpc/support/port_platform.h +103 -24
  12. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -2
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +24 -10
  14. data/src/core/ext/filters/client_channel/backend_metric.cc +4 -1
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  16. data/src/core/ext/filters/client_channel/client_channel.cc +564 -178
  17. data/src/core/ext/filters/client_channel/client_channel.h +75 -23
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +20 -19
  19. data/src/core/ext/filters/client_channel/client_channel_internal.h +22 -59
  20. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +15 -1
  21. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +2 -2
  22. data/src/core/ext/filters/client_channel/config_selector.h +9 -36
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +5 -3
  24. data/src/core/ext/filters/client_channel/{http_proxy.cc → http_proxy_mapper.cc} +41 -3
  25. data/src/core/ext/filters/client_channel/{http_proxy.h → http_proxy_mapper.h} +3 -3
  26. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +27 -53
  27. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +23 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
  30. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +188 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +214 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +103 -142
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +5 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +4 -2
  36. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +515 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +52 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +204 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +6 -9
  40. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +93 -106
  42. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  43. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +532 -191
  44. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +36 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -45
  46. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +447 -464
  47. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  48. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +73 -129
  49. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +416 -30
  50. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +26 -23
  51. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  52. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +904 -101
  53. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +19 -54
  54. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +73 -126
  55. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
  56. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -86
  57. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -69
  58. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +117 -173
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +81 -68
  60. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +28 -96
  61. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +21 -123
  62. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.h +30 -0
  63. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +102 -11
  64. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +105 -175
  65. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +58 -44
  66. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +4 -1
  67. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.cc +66 -0
  68. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_plugin.h +27 -0
  69. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +586 -0
  70. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.h +35 -0
  71. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +97 -0
  72. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.h +32 -0
  73. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -14
  74. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.h +24 -0
  75. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +24 -6
  76. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +36 -2
  77. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +30 -28
  78. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +10 -4
  79. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
  80. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
  81. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +467 -312
  82. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +32 -1
  83. data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2530
  84. data/src/core/ext/filters/client_channel/retry_filter.h +92 -1
  85. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
  86. data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
  87. data/src/core/ext/filters/client_channel/retry_service_config.cc +10 -9
  88. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +40 -90
  89. data/src/core/ext/filters/client_channel/subchannel.cc +50 -199
  90. data/src/core/ext/filters/client_channel/subchannel.h +23 -48
  91. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
  92. data/src/core/ext/filters/deadline/deadline_filter.cc +1 -1
  93. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +1 -1
  94. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  95. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  96. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -7
  97. data/src/core/ext/filters/http/server/http_server_filter.cc +22 -18
  98. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -0
  99. data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
  100. data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
  101. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +162 -72
  102. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  103. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +164 -88
  104. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -7
  105. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -0
  106. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -17
  107. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +979 -832
  108. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +21 -0
  109. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +70 -0
  110. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
  111. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
  112. data/src/core/ext/transport/chttp2/transport/flow_control.cc +74 -117
  113. data/src/core/ext/transport/chttp2/transport/flow_control.h +27 -4
  114. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  115. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -1
  116. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +24 -25
  117. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -4
  118. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -1
  119. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  120. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +1 -1
  121. data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -1
  122. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +1 -1
  123. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
  124. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -0
  125. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +176 -0
  126. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +326 -0
  127. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +640 -547
  128. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +160 -12
  129. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +48 -33
  130. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +19 -5
  131. data/src/core/ext/transport/chttp2/transport/internal.h +194 -149
  132. data/src/core/ext/transport/chttp2/transport/{frame.h → legacy_frame.h} +3 -3
  133. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +44 -0
  134. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +67 -0
  135. data/src/core/ext/transport/chttp2/transport/parsing.cc +143 -31
  136. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +90 -0
  137. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +59 -0
  138. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +108 -0
  139. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +115 -0
  140. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +120 -0
  141. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +88 -0
  142. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +1 -1
  143. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +60 -0
  144. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +66 -0
  145. data/src/core/ext/transport/chttp2/transport/writing.cc +220 -145
  146. data/src/core/ext/transport/inproc/inproc_transport.cc +10 -0
  147. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +85 -52
  148. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +407 -182
  149. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +119 -60
  150. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +474 -225
  151. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +88 -55
  152. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +408 -189
  153. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +355 -210
  154. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1564 -729
  155. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +28 -17
  156. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +140 -51
  157. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +32 -21
  158. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +153 -63
  159. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +25 -14
  160. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +71 -39
  161. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +18 -11
  162. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +41 -27
  163. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +18 -11
  164. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +41 -27
  165. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +107 -62
  166. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +559 -245
  167. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +19 -12
  168. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +38 -31
  169. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +20 -19
  170. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +75 -30
  171. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +21 -16
  172. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +38 -31
  173. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +253 -147
  174. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +869 -405
  175. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +415 -264
  176. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1831 -899
  177. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +72 -41
  178. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +279 -149
  179. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +529 -334
  180. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2009 -1131
  181. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +19 -12
  182. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +38 -31
  183. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +87 -52
  184. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +340 -233
  185. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +262 -165
  186. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +881 -477
  187. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +137 -80
  188. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +520 -275
  189. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +20 -13
  190. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +43 -37
  191. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +378 -221
  192. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1160 -611
  193. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +155 -92
  194. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +620 -293
  195. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +16 -11
  196. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +30 -27
  197. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +19 -12
  198. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +38 -31
  199. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +28 -17
  200. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +140 -51
  201. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +277 -167
  202. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +811 -441
  203. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +230 -137
  204. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +1157 -501
  205. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +20 -13
  206. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +53 -38
  207. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +367 -211
  208. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1107 -647
  209. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +31 -18
  210. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +109 -51
  211. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +32 -19
  212. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +110 -56
  213. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +36 -21
  214. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +141 -65
  215. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +29 -18
  216. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +136 -66
  217. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +20 -13
  218. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +44 -38
  219. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +76 -43
  220. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +258 -128
  221. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +143 -88
  222. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +431 -242
  223. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +113 -62
  224. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +552 -228
  225. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +16 -11
  226. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +28 -27
  227. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +173 -118
  228. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +850 -443
  229. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +170 -95
  230. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +857 -375
  231. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +46 -27
  232. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +152 -111
  233. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +37 -18
  234. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +66 -56
  235. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +27 -15
  236. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +85 -46
  237. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +129 -74
  238. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +481 -249
  239. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +161 -84
  240. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +673 -241
  241. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +246 -139
  242. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +926 -434
  243. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +78 -49
  244. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +609 -202
  245. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +1281 -776
  246. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +5414 -2519
  247. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +47 -28
  248. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +157 -85
  249. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +226 -141
  250. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +731 -400
  251. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +18 -11
  252. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +41 -27
  253. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +19 -12
  254. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +38 -31
  255. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +30 -19
  256. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +62 -49
  257. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +25 -14
  258. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +103 -44
  259. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +44 -25
  260. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +252 -101
  261. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +19 -12
  262. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +38 -31
  263. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +16 -11
  264. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +28 -27
  265. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +40 -23
  266. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +101 -71
  267. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +5 -4
  268. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +14 -17
  269. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +41 -24
  270. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +103 -76
  271. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +28 -17
  272. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +88 -51
  273. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +556 -0
  274. data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2702 -0
  275. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +14 -9
  276. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -24
  277. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +58 -37
  278. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +143 -109
  279. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +91 -43
  280. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +379 -168
  281. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +42 -25
  282. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +107 -81
  283. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +66 -22
  284. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +348 -83
  285. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +30 -19
  286. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +65 -51
  287. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +502 -300
  288. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2235 -1075
  289. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +16 -11
  290. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +28 -27
  291. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +33 -21
  292. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +105 -79
  293. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +70 -45
  294. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +186 -139
  295. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +45 -0
  296. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +85 -0
  297. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +32 -21
  298. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +112 -79
  299. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +16 -11
  300. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +28 -27
  301. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +5 -4
  302. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +8 -11
  303. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +182 -96
  304. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +900 -361
  305. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +54 -33
  306. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +143 -102
  307. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +186 -111
  308. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +809 -420
  309. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +30 -19
  310. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +101 -53
  311. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +8 -7
  312. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +11 -15
  313. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +298 -177
  314. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1277 -523
  315. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +40 -23
  316. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +181 -76
  317. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +128 -83
  318. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +503 -239
  319. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +20 -13
  320. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +48 -35
  321. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +37 -26
  322. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +117 -69
  323. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +19 -12
  324. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +40 -31
  325. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +50 -29
  326. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +85 -63
  327. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +35 -20
  328. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +126 -64
  329. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +20 -13
  330. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +84 -41
  331. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +19 -12
  332. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +43 -33
  333. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +16 -11
  334. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +30 -27
  335. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +44 -27
  336. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +94 -71
  337. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +11 -10
  338. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +17 -22
  339. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +38 -23
  340. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +154 -76
  341. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +29 -18
  342. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +106 -56
  343. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +44 -29
  344. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +132 -92
  345. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +63 -42
  346. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +192 -121
  347. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +78 -45
  348. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +201 -132
  349. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +32 -21
  350. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +66 -53
  351. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +5 -4
  352. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +5 -8
  353. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +14 -9
  354. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +21 -19
  355. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +26 -15
  356. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +47 -34
  357. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +41 -22
  358. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +83 -53
  359. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +33 -20
  360. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +84 -57
  361. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +5 -4
  362. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +5 -8
  363. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +18 -11
  364. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +41 -27
  365. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +21 -14
  366. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +54 -42
  367. data/src/core/ext/upb-generated/google/api/annotations.upb.c +12 -11
  368. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -20
  369. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +253 -154
  370. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +927 -451
  371. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +297 -180
  372. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +939 -484
  373. data/src/core/ext/upb-generated/google/api/http.upb.c +66 -35
  374. data/src/core/ext/upb-generated/google/api/http.upb.h +277 -121
  375. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +20 -13
  376. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +88 -38
  377. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +17 -10
  378. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +31 -23
  379. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +1168 -419
  380. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +4431 -1412
  381. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +17 -10
  382. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +31 -23
  383. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +8 -7
  384. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +11 -15
  385. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +60 -39
  386. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +200 -103
  387. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +17 -10
  388. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +31 -23
  389. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +88 -51
  390. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +149 -107
  391. data/src/core/ext/upb-generated/google/rpc/status.upb.c +20 -13
  392. data/src/core/ext/upb-generated/google/rpc/status.upb.h +88 -38
  393. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +57 -34
  394. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +147 -93
  395. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +41 -24
  396. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +110 -60
  397. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +248 -145
  398. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +912 -416
  399. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +32 -19
  400. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +68 -51
  401. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -14
  402. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +37 -30
  403. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +142 -81
  404. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +397 -217
  405. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +49 -26
  406. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +146 -62
  407. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +171 -102
  408. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +848 -299
  409. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +66 -49
  410. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +148 -105
  411. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +24 -17
  412. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +48 -35
  413. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +10 -9
  414. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +23 -14
  415. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +24 -17
  416. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +48 -35
  417. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +21 -16
  418. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +38 -31
  419. data/src/core/ext/upb-generated/validate/validate.upb.c +843 -455
  420. data/src/core/ext/upb-generated/validate/validate.upb.h +4340 -1909
  421. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +66 -49
  422. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +148 -105
  423. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +24 -17
  424. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +48 -35
  425. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +10 -9
  426. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +23 -14
  427. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +63 -44
  428. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +130 -92
  429. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +21 -16
  430. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +38 -31
  431. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +14 -9
  432. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +21 -19
  433. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +19 -12
  434. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +38 -31
  435. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +35 -22
  436. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +88 -63
  437. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +24 -17
  438. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +44 -29
  439. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +19 -12
  440. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +38 -31
  441. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +21 -14
  442. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +55 -43
  443. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +42 -25
  444. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +162 -80
  445. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +25 -14
  446. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +58 -39
  447. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +76 -38
  448. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +175 -77
  449. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +19 -12
  450. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +82 -35
  451. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +16 -11
  452. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +28 -27
  453. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +30 -19
  454. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +143 -55
  455. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +8 -7
  456. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +11 -15
  457. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +32 -21
  458. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +154 -64
  459. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +160 -101
  460. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +494 -294
  461. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +83 -52
  462. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +423 -165
  463. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +22 -15
  464. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +45 -37
  465. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +38 -23
  466. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +154 -76
  467. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +35 -22
  468. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +84 -66
  469. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +41 -22
  470. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +83 -53
  471. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +19 -12
  472. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +38 -31
  473. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +1 -1
  474. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +6 -5
  475. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +1 -1
  476. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +6 -5
  477. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +1 -1
  478. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +6 -5
  479. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +1 -1
  480. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +6 -5
  481. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +1 -1
  482. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +6 -5
  483. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +1 -1
  484. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +6 -5
  485. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +1 -1
  486. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +6 -5
  487. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +1 -1
  488. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +6 -5
  489. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +1 -1
  490. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +6 -5
  491. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +1 -1
  492. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +6 -5
  493. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +1 -1
  494. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +6 -5
  495. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +1 -1
  496. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +6 -5
  497. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +1 -1
  498. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +6 -5
  499. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +89 -77
  500. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +11 -5
  501. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +252 -253
  502. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +6 -5
  503. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +1 -1
  504. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +6 -5
  505. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +1 -1
  506. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +6 -5
  507. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +1 -1
  508. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +6 -5
  509. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +1 -1
  510. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +6 -5
  511. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +1 -1
  512. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +6 -5
  513. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +1 -1
  514. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +6 -5
  515. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +1 -1
  516. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +6 -5
  517. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +1 -1
  518. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +6 -5
  519. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +1 -1
  520. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +6 -5
  521. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +1 -1
  522. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +6 -5
  523. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +1 -1
  524. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +6 -5
  525. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +1 -1
  526. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +6 -5
  527. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +163 -161
  528. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +6 -5
  529. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +130 -119
  530. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +6 -5
  531. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +1 -1
  532. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +6 -5
  533. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +142 -136
  534. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +6 -5
  535. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +1 -1
  536. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +6 -5
  537. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +1 -1
  538. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +6 -5
  539. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +1 -1
  540. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +6 -5
  541. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +1 -1
  542. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +6 -5
  543. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +1 -1
  544. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +6 -5
  545. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +1 -1
  546. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +6 -5
  547. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +1 -1
  548. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +6 -5
  549. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +1 -1
  550. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +6 -5
  551. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +1 -1
  552. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +6 -5
  553. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +1 -1
  554. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +6 -5
  555. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +1 -1
  556. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +6 -5
  557. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +1 -1
  558. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +6 -5
  559. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +1 -1
  560. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +6 -5
  561. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +20 -13
  562. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +6 -5
  563. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +1 -1
  564. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +6 -5
  565. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +39 -31
  566. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +11 -5
  567. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +134 -128
  568. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +11 -5
  569. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +1 -1
  570. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +6 -5
  571. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +1 -1
  572. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +6 -5
  573. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +1 -1
  574. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +6 -5
  575. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +1 -1
  576. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +6 -5
  577. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +1 -1
  578. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +6 -5
  579. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +1 -1
  580. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +6 -5
  581. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +1 -1
  582. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +6 -5
  583. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +1 -1
  584. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +6 -5
  585. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +1 -1
  586. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +6 -5
  587. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +1 -1
  588. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +6 -5
  589. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +1 -1
  590. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +6 -5
  591. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +1 -1
  592. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +6 -5
  593. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +1 -1
  594. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +6 -5
  595. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +1 -1
  596. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +6 -5
  597. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +1 -1
  598. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +6 -5
  599. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
  600. data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
  601. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +1 -1
  602. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +6 -5
  603. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +1 -1
  604. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +6 -5
  605. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +81 -75
  606. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +6 -5
  607. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +1 -1
  608. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +6 -5
  609. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +64 -48
  610. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +11 -5
  611. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +1 -1
  612. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +6 -5
  613. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +495 -470
  614. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +11 -5
  615. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +1 -1
  616. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +6 -5
  617. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +1 -1
  618. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +6 -5
  619. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +138 -136
  620. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +6 -5
  621. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +1 -1
  622. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +6 -5
  623. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  624. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +6 -5
  625. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +1 -1
  626. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +6 -5
  627. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +1 -1
  628. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +6 -5
  629. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +1 -1
  630. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +6 -5
  631. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +1 -1
  632. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +6 -5
  633. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +12 -13
  634. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +6 -5
  635. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +1 -1
  636. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +6 -5
  637. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +1 -1
  638. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +6 -5
  639. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +1 -1
  640. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +6 -5
  641. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  642. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  643. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +1 -1
  644. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +6 -5
  645. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +1 -1
  646. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +6 -5
  647. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +1 -1
  648. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +6 -5
  649. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +1 -1
  650. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +6 -5
  651. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +30 -30
  652. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +6 -5
  653. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +1 -1
  654. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +6 -5
  655. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +1 -1
  656. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +6 -5
  657. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +1 -1
  658. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +6 -5
  659. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +1 -1
  660. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +6 -5
  661. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +1 -1
  662. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +6 -5
  663. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +1 -1
  664. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +6 -5
  665. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +1 -1
  666. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +6 -5
  667. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +1 -1
  668. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +6 -5
  669. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +1 -1
  670. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +6 -5
  671. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +1 -1
  672. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +6 -5
  673. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +1 -1
  674. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +6 -5
  675. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +1 -1
  676. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +6 -5
  677. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +1 -1
  678. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +6 -5
  679. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +1 -1
  680. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +6 -5
  681. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +1 -1
  682. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +6 -5
  683. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +1 -1
  684. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +6 -5
  685. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +1 -1
  686. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +6 -5
  687. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +1 -1
  688. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +6 -5
  689. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +1 -1
  690. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +6 -5
  691. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +1 -1
  692. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +6 -5
  693. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +1 -1
  694. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +6 -5
  695. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +406 -273
  696. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +21 -5
  697. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +1 -1
  698. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +6 -5
  699. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +1 -1
  700. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +6 -5
  701. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +1 -1
  702. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +6 -5
  703. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +1 -1
  704. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +6 -5
  705. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +1 -1
  706. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +6 -5
  707. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +1 -1
  708. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +6 -5
  709. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +1 -1
  710. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +6 -5
  711. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +1 -1
  712. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +6 -5
  713. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +1 -1
  714. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +6 -5
  715. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +1 -1
  716. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +6 -5
  717. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +1 -1
  718. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +6 -5
  719. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +1 -1
  720. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +6 -5
  721. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +1 -1
  722. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +6 -5
  723. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +1 -1
  724. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +6 -5
  725. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +1 -1
  726. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +6 -5
  727. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +1 -1
  728. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +6 -5
  729. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +1 -1
  730. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +6 -5
  731. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +1 -1
  732. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +6 -5
  733. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +1 -1
  734. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +6 -5
  735. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +1 -1
  736. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +6 -5
  737. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +1 -1
  738. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +6 -5
  739. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +1 -1
  740. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +6 -5
  741. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +1 -1
  742. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +6 -5
  743. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +1 -1
  744. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +6 -5
  745. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +1 -1
  746. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +6 -5
  747. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +1 -1
  748. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +6 -5
  749. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +1 -1
  750. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +6 -5
  751. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +1 -1
  752. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +6 -5
  753. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +1 -1
  754. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +6 -5
  755. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +1 -1
  756. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +6 -5
  757. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +1 -1
  758. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +6 -5
  759. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +1 -1
  760. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +6 -5
  761. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +1 -1
  762. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +6 -5
  763. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +1 -1
  764. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +6 -5
  765. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +1 -1
  766. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +6 -5
  767. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +1 -1
  768. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +6 -5
  769. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +1 -1
  770. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +6 -5
  771. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +1 -1
  772. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +6 -5
  773. data/src/core/ext/xds/certificate_provider_store.cc +8 -13
  774. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  775. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  776. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  777. data/src/core/ext/xds/upb_utils.h +1 -1
  778. data/src/core/ext/xds/xds_api.cc +41 -18
  779. data/src/core/ext/xds/xds_api.h +5 -4
  780. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  781. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  782. data/src/core/ext/xds/xds_bootstrap.cc +3 -3
  783. data/src/core/ext/xds/xds_bootstrap_grpc.cc +65 -50
  784. data/src/core/ext/xds/xds_bootstrap_grpc.h +10 -13
  785. data/src/core/ext/xds/xds_client.cc +35 -16
  786. data/src/core/ext/xds/xds_client.h +3 -3
  787. data/src/core/ext/xds/xds_client_grpc.cc +12 -6
  788. data/src/core/ext/xds/xds_client_grpc.h +16 -2
  789. data/src/core/ext/xds/xds_client_stats.h +11 -1
  790. data/src/core/ext/xds/xds_cluster.cc +100 -109
  791. data/src/core/ext/xds/xds_cluster.h +1 -6
  792. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +15 -11
  793. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +2 -2
  794. data/src/core/ext/xds/xds_common_types.cc +8 -5
  795. data/src/core/ext/xds/xds_endpoint.cc +21 -28
  796. data/src/core/ext/xds/xds_endpoint.h +1 -2
  797. data/src/core/ext/xds/xds_health_status.cc +0 -17
  798. data/src/core/ext/xds/xds_health_status.h +5 -25
  799. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -14
  800. data/src/core/ext/xds/xds_http_fault_filter.h +1 -1
  801. data/src/core/ext/xds/xds_http_filters.cc +1 -4
  802. data/src/core/ext/xds/xds_http_filters.h +3 -2
  803. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -72
  804. data/src/core/ext/xds/xds_http_rbac_filter.h +1 -1
  805. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +16 -16
  806. data/src/core/ext/xds/xds_http_stateful_session_filter.h +1 -1
  807. data/src/core/ext/xds/xds_lb_policy_registry.cc +60 -36
  808. data/src/core/ext/xds/xds_listener.cc +25 -18
  809. data/src/core/ext/xds/xds_listener.h +14 -4
  810. data/src/core/ext/xds/xds_resource_type.h +3 -9
  811. data/src/core/ext/xds/xds_resource_type_impl.h +9 -11
  812. data/src/core/ext/xds/xds_route_config.cc +62 -19
  813. data/src/core/ext/xds/xds_route_config.h +2 -2
  814. data/src/core/ext/xds/xds_server_config_fetcher.cc +53 -28
  815. data/src/core/ext/xds/xds_transport_grpc.cc +13 -2
  816. data/src/core/lib/address_utils/parse_address.cc +63 -1
  817. data/src/core/lib/address_utils/parse_address.h +8 -0
  818. data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
  819. data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
  820. data/src/core/lib/avl/avl.h +15 -173
  821. data/src/core/lib/backoff/random_early_detection.cc +4 -2
  822. data/src/core/lib/backoff/random_early_detection.h +7 -4
  823. data/src/core/lib/channel/call_tracer.cc +296 -1
  824. data/src/core/lib/channel/call_tracer.h +39 -1
  825. data/src/core/lib/channel/channel_args.cc +120 -46
  826. data/src/core/lib/channel/channel_args.h +52 -4
  827. data/src/core/lib/channel/channel_trace.cc +16 -12
  828. data/src/core/lib/channel/channelz.cc +163 -135
  829. data/src/core/lib/channel/channelz.h +42 -35
  830. data/src/core/lib/channel/channelz_registry.cc +24 -20
  831. data/src/core/lib/channel/channelz_registry.h +4 -2
  832. data/src/core/lib/channel/connected_channel.cc +103 -35
  833. data/src/core/lib/channel/promise_based_filter.cc +15 -17
  834. data/src/core/lib/channel/promise_based_filter.h +5 -1
  835. data/src/core/lib/compression/compression_internal.cc +8 -7
  836. data/src/core/lib/config/config_vars.cc +20 -18
  837. data/src/core/lib/config/config_vars.h +5 -5
  838. data/src/core/lib/config/core_configuration.cc +2 -1
  839. data/src/core/lib/config/core_configuration.h +5 -4
  840. data/src/core/lib/config/load_config.cc +13 -0
  841. data/src/core/lib/config/load_config.h +6 -0
  842. data/src/core/lib/debug/event_log.h +1 -1
  843. data/src/core/lib/debug/stats_data.cc +202 -35
  844. data/src/core/lib/debug/stats_data.h +103 -1
  845. data/src/core/lib/debug/trace.cc +31 -56
  846. data/src/core/lib/debug/trace.h +14 -4
  847. data/src/core/lib/event_engine/ares_resolver.cc +721 -0
  848. data/src/core/lib/event_engine/ares_resolver.h +150 -0
  849. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +221 -0
  850. data/src/core/lib/event_engine/cf_engine/cf_engine.h +89 -0
  851. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +357 -0
  852. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +149 -0
  853. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +82 -0
  854. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +241 -0
  855. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +120 -0
  856. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  857. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  858. data/src/core/lib/event_engine/event_engine.cc +0 -12
  859. data/src/core/lib/event_engine/forkable.cc +62 -43
  860. data/src/core/lib/event_engine/forkable.h +15 -0
  861. data/src/core/lib/event_engine/grpc_polled_fd.h +73 -0
  862. data/src/core/lib/event_engine/handle_containers.h +0 -4
  863. data/src/core/lib/event_engine/nameser.h +102 -0
  864. data/src/core/lib/event_engine/poller.h +2 -2
  865. data/src/core/lib/event_engine/posix.h +4 -0
  866. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +5 -7
  867. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +29 -9
  868. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +10 -1
  869. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +197 -0
  870. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  871. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +28 -14
  872. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +12 -1
  873. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +90 -47
  874. data/src/core/lib/event_engine/posix_engine/posix_engine.h +21 -14
  875. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +41 -31
  876. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +9 -8
  877. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
  878. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +50 -4
  879. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +9 -0
  880. data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
  881. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  882. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -0
  883. data/src/core/lib/event_engine/shim.cc +9 -1
  884. data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
  885. data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
  886. data/src/core/lib/event_engine/thread_pool/thread_count.cc +58 -0
  887. data/src/core/lib/event_engine/thread_pool/thread_count.h +176 -0
  888. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  889. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +12 -15
  890. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +523 -0
  891. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +223 -0
  892. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +157 -0
  893. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +104 -0
  894. data/src/core/lib/event_engine/trace.cc +1 -0
  895. data/src/core/lib/event_engine/trace.h +6 -0
  896. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  897. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  898. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  899. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  900. data/src/core/lib/event_engine/windows/windows_endpoint.cc +60 -59
  901. data/src/core/lib/event_engine/windows/windows_endpoint.h +17 -13
  902. data/src/core/lib/event_engine/windows/windows_engine.cc +21 -18
  903. data/src/core/lib/event_engine/windows/windows_engine.h +14 -18
  904. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  905. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  906. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  907. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  908. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  909. data/src/core/lib/experiments/config.cc +121 -30
  910. data/src/core/lib/experiments/config.h +33 -5
  911. data/src/core/lib/experiments/experiments.cc +675 -23
  912. data/src/core/lib/experiments/experiments.h +342 -27
  913. data/src/core/lib/gpr/log_internal.h +55 -0
  914. data/src/core/lib/gpr/posix/time.cc +5 -0
  915. data/src/core/lib/gprpp/crash.cc +10 -0
  916. data/src/core/lib/gprpp/crash.h +3 -0
  917. data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
  918. data/src/core/lib/gprpp/fork.cc +8 -9
  919. data/src/core/lib/gprpp/fork.h +7 -6
  920. data/src/core/lib/gprpp/if_list.h +4530 -0
  921. data/src/core/lib/gprpp/manual_constructor.h +1 -2
  922. data/src/core/lib/gprpp/no_destruct.h +1 -1
  923. data/src/core/lib/gprpp/orphanable.h +3 -3
  924. data/src/core/lib/gprpp/per_cpu.cc +35 -0
  925. data/src/core/lib/gprpp/per_cpu.h +61 -9
  926. data/src/core/lib/gprpp/ref_counted.h +9 -7
  927. data/src/core/lib/gprpp/ref_counted_ptr.h +63 -0
  928. data/src/core/lib/gprpp/ref_counted_string.cc +44 -0
  929. data/src/core/lib/gprpp/ref_counted_string.h +146 -0
  930. data/src/core/lib/gprpp/sorted_pack.h +3 -12
  931. data/src/core/lib/gprpp/status_helper.cc +2 -2
  932. data/src/core/lib/gprpp/status_helper.h +16 -15
  933. data/src/core/lib/gprpp/time.cc +1 -0
  934. data/src/core/lib/gprpp/time.h +13 -1
  935. data/src/core/lib/gprpp/type_list.h +32 -0
  936. data/src/core/lib/gprpp/validation_errors.cc +8 -3
  937. data/src/core/lib/gprpp/validation_errors.h +16 -9
  938. data/src/core/lib/gprpp/work_serializer.cc +320 -12
  939. data/src/core/lib/gprpp/work_serializer.h +30 -9
  940. data/src/core/lib/http/httpcli.h +6 -9
  941. data/src/core/lib/http/httpcli_security_connector.cc +1 -0
  942. data/src/core/lib/iomgr/buffer_list.cc +2 -0
  943. data/src/core/lib/iomgr/buffer_list.h +0 -1
  944. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  945. data/src/core/lib/iomgr/combiner.cc +57 -15
  946. data/src/core/lib/iomgr/combiner.h +8 -3
  947. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  948. data/src/core/lib/iomgr/error.cc +32 -2
  949. data/src/core/lib/iomgr/error.h +9 -10
  950. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  951. data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -10
  952. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  953. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +24 -27
  954. data/src/core/lib/iomgr/exec_ctx.cc +12 -0
  955. data/src/core/lib/iomgr/exec_ctx.h +66 -19
  956. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  957. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  958. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  959. data/src/core/lib/iomgr/polling_entity.cc +10 -0
  960. data/src/core/lib/iomgr/polling_entity.h +2 -0
  961. data/src/core/lib/iomgr/pollset.h +4 -5
  962. data/src/core/lib/iomgr/port.h +24 -0
  963. data/src/core/lib/iomgr/resolve_address.cc +13 -1
  964. data/src/core/lib/iomgr/resolve_address.h +17 -3
  965. data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
  966. data/src/core/lib/iomgr/socket_utils_common_posix.cc +33 -2
  967. data/src/core/lib/iomgr/socket_utils_posix.cc +5 -0
  968. data/src/core/lib/iomgr/socket_utils_posix.h +9 -0
  969. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  970. data/src/core/lib/iomgr/socket_windows.h +9 -2
  971. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  972. data/src/core/lib/iomgr/tcp_client_posix.cc +8 -1
  973. data/src/core/lib/iomgr/tcp_posix.cc +41 -21
  974. data/src/core/lib/iomgr/tcp_server_posix.cc +145 -106
  975. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  976. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
  977. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  978. data/src/core/lib/iomgr/tcp_windows.cc +1 -3
  979. data/src/core/lib/iomgr/timer_generic.cc +17 -16
  980. data/src/core/lib/iomgr/vsock.cc +59 -0
  981. data/src/core/lib/iomgr/vsock.h +38 -0
  982. data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
  983. data/src/core/lib/json/json.h +2 -218
  984. data/src/core/lib/json/json_object_loader.cc +24 -25
  985. data/src/core/lib/json/json_object_loader.h +30 -18
  986. data/src/core/lib/json/json_reader.cc +69 -42
  987. data/src/core/lib/json/json_reader.h +34 -0
  988. data/src/core/lib/json/json_util.cc +10 -15
  989. data/src/core/lib/json/json_util.h +5 -4
  990. data/src/core/lib/json/json_writer.cc +24 -25
  991. data/src/core/lib/json/json_writer.h +33 -0
  992. data/src/core/lib/load_balancing/delegating_helper.h +115 -0
  993. data/src/core/lib/load_balancing/lb_policy.h +43 -9
  994. data/src/core/lib/load_balancing/lb_policy_registry.cc +9 -8
  995. data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
  996. data/src/core/lib/matchers/matchers.cc +3 -4
  997. data/src/core/lib/matchers/matchers.h +2 -1
  998. data/src/core/lib/promise/activity.cc +5 -0
  999. data/src/core/lib/promise/activity.h +10 -0
  1000. data/src/core/lib/promise/arena_promise.h +5 -1
  1001. data/src/core/lib/promise/detail/basic_seq.h +1 -372
  1002. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  1003. data/src/core/lib/promise/detail/seq_state.h +2494 -0
  1004. data/src/core/lib/promise/latch.h +1 -0
  1005. data/src/core/lib/promise/loop.h +8 -5
  1006. data/src/core/lib/promise/party.cc +31 -13
  1007. data/src/core/lib/promise/party.h +12 -3
  1008. data/src/core/lib/promise/pipe.h +40 -26
  1009. data/src/core/lib/promise/poll.h +4 -6
  1010. data/src/core/lib/promise/prioritized_race.h +95 -0
  1011. data/src/core/lib/promise/seq.h +19 -2
  1012. data/src/core/lib/promise/sleep.cc +2 -1
  1013. data/src/core/lib/promise/sleep.h +5 -10
  1014. data/src/core/lib/promise/try_seq.h +34 -2
  1015. data/src/core/lib/resolver/resolver_factory.h +3 -2
  1016. data/src/core/lib/resolver/server_address.cc +9 -102
  1017. data/src/core/lib/resolver/server_address.h +11 -70
  1018. data/src/core/lib/resource_quota/api.cc +1 -0
  1019. data/src/core/lib/resource_quota/arena.cc +2 -0
  1020. data/src/core/lib/resource_quota/arena.h +42 -8
  1021. data/src/core/lib/resource_quota/memory_quota.cc +65 -10
  1022. data/src/core/lib/resource_quota/memory_quota.h +6 -4
  1023. data/src/core/lib/resource_quota/resource_quota.h +1 -0
  1024. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  1025. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  1026. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  1027. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  1028. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  1029. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  1030. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  1031. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  1032. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  1033. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  1034. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  1035. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  1036. data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
  1037. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
  1038. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  1039. data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
  1040. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +54 -49
  1041. data/src/core/lib/security/credentials/external/aws_request_signer.cc +8 -0
  1042. data/src/core/lib/security/credentials/external/external_account_credentials.cc +104 -65
  1043. data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
  1044. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +23 -21
  1045. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +29 -27
  1046. data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
  1047. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
  1048. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +6 -2
  1049. data/src/core/lib/security/credentials/jwt/json_token.cc +36 -16
  1050. data/src/core/lib/security/credentials/jwt/json_token.h +4 -0
  1051. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +10 -5
  1052. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +82 -38
  1053. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -16
  1054. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +116 -9
  1055. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +14 -0
  1056. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +86 -0
  1057. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +0 -55
  1058. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +2 -0
  1059. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +8 -0
  1060. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +5 -1
  1061. data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
  1062. data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
  1063. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -0
  1064. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +2 -5
  1065. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -0
  1066. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +7 -57
  1067. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -1
  1068. data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
  1069. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  1070. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +3 -15
  1071. data/src/core/lib/security/transport/client_auth_filter.cc +8 -5
  1072. data/src/core/lib/security/transport/security_handshaker.cc +1 -0
  1073. data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
  1074. data/src/core/lib/security/util/json_util.cc +6 -5
  1075. data/src/core/lib/service_config/service_config_call_data.h +54 -20
  1076. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  1077. data/src/core/lib/slice/slice.h +24 -0
  1078. data/src/core/lib/slice/slice_buffer.cc +15 -0
  1079. data/src/core/lib/slice/slice_buffer.h +16 -4
  1080. data/src/core/lib/slice/slice_refcount.h +1 -1
  1081. data/src/core/lib/surface/call.cc +244 -100
  1082. data/src/core/lib/surface/call.h +5 -5
  1083. data/src/core/lib/surface/channel.cc +8 -4
  1084. data/src/core/lib/surface/channel_init.h +3 -2
  1085. data/src/core/lib/surface/completion_queue.cc +18 -3
  1086. data/src/core/lib/surface/init.cc +1 -0
  1087. data/src/core/lib/surface/server.cc +151 -80
  1088. data/src/core/lib/surface/server.h +19 -21
  1089. data/src/core/lib/surface/validate_metadata.cc +37 -22
  1090. data/src/core/lib/surface/validate_metadata.h +13 -3
  1091. data/src/core/lib/surface/version.cc +2 -2
  1092. data/src/core/lib/transport/batch_builder.cc +16 -15
  1093. data/src/core/lib/transport/batch_builder.h +48 -36
  1094. data/src/core/lib/transport/metadata_batch.cc +13 -7
  1095. data/src/core/lib/transport/metadata_batch.h +118 -108
  1096. data/src/core/lib/transport/metadata_compression_traits.h +67 -0
  1097. data/src/core/lib/transport/parsed_metadata.h +32 -20
  1098. data/src/core/lib/transport/simple_slice_based_metadata.h +54 -0
  1099. data/src/core/lib/transport/transport.h +30 -11
  1100. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -6
  1101. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  1102. data/src/core/tsi/alts/crypt/aes_gcm.cc +27 -2
  1103. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
  1104. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
  1105. data/src/core/tsi/ssl_transport_security.cc +51 -9
  1106. data/src/core/tsi/ssl_transport_security.h +17 -1
  1107. data/src/ruby/bin/math_pb.rb +24 -18
  1108. data/src/ruby/ext/grpc/extconf.rb +27 -27
  1109. data/src/ruby/ext/grpc/rb_call.c +62 -39
  1110. data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
  1111. data/src/ruby/ext/grpc/rb_channel.c +109 -84
  1112. data/src/ruby/ext/grpc/rb_channel.h +1 -0
  1113. data/src/ruby/ext/grpc/rb_channel_args.c +18 -2
  1114. data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
  1115. data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
  1116. data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
  1117. data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
  1118. data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
  1119. data/src/ruby/ext/grpc/rb_grpc.c +192 -30
  1120. data/src/ruby/ext/grpc/rb_grpc.h +8 -2
  1121. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  1122. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
  1123. data/src/ruby/ext/grpc/rb_server.c +62 -45
  1124. data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
  1125. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
  1126. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
  1127. data/src/ruby/lib/grpc/generic/active_call.rb +9 -14
  1128. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1129. data/src/ruby/lib/grpc/version.rb +1 -1
  1130. data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
  1131. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
  1132. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -111
  1133. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
  1134. data/src/ruby/pb/test/client.rb +16 -0
  1135. data/src/ruby/spec/generic/rpc_server_spec.rb +3 -3
  1136. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -2
  1137. data/third_party/abseil-cpp/absl/base/attributes.h +58 -5
  1138. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  1139. data/third_party/abseil-cpp/absl/base/casts.h +8 -8
  1140. data/third_party/abseil-cpp/absl/base/config.h +89 -106
  1141. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +26 -1
  1142. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +2 -2
  1143. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +50 -39
  1144. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +2 -1
  1145. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +17 -18
  1146. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +32 -3
  1147. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +24 -4
  1148. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +31 -73
  1149. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -8
  1150. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -11
  1151. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +23 -32
  1152. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +2 -3
  1153. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1154. data/third_party/abseil-cpp/absl/base/policy_checks.h +3 -3
  1155. data/third_party/abseil-cpp/absl/base/prefetch.h +198 -0
  1156. data/third_party/abseil-cpp/absl/container/fixed_array.h +54 -29
  1157. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -1
  1158. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -2
  1159. data/third_party/abseil-cpp/absl/container/inlined_vector.h +167 -79
  1160. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  1161. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +3 -21
  1162. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -1
  1163. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +46 -0
  1164. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -0
  1165. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +85 -26
  1166. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +35 -18
  1167. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +70 -29
  1168. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +437 -236
  1169. data/third_party/abseil-cpp/absl/crc/crc32c.h +8 -1
  1170. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +14 -8
  1171. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -35
  1172. data/third_party/abseil-cpp/absl/crc/internal/crc.h +2 -10
  1173. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +1 -1
  1174. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +1 -1
  1175. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +4 -4
  1176. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +8 -10
  1177. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +17 -19
  1178. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +8 -8
  1179. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +2 -1
  1180. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +59 -23
  1181. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +1 -1
  1182. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +1 -1
  1183. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +1 -1
  1184. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +43 -19
  1185. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -0
  1186. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +1 -1
  1187. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc +1 -1
  1188. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -2
  1189. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -15
  1190. data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +1 -1
  1191. data/third_party/abseil-cpp/absl/flags/marshalling.cc +43 -2
  1192. data/third_party/abseil-cpp/absl/flags/marshalling.h +5 -0
  1193. data/third_party/abseil-cpp/absl/functional/any_invocable.h +9 -1
  1194. data/third_party/abseil-cpp/absl/functional/bind_front.h +1 -1
  1195. data/third_party/abseil-cpp/absl/functional/function_ref.h +3 -3
  1196. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +37 -24
  1197. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +19 -9
  1198. data/third_party/abseil-cpp/absl/hash/hash.h +7 -4
  1199. data/third_party/abseil-cpp/absl/hash/internal/hash.h +38 -15
  1200. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +6 -0
  1201. data/third_party/abseil-cpp/absl/meta/type_traits.h +48 -373
  1202. data/third_party/abseil-cpp/absl/numeric/bits.h +4 -4
  1203. data/third_party/abseil-cpp/absl/numeric/int128.cc +20 -8
  1204. data/third_party/abseil-cpp/absl/numeric/int128.h +36 -39
  1205. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +0 -3
  1206. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +47 -30
  1207. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +185 -0
  1208. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +4 -3
  1209. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  1210. data/third_party/abseil-cpp/absl/random/internal/platform.h +1 -1
  1211. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +4 -0
  1212. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +1 -1
  1213. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +1 -1
  1214. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +1 -1
  1215. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +4 -0
  1216. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +12 -24
  1217. data/third_party/abseil-cpp/absl/status/status.cc +11 -7
  1218. data/third_party/abseil-cpp/absl/status/status.h +11 -2
  1219. data/third_party/abseil-cpp/absl/status/statusor.h +22 -8
  1220. data/third_party/abseil-cpp/absl/strings/ascii.cc +54 -6
  1221. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -4
  1222. data/third_party/abseil-cpp/absl/strings/charconv.h +2 -2
  1223. data/third_party/abseil-cpp/absl/strings/cord.cc +1 -2
  1224. data/third_party/abseil-cpp/absl/strings/cord.h +32 -5
  1225. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +23 -1
  1226. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +18 -0
  1227. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +2 -5
  1228. data/third_party/abseil-cpp/absl/strings/escaping.cc +10 -32
  1229. data/third_party/abseil-cpp/absl/strings/escaping.h +1 -1
  1230. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +2 -4
  1231. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +3 -3
  1232. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +0 -1
  1233. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +15 -13
  1234. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +13 -4
  1235. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +8 -0
  1236. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +5 -3
  1237. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +4 -7
  1238. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +8 -0
  1239. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +2 -2
  1240. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +46 -20
  1241. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +1 -34
  1242. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +2 -1
  1243. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +23 -0
  1244. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +1 -0
  1245. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +2 -77
  1246. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +4 -112
  1247. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +1 -1
  1248. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +10 -31
  1249. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -8
  1250. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +5 -20
  1251. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +1 -0
  1252. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +1 -1
  1253. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +9 -9
  1254. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +56 -6
  1255. data/third_party/abseil-cpp/absl/strings/match.cc +87 -0
  1256. data/third_party/abseil-cpp/absl/strings/match.h +19 -0
  1257. data/third_party/abseil-cpp/absl/strings/numbers.cc +154 -122
  1258. data/third_party/abseil-cpp/absl/strings/numbers.h +1 -6
  1259. data/third_party/abseil-cpp/absl/strings/str_cat.cc +7 -50
  1260. data/third_party/abseil-cpp/absl/strings/str_cat.h +83 -15
  1261. data/third_party/abseil-cpp/absl/strings/str_format.h +6 -3
  1262. data/third_party/abseil-cpp/absl/strings/str_split.cc +9 -6
  1263. data/third_party/abseil-cpp/absl/strings/string_view.cc +26 -4
  1264. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -0
  1265. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +63 -43
  1266. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +111 -0
  1267. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.h +63 -0
  1268. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -7
  1269. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +225 -0
  1270. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +122 -114
  1271. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +12 -8
  1272. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +10 -1
  1273. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +167 -0
  1274. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.h +60 -0
  1275. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +122 -0
  1276. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.h +65 -0
  1277. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +91 -0
  1278. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.h +56 -0
  1279. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +19 -113
  1280. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +42 -0
  1281. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.h +90 -0
  1282. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +151 -0
  1283. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.h +70 -0
  1284. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +407 -411
  1285. data/third_party/abseil-cpp/absl/synchronization/mutex.h +152 -118
  1286. data/third_party/abseil-cpp/absl/time/clock.cc +6 -7
  1287. data/third_party/abseil-cpp/absl/time/duration.cc +24 -26
  1288. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -0
  1289. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1290. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +3 -3
  1291. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +8 -6
  1292. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +6 -3
  1293. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +4 -2
  1294. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +4 -0
  1295. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +322 -295
  1296. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +8 -17
  1297. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +51 -33
  1298. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +7 -2
  1299. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +128 -2
  1300. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +1 -1
  1301. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -1
  1302. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +34 -34
  1303. data/third_party/abseil-cpp/absl/time/time.cc +9 -2
  1304. data/third_party/abseil-cpp/absl/time/time.h +115 -15
  1305. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -52
  1306. data/third_party/abseil-cpp/absl/types/internal/span.h +2 -2
  1307. data/third_party/abseil-cpp/absl/types/internal/variant.h +2 -2
  1308. data/third_party/abseil-cpp/absl/types/optional.h +15 -13
  1309. data/third_party/abseil-cpp/absl/types/span.h +1 -2
  1310. data/third_party/boringssl-with-bazel/err_data.c +554 -553
  1311. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +7 -3
  1312. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  1313. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +7 -7
  1314. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +6 -6
  1315. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
  1316. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +11 -4
  1317. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  1318. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  1319. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  1320. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +9 -7
  1321. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +40 -55
  1322. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +7 -7
  1323. data/third_party/boringssl-with-bazel/src/crypto/bio/errno.c +92 -0
  1324. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +14 -54
  1325. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +23 -22
  1326. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +16 -6
  1327. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  1328. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +4 -4
  1329. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +11 -2
  1330. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  1331. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +1 -1
  1332. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
  1333. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
  1334. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  1335. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  1336. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  1337. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +31 -192
  1338. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
  1339. data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
  1340. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -2
  1341. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c +0 -1
  1342. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c +0 -2
  1343. data/third_party/boringssl-with-bazel/src/crypto/{cpu_aarch64_freebsd.c → cpu_aarch64_openbsd.c} +23 -24
  1344. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_sysreg.c +93 -0
  1345. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c +1 -1
  1346. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +0 -1
  1347. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +0 -2
  1348. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +55 -50
  1349. data/third_party/boringssl-with-bazel/src/crypto/{cpu_arm.c → curve25519/curve25519_64_adx.c} +4 -24
  1350. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2834 -7442
  1351. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +26 -8
  1352. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +4 -0
  1353. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +5 -0
  1354. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  1355. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
  1356. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
  1357. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
  1358. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +42 -34
  1359. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +17 -11
  1360. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  1361. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +23 -21
  1362. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
  1363. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
  1364. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
  1365. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  1366. data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
  1367. data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
  1368. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
  1369. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  1370. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
  1371. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
  1372. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
  1373. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
  1374. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
  1375. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
  1376. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
  1377. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +37 -8
  1378. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +41 -19
  1379. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +9 -0
  1380. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
  1381. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +204 -428
  1382. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +4 -4
  1383. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +31 -64
  1384. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
  1385. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +105 -143
  1386. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +19 -19
  1387. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +16 -18
  1388. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +27 -30
  1389. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +23 -26
  1390. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  1391. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
  1392. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +21 -37
  1393. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +31 -31
  1394. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +16 -16
  1395. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  1396. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +11 -5
  1397. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +2 -2
  1398. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  1399. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  1400. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  1401. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  1402. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  1403. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  1404. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  1405. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
  1406. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
  1407. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
  1408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -41
  1409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +76 -16
  1410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  1411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  1412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +126 -233
  1413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +113 -24
  1414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +4 -7
  1415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  1416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  1417. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +169 -6
  1418. data/third_party/boringssl-with-bazel/src/crypto/internal.h +216 -87
  1419. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +32 -2
  1420. data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +11 -12
  1421. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +834 -0
  1422. data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
  1423. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +25 -46
  1424. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  1425. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  1426. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
  1427. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
  1428. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
  1429. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
  1430. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
  1431. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
  1432. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
  1433. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +52 -0
  1434. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
  1435. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +38 -0
  1436. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
  1437. data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
  1438. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  1439. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  1440. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +152 -72
  1441. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
  1442. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
  1443. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
  1444. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  1445. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +240 -72
  1446. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  1447. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -130
  1448. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  1449. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  1450. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +10 -20
  1451. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +0 -3
  1452. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +3 -2
  1453. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  1454. data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +18 -14
  1455. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  1456. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -141
  1457. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +1 -3
  1458. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +19 -25
  1459. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  1460. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +8 -4
  1461. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
  1462. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +22 -24
  1463. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -72
  1464. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +22 -29
  1465. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  1466. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +9 -7
  1467. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
  1468. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
  1469. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  1470. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  1471. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +2 -3
  1472. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  1473. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  1474. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  1475. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +20 -52
  1476. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  1477. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +11 -9
  1478. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  1479. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -3
  1480. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  1481. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
  1482. data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
  1483. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +11 -4
  1484. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +37 -112
  1485. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +19 -13
  1486. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  1487. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
  1488. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
  1489. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
  1490. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -1
  1491. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
  1492. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +28 -11
  1493. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
  1494. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +14 -10
  1495. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +34 -2
  1496. data/third_party/boringssl-with-bazel/src/include/openssl/kyber.h +128 -0
  1497. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  1498. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +8 -1
  1499. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  1500. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
  1501. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -62
  1502. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -19
  1503. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +275 -96
  1504. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +242 -223
  1505. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +201 -0
  1506. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -25
  1507. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  1508. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  1509. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +760 -614
  1510. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +45 -12
  1511. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  1512. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +10 -68
  1513. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
  1514. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +33 -18
  1515. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
  1516. data/third_party/boringssl-with-bazel/src/ssl/internal.h +86 -46
  1517. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  1518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +8 -4
  1519. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +209 -209
  1520. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +6 -6
  1521. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +76 -118
  1522. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +209 -33
  1523. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  1524. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +19 -21
  1525. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  1526. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  1527. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
  1528. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  1529. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  1530. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
  1531. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  1532. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  1533. data/third_party/cares/cares/include/ares.h +23 -1
  1534. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  1535. data/third_party/cares/cares/include/ares_rules.h +2 -2
  1536. data/third_party/cares/cares/include/ares_version.h +3 -3
  1537. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  1538. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  1539. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  1540. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  1541. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  1542. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  1543. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  1544. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  1545. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  1546. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  1547. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  1548. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  1549. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  1550. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  1551. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  1552. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  1553. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  1554. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  1555. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  1556. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  1557. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  1558. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  1559. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  1560. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  1561. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  1562. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  1563. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  1564. data/third_party/upb/upb/{table_internal.h → alloc.h} +6 -6
  1565. data/third_party/upb/upb/arena.h +4 -193
  1566. data/third_party/upb/upb/array.h +4 -51
  1567. data/third_party/upb/upb/base/descriptor_constants.h +104 -0
  1568. data/third_party/upb/upb/base/log2.h +57 -0
  1569. data/third_party/upb/upb/{status.c → base/status.c} +2 -7
  1570. data/third_party/upb/upb/base/status.h +66 -0
  1571. data/third_party/upb/upb/base/string_view.h +75 -0
  1572. data/third_party/upb/upb/{array.c → collections/array.c} +73 -36
  1573. data/third_party/upb/upb/collections/array.h +91 -0
  1574. data/third_party/upb/upb/collections/array_internal.h +135 -0
  1575. data/third_party/upb/upb/{map.c → collections/map.c} +60 -26
  1576. data/third_party/upb/upb/collections/map.h +140 -0
  1577. data/third_party/upb/upb/collections/map_gencode_util.h +78 -0
  1578. data/third_party/upb/upb/collections/map_internal.h +170 -0
  1579. data/third_party/upb/upb/collections/map_sorter.c +166 -0
  1580. data/third_party/upb/upb/collections/map_sorter_internal.h +109 -0
  1581. data/third_party/upb/upb/{message_value.h → collections/message_value.h} +19 -13
  1582. data/third_party/upb/upb/decode.h +3 -62
  1583. data/third_party/upb/upb/def.h +4 -384
  1584. data/third_party/upb/upb/def.hpp +3 -411
  1585. data/third_party/upb/upb/encode.h +3 -48
  1586. data/third_party/upb/upb/extension_registry.h +3 -52
  1587. data/third_party/upb/upb/generated_code_support.h +54 -0
  1588. data/third_party/upb/upb/{table.c → hash/common.c} +55 -108
  1589. data/third_party/upb/upb/hash/common.h +200 -0
  1590. data/third_party/upb/upb/hash/int_table.h +102 -0
  1591. data/third_party/upb/upb/hash/str_table.h +162 -0
  1592. data/third_party/upb/upb/{json_decode.c → json/decode.c} +63 -98
  1593. data/third_party/upb/upb/{json_decode.h → json/decode.h} +8 -3
  1594. data/third_party/upb/upb/{json_encode.c → json/encode.c} +69 -45
  1595. data/third_party/upb/upb/{json_encode.h → json/encode.h} +8 -3
  1596. data/third_party/upb/upb/lex/atoi.c +68 -0
  1597. data/third_party/upb/upb/lex/atoi.h +53 -0
  1598. data/third_party/upb/upb/{upb.c → lex/round_trip.c} +2 -11
  1599. data/third_party/upb/upb/{internal/upb.h → lex/round_trip.h} +17 -30
  1600. data/third_party/upb/upb/lex/strtod.c +97 -0
  1601. data/third_party/upb/upb/lex/strtod.h +46 -0
  1602. data/third_party/upb/upb/lex/unicode.c +57 -0
  1603. data/third_party/upb/upb/lex/unicode.h +77 -0
  1604. data/third_party/upb/upb/map.h +4 -85
  1605. data/third_party/upb/upb/mem/alloc.c +47 -0
  1606. data/third_party/upb/upb/mem/alloc.h +98 -0
  1607. data/third_party/upb/upb/mem/arena.c +367 -0
  1608. data/third_party/upb/upb/mem/arena.h +160 -0
  1609. data/third_party/upb/upb/mem/arena_internal.h +114 -0
  1610. data/third_party/upb/upb/message/accessors.c +92 -0
  1611. data/third_party/upb/upb/message/accessors.h +400 -0
  1612. data/third_party/upb/upb/message/accessors_internal.h +391 -0
  1613. data/third_party/upb/upb/message/extension_internal.h +83 -0
  1614. data/third_party/upb/upb/message/internal/map_entry.h +64 -0
  1615. data/third_party/upb/upb/message/internal.h +131 -0
  1616. data/third_party/upb/upb/message/message.c +174 -0
  1617. data/third_party/upb/upb/message/message.h +69 -0
  1618. data/third_party/upb/upb/message/tagged_ptr.h +89 -0
  1619. data/third_party/upb/upb/mini_descriptor/build_enum.c +150 -0
  1620. data/third_party/upb/upb/mini_descriptor/build_enum.h +63 -0
  1621. data/third_party/upb/upb/mini_descriptor/decode.c +875 -0
  1622. data/third_party/upb/upb/mini_descriptor/decode.h +140 -0
  1623. data/third_party/upb/upb/mini_descriptor/internal/base92.c +46 -0
  1624. data/third_party/upb/upb/mini_descriptor/internal/base92.h +81 -0
  1625. data/third_party/upb/upb/mini_descriptor/internal/decoder.h +73 -0
  1626. data/third_party/upb/upb/mini_descriptor/internal/encode.c +326 -0
  1627. data/third_party/upb/upb/mini_descriptor/internal/encode.h +110 -0
  1628. data/third_party/upb/upb/{mini_table.hpp → mini_descriptor/internal/encode.hpp} +32 -8
  1629. data/third_party/upb/upb/mini_descriptor/internal/modifiers.h +50 -0
  1630. data/third_party/upb/upb/mini_descriptor/internal/wire_constants.h +91 -0
  1631. data/third_party/upb/upb/mini_descriptor/link.c +142 -0
  1632. data/third_party/upb/upb/mini_descriptor/link.h +104 -0
  1633. data/third_party/upb/upb/mini_table/enum.h +50 -0
  1634. data/third_party/upb/upb/mini_table/extension.h +40 -0
  1635. data/third_party/upb/upb/{extension_registry.c → mini_table/extension_registry.c} +27 -24
  1636. data/third_party/upb/upb/mini_table/extension_registry.h +105 -0
  1637. data/third_party/upb/upb/mini_table/field.h +118 -0
  1638. data/third_party/upb/upb/{collections.h → mini_table/file.h} +6 -7
  1639. data/third_party/upb/upb/mini_table/internal/enum.h +76 -0
  1640. data/third_party/upb/upb/mini_table/internal/extension.h +47 -0
  1641. data/third_party/upb/upb/mini_table/internal/field.h +136 -0
  1642. data/third_party/upb/upb/mini_table/internal/file.h +49 -0
  1643. data/third_party/upb/upb/mini_table/internal/message.c +39 -0
  1644. data/third_party/upb/upb/mini_table/internal/message.h +113 -0
  1645. data/third_party/upb/upb/mini_table/internal/sub.h +39 -0
  1646. data/third_party/upb/upb/mini_table/message.c +97 -0
  1647. data/third_party/upb/upb/mini_table/message.h +105 -0
  1648. data/third_party/upb/upb/mini_table/sub.h +35 -0
  1649. data/third_party/upb/upb/msg.h +3 -38
  1650. data/third_party/upb/upb/port/atomic.h +101 -0
  1651. data/third_party/upb/upb/{port_def.inc → port/def.inc} +94 -27
  1652. data/third_party/upb/upb/{port_undef.inc → port/undef.inc} +13 -3
  1653. data/third_party/upb/upb/{internal → port}/vsnprintf_compat.h +5 -7
  1654. data/third_party/upb/upb/reflection/common.h +67 -0
  1655. data/third_party/upb/upb/reflection/def.h +42 -0
  1656. data/third_party/upb/upb/reflection/def.hpp +622 -0
  1657. data/third_party/upb/upb/reflection/def_builder.c +357 -0
  1658. data/third_party/upb/upb/reflection/def_builder_internal.h +157 -0
  1659. data/third_party/upb/upb/reflection/def_pool.c +462 -0
  1660. data/third_party/upb/upb/reflection/def_pool.h +108 -0
  1661. data/third_party/upb/upb/reflection/def_pool_internal.h +77 -0
  1662. data/third_party/upb/upb/reflection/def_type.c +50 -0
  1663. data/third_party/upb/upb/reflection/def_type.h +81 -0
  1664. data/third_party/upb/upb/reflection/desc_state.c +53 -0
  1665. data/third_party/upb/upb/reflection/desc_state_internal.h +64 -0
  1666. data/third_party/upb/upb/reflection/enum_def.c +310 -0
  1667. data/third_party/upb/upb/reflection/enum_def.h +80 -0
  1668. data/third_party/upb/upb/reflection/enum_def_internal.h +56 -0
  1669. data/third_party/upb/upb/reflection/enum_reserved_range.c +84 -0
  1670. data/third_party/upb/upb/reflection/enum_reserved_range.h +51 -0
  1671. data/third_party/upb/upb/reflection/enum_reserved_range_internal.h +55 -0
  1672. data/third_party/upb/upb/reflection/enum_value_def.c +144 -0
  1673. data/third_party/upb/upb/reflection/enum_value_def.h +57 -0
  1674. data/third_party/upb/upb/reflection/enum_value_def_internal.h +57 -0
  1675. data/third_party/upb/upb/reflection/extension_range.c +93 -0
  1676. data/third_party/upb/upb/reflection/extension_range.h +55 -0
  1677. data/third_party/upb/upb/reflection/extension_range_internal.h +54 -0
  1678. data/third_party/upb/upb/reflection/field_def.c +931 -0
  1679. data/third_party/upb/upb/reflection/field_def.h +91 -0
  1680. data/third_party/upb/upb/reflection/field_def_internal.h +76 -0
  1681. data/third_party/upb/upb/reflection/file_def.c +370 -0
  1682. data/third_party/upb/upb/reflection/file_def.h +77 -0
  1683. data/third_party/upb/upb/reflection/file_def_internal.h +57 -0
  1684. data/third_party/upb/upb/reflection/message.c +233 -0
  1685. data/third_party/upb/upb/reflection/message.h +102 -0
  1686. data/third_party/upb/upb/reflection/message.hpp +37 -0
  1687. data/third_party/upb/upb/reflection/message_def.c +720 -0
  1688. data/third_party/upb/upb/reflection/message_def.h +174 -0
  1689. data/third_party/upb/upb/reflection/message_def_internal.h +63 -0
  1690. data/third_party/upb/upb/reflection/message_reserved_range.c +81 -0
  1691. data/third_party/upb/upb/reflection/message_reserved_range.h +51 -0
  1692. data/third_party/upb/upb/reflection/message_reserved_range_internal.h +55 -0
  1693. data/third_party/upb/upb/reflection/method_def.c +124 -0
  1694. data/third_party/upb/upb/reflection/method_def.h +59 -0
  1695. data/third_party/upb/upb/reflection/method_def_internal.h +53 -0
  1696. data/third_party/upb/upb/reflection/oneof_def.c +226 -0
  1697. data/third_party/upb/upb/reflection/oneof_def.h +66 -0
  1698. data/third_party/upb/upb/reflection/oneof_def_internal.h +57 -0
  1699. data/third_party/upb/upb/reflection/service_def.c +128 -0
  1700. data/third_party/upb/upb/reflection/service_def.h +60 -0
  1701. data/third_party/upb/upb/reflection/service_def_internal.h +53 -0
  1702. data/third_party/upb/upb/reflection.h +4 -78
  1703. data/third_party/upb/upb/reflection.hpp +3 -7
  1704. data/third_party/upb/upb/status.h +4 -34
  1705. data/third_party/upb/upb/string_view.h +36 -0
  1706. data/third_party/upb/upb/{text_encode.c → text/encode.c} +74 -70
  1707. data/third_party/upb/upb/text/encode.h +69 -0
  1708. data/third_party/upb/upb/text_encode.h +4 -32
  1709. data/third_party/upb/upb/upb.h +6 -151
  1710. data/third_party/upb/upb/upb.hpp +10 -18
  1711. data/third_party/upb/upb/wire/common.h +44 -0
  1712. data/third_party/upb/upb/wire/common_internal.h +50 -0
  1713. data/third_party/upb/upb/wire/decode.c +1382 -0
  1714. data/third_party/upb/upb/wire/decode.h +148 -0
  1715. data/third_party/upb/upb/{decode_fast.c → wire/decode_fast.c} +184 -225
  1716. data/third_party/upb/upb/{decode_fast.h → wire/decode_fast.h} +21 -7
  1717. data/third_party/upb/upb/{internal/decode.h → wire/decode_internal.h} +44 -92
  1718. data/third_party/upb/upb/{encode.c → wire/encode.c} +134 -105
  1719. data/third_party/upb/upb/wire/encode.h +92 -0
  1720. data/third_party/upb/upb/wire/eps_copy_input_stream.c +39 -0
  1721. data/third_party/upb/upb/wire/eps_copy_input_stream.h +425 -0
  1722. data/third_party/upb/upb/wire/reader.c +67 -0
  1723. data/third_party/upb/upb/wire/reader.h +227 -0
  1724. data/third_party/upb/upb/wire/swap_internal.h +63 -0
  1725. data/third_party/upb/upb/wire/types.h +41 -0
  1726. data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-neon.c +1 -1
  1727. data/third_party/{upb/third_party/utf8_range → utf8_range}/utf8_range.h +12 -0
  1728. metadata +286 -87
  1729. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  1730. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  1731. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
  1732. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
  1733. data/src/core/ext/transport/chttp2/transport/context_list.cc +0 -71
  1734. data/src/core/ext/transport/chttp2/transport/context_list.h +0 -54
  1735. data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
  1736. data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
  1737. data/src/core/lib/event_engine/thread_pool.cc +0 -253
  1738. data/src/core/lib/event_engine/thread_pool.h +0 -141
  1739. data/src/core/lib/promise/detail/basic_join.h +0 -197
  1740. data/src/core/lib/promise/detail/switch.h +0 -1455
  1741. data/src/core/lib/promise/try_join.h +0 -82
  1742. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -403
  1743. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +0 -52
  1744. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
  1745. data/third_party/re2/util/benchmark.h +0 -156
  1746. data/third_party/re2/util/flags.h +0 -26
  1747. data/third_party/re2/util/malloc_counter.h +0 -19
  1748. data/third_party/re2/util/pcre.cc +0 -1025
  1749. data/third_party/re2/util/pcre.h +0 -681
  1750. data/third_party/re2/util/test.h +0 -50
  1751. data/third_party/upb/upb/arena.c +0 -277
  1752. data/third_party/upb/upb/decode.c +0 -1221
  1753. data/third_party/upb/upb/def.c +0 -3269
  1754. data/third_party/upb/upb/internal/table.h +0 -385
  1755. data/third_party/upb/upb/mini_table.c +0 -1147
  1756. data/third_party/upb/upb/mini_table.h +0 -189
  1757. data/third_party/upb/upb/msg.c +0 -368
  1758. data/third_party/upb/upb/msg_internal.h +0 -837
  1759. data/third_party/upb/upb/reflection.c +0 -323
  1760. data/third_party/zlib/gzclose.c +0 -25
  1761. data/third_party/zlib/gzlib.c +0 -639
  1762. data/third_party/zlib/gzread.c +0 -650
  1763. data/third_party/zlib/gzwrite.c +0 -677
  1764. /data/third_party/{upb/third_party/utf8_range → utf8_range}/naive.c +0 -0
  1765. /data/third_party/{upb/third_party/utf8_range → utf8_range}/range2-sse.c +0 -0
@@ -0,0 +1,2494 @@
1
+ // Copyright 2023 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_PROMISE_DETAIL_SEQ_STATE_H
16
+ #define GRPC_SRC_CORE_LIB_PROMISE_DETAIL_SEQ_STATE_H
17
+
18
+ // This file is generated by tools/codegen/core/gen_seq.py
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <stdint.h>
23
+
24
+ #include <utility>
25
+
26
+ #include "absl/base/attributes.h"
27
+
28
+ #include <grpc/support/log.h>
29
+
30
+ #include "src/core/lib/debug/trace.h"
31
+ #include "src/core/lib/gprpp/construct_destruct.h"
32
+ #include "src/core/lib/promise/detail/promise_factory.h"
33
+ #include "src/core/lib/promise/detail/promise_like.h"
34
+ #include "src/core/lib/promise/poll.h"
35
+ #include "src/core/lib/promise/trace.h"
36
+
37
+ // A sequence under some traits for some set of callables P, Fs.
38
+ // P should be a promise-like object that yields a value.
39
+ // Fs... should be promise-factory-like objects that take the value from the
40
+ // previous step and yield a promise. Note that most of the machinery in
41
+ // PromiseFactory exists to make it possible for those promise-factory-like
42
+ // objects to be anything that's convenient.
43
+ // Traits defines how we move from one step to the next. Traits sets up the
44
+ // wrapping and escape handling for the sequence.
45
+ // Promises return wrapped values that the trait can inspect and unwrap before
46
+ // passing them to the next element of the sequence. The trait can
47
+ // also interpret a wrapped value as an escape value, which terminates
48
+ // evaluation of the sequence immediately yielding a result. Traits for type T
49
+ // have the members:
50
+ // * type UnwrappedType - the type after removing wrapping from T (i.e. for
51
+ // TrySeq, T=StatusOr<U> yields UnwrappedType=U).
52
+ // * type WrappedType - the type after adding wrapping if it doesn't already
53
+ // exist (i.e. for TrySeq if T is not Status/StatusOr/void, then
54
+ // WrappedType=StatusOr<T>; if T is Status then WrappedType=Status (it's
55
+ // already wrapped!))
56
+ // * template <typename Next> void CallFactory(Next* next_factory, T&& value) -
57
+ // call promise factory next_factory with the result of unwrapping value, and
58
+ // return the resulting promise.
59
+ // * template <typename Result, typename RunNext> Poll<Result>
60
+ // CheckResultAndRunNext(T prior, RunNext run_next) - examine the value of
61
+ // prior, and decide to escape or continue. If escaping, return the final
62
+ // sequence value of type Poll<Result>. If continuing, return the value of
63
+ // run_next(std::move(prior)).
64
+ //
65
+ // A state contains the current promise, and the promise factory to turn the
66
+ // result of the current promise into the next state's promise. We play a shell
67
+ // game such that the prior state and our current promise are kept in a union,
68
+ // and the next promise factory is kept alongside in the state struct.
69
+ // Recursively this guarantees that the next functions get initialized once, and
70
+ // destroyed once, and don't need to be moved around in between, which avoids a
71
+ // potential O(n**2) loop of next factory moves had we used a variant of states
72
+ // here. The very first state does not have a prior state, and so that state has
73
+ // a partial specialization below. The final state does not have a next state;
74
+ // that state is inlined in BasicSeq since that was simpler to type.
75
+
76
+ namespace grpc_core {
77
+ namespace promise_detail {
78
+ template <template <typename> class Traits, typename P, typename... Fs>
79
+ struct SeqState;
80
+
81
+ template <template <typename> class Traits, typename P, typename F0>
82
+ struct SeqState<Traits, P, F0> {
83
+ using Promise0 = PromiseLike<P>;
84
+ using PromiseResult0 = typename Promise0::Result;
85
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
86
+ using NextFactory0 =
87
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
88
+ using Promise1 = typename NextFactory0::Promise;
89
+ using PromiseResult1 = typename Promise1::Result;
90
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
91
+ using Result = typename PromiseResultTraits1::WrappedType;
92
+ struct Running0 {
93
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
94
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
95
+ };
96
+ union {
97
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
98
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
99
+ };
100
+ enum class State : uint8_t { kState0, kState1 };
101
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
102
+
103
+ SeqState(P&& p, F0&& f0) noexcept {
104
+ Construct(&prior.current_promise, std::forward<P>(p));
105
+ Construct(&prior.next_factory, std::forward<F0>(f0));
106
+ }
107
+ ~SeqState() {
108
+ switch (state) {
109
+ case State::kState0:
110
+ Destruct(&prior.current_promise);
111
+ goto tail0;
112
+ case State::kState1:
113
+ Destruct(&current_promise);
114
+ return;
115
+ }
116
+ tail0:
117
+ Destruct(&prior.next_factory);
118
+ }
119
+ SeqState(const SeqState& other) noexcept : state(other.state) {
120
+ GPR_ASSERT(state == State::kState0);
121
+ Construct(&prior.current_promise, other.prior.current_promise);
122
+ Construct(&prior.next_factory, other.prior.next_factory);
123
+ }
124
+ SeqState& operator=(const SeqState& other) = delete;
125
+ SeqState(SeqState&& other) noexcept : state(other.state) {
126
+ switch (state) {
127
+ case State::kState0:
128
+ Construct(&prior.current_promise,
129
+ std::move(other.prior.current_promise));
130
+ goto tail0;
131
+ case State::kState1:
132
+ Construct(&current_promise, std::move(other.current_promise));
133
+ return;
134
+ }
135
+ tail0:
136
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
137
+ }
138
+ SeqState& operator=(SeqState&& other) = delete;
139
+ Poll<Result> PollOnce() {
140
+ switch (state) {
141
+ case State::kState0: {
142
+ if (grpc_trace_promise_primitives.enabled()) {
143
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/2", this);
144
+ }
145
+ auto result = prior.current_promise();
146
+ PromiseResult0* p = result.value_if_ready();
147
+ if (grpc_trace_promise_primitives.enabled()) {
148
+ gpr_log(
149
+ GPR_DEBUG, "seq[%p]: poll step 1/2 gets %s", this,
150
+ p != nullptr
151
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
152
+ : "pending");
153
+ }
154
+ if (p == nullptr) return Pending{};
155
+ if (!PromiseResultTraits0::IsOk(*p)) {
156
+ return PromiseResultTraits0::template ReturnValue<Result>(
157
+ std::move(*p));
158
+ }
159
+ Destruct(&prior.current_promise);
160
+ auto next_promise = PromiseResultTraits0::CallFactory(
161
+ &prior.next_factory, std::move(*p));
162
+ Destruct(&prior.next_factory);
163
+ Construct(&current_promise, std::move(next_promise));
164
+ state = State::kState1;
165
+ }
166
+ ABSL_FALLTHROUGH_INTENDED;
167
+ default:
168
+ case State::kState1: {
169
+ if (grpc_trace_promise_primitives.enabled()) {
170
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/2", this);
171
+ }
172
+ auto result = current_promise();
173
+ if (grpc_trace_promise_primitives.enabled()) {
174
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 2/2 gets %s", this,
175
+ result.ready() ? "ready" : "pending");
176
+ }
177
+ auto* p = result.value_if_ready();
178
+ if (p == nullptr) return Pending{};
179
+ return Result(std::move(*p));
180
+ }
181
+ }
182
+ }
183
+ };
184
+
185
+ template <template <typename> class Traits, typename P, typename F0,
186
+ typename F1>
187
+ struct SeqState<Traits, P, F0, F1> {
188
+ using Promise0 = PromiseLike<P>;
189
+ using PromiseResult0 = typename Promise0::Result;
190
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
191
+ using NextFactory0 =
192
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
193
+ using Promise1 = typename NextFactory0::Promise;
194
+ using PromiseResult1 = typename Promise1::Result;
195
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
196
+ using NextFactory1 =
197
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
198
+ using Promise2 = typename NextFactory1::Promise;
199
+ using PromiseResult2 = typename Promise2::Result;
200
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
201
+ using Result = typename PromiseResultTraits2::WrappedType;
202
+ struct Running0 {
203
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
204
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
205
+ };
206
+ struct Running1 {
207
+ union {
208
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
209
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
210
+ };
211
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
212
+ };
213
+ union {
214
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
215
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
216
+ };
217
+ enum class State : uint8_t { kState0, kState1, kState2 };
218
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
219
+
220
+ SeqState(P&& p, F0&& f0, F1&& f1) noexcept {
221
+ Construct(&prior.prior.current_promise, std::forward<P>(p));
222
+ Construct(&prior.prior.next_factory, std::forward<F0>(f0));
223
+ Construct(&prior.next_factory, std::forward<F1>(f1));
224
+ }
225
+ ~SeqState() {
226
+ switch (state) {
227
+ case State::kState0:
228
+ Destruct(&prior.prior.current_promise);
229
+ goto tail0;
230
+ case State::kState1:
231
+ Destruct(&prior.current_promise);
232
+ goto tail1;
233
+ case State::kState2:
234
+ Destruct(&current_promise);
235
+ return;
236
+ }
237
+ tail0:
238
+ Destruct(&prior.prior.next_factory);
239
+ tail1:
240
+ Destruct(&prior.next_factory);
241
+ }
242
+ SeqState(const SeqState& other) noexcept : state(other.state) {
243
+ GPR_ASSERT(state == State::kState0);
244
+ Construct(&prior.current_promise, other.prior.current_promise);
245
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
246
+ Construct(&prior.next_factory, other.prior.next_factory);
247
+ }
248
+ SeqState& operator=(const SeqState& other) = delete;
249
+ SeqState(SeqState&& other) noexcept : state(other.state) {
250
+ switch (state) {
251
+ case State::kState0:
252
+ Construct(&prior.prior.current_promise,
253
+ std::move(other.prior.prior.current_promise));
254
+ goto tail0;
255
+ case State::kState1:
256
+ Construct(&prior.current_promise,
257
+ std::move(other.prior.current_promise));
258
+ goto tail1;
259
+ case State::kState2:
260
+ Construct(&current_promise, std::move(other.current_promise));
261
+ return;
262
+ }
263
+ tail0:
264
+ Construct(&prior.prior.next_factory,
265
+ std::move(other.prior.prior.next_factory));
266
+ tail1:
267
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
268
+ }
269
+ SeqState& operator=(SeqState&& other) = delete;
270
+ Poll<Result> PollOnce() {
271
+ switch (state) {
272
+ case State::kState0: {
273
+ if (grpc_trace_promise_primitives.enabled()) {
274
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/3", this);
275
+ }
276
+ auto result = prior.prior.current_promise();
277
+ PromiseResult0* p = result.value_if_ready();
278
+ if (grpc_trace_promise_primitives.enabled()) {
279
+ gpr_log(
280
+ GPR_DEBUG, "seq[%p]: poll step 1/3 gets %s", this,
281
+ p != nullptr
282
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
283
+ : "pending");
284
+ }
285
+ if (p == nullptr) return Pending{};
286
+ if (!PromiseResultTraits0::IsOk(*p)) {
287
+ return PromiseResultTraits0::template ReturnValue<Result>(
288
+ std::move(*p));
289
+ }
290
+ Destruct(&prior.prior.current_promise);
291
+ auto next_promise = PromiseResultTraits0::CallFactory(
292
+ &prior.prior.next_factory, std::move(*p));
293
+ Destruct(&prior.prior.next_factory);
294
+ Construct(&prior.current_promise, std::move(next_promise));
295
+ state = State::kState1;
296
+ }
297
+ ABSL_FALLTHROUGH_INTENDED;
298
+ case State::kState1: {
299
+ if (grpc_trace_promise_primitives.enabled()) {
300
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/3", this);
301
+ }
302
+ auto result = prior.current_promise();
303
+ PromiseResult1* p = result.value_if_ready();
304
+ if (grpc_trace_promise_primitives.enabled()) {
305
+ gpr_log(
306
+ GPR_DEBUG, "seq[%p]: poll step 2/3 gets %s", this,
307
+ p != nullptr
308
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
309
+ : "pending");
310
+ }
311
+ if (p == nullptr) return Pending{};
312
+ if (!PromiseResultTraits1::IsOk(*p)) {
313
+ return PromiseResultTraits1::template ReturnValue<Result>(
314
+ std::move(*p));
315
+ }
316
+ Destruct(&prior.current_promise);
317
+ auto next_promise = PromiseResultTraits1::CallFactory(
318
+ &prior.next_factory, std::move(*p));
319
+ Destruct(&prior.next_factory);
320
+ Construct(&current_promise, std::move(next_promise));
321
+ state = State::kState2;
322
+ }
323
+ ABSL_FALLTHROUGH_INTENDED;
324
+ default:
325
+ case State::kState2: {
326
+ if (grpc_trace_promise_primitives.enabled()) {
327
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/3", this);
328
+ }
329
+ auto result = current_promise();
330
+ if (grpc_trace_promise_primitives.enabled()) {
331
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 3/3 gets %s", this,
332
+ result.ready() ? "ready" : "pending");
333
+ }
334
+ auto* p = result.value_if_ready();
335
+ if (p == nullptr) return Pending{};
336
+ return Result(std::move(*p));
337
+ }
338
+ }
339
+ }
340
+ };
341
+
342
+ template <template <typename> class Traits, typename P, typename F0,
343
+ typename F1, typename F2>
344
+ struct SeqState<Traits, P, F0, F1, F2> {
345
+ using Promise0 = PromiseLike<P>;
346
+ using PromiseResult0 = typename Promise0::Result;
347
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
348
+ using NextFactory0 =
349
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
350
+ using Promise1 = typename NextFactory0::Promise;
351
+ using PromiseResult1 = typename Promise1::Result;
352
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
353
+ using NextFactory1 =
354
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
355
+ using Promise2 = typename NextFactory1::Promise;
356
+ using PromiseResult2 = typename Promise2::Result;
357
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
358
+ using NextFactory2 =
359
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
360
+ using Promise3 = typename NextFactory2::Promise;
361
+ using PromiseResult3 = typename Promise3::Result;
362
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
363
+ using Result = typename PromiseResultTraits3::WrappedType;
364
+ struct Running0 {
365
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
366
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
367
+ };
368
+ struct Running1 {
369
+ union {
370
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
371
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
372
+ };
373
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
374
+ };
375
+ struct Running2 {
376
+ union {
377
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
378
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
379
+ };
380
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
381
+ };
382
+ union {
383
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
384
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
385
+ };
386
+ enum class State : uint8_t { kState0, kState1, kState2, kState3 };
387
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
388
+
389
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2) noexcept {
390
+ Construct(&prior.prior.prior.current_promise, std::forward<P>(p));
391
+ Construct(&prior.prior.prior.next_factory, std::forward<F0>(f0));
392
+ Construct(&prior.prior.next_factory, std::forward<F1>(f1));
393
+ Construct(&prior.next_factory, std::forward<F2>(f2));
394
+ }
395
+ ~SeqState() {
396
+ switch (state) {
397
+ case State::kState0:
398
+ Destruct(&prior.prior.prior.current_promise);
399
+ goto tail0;
400
+ case State::kState1:
401
+ Destruct(&prior.prior.current_promise);
402
+ goto tail1;
403
+ case State::kState2:
404
+ Destruct(&prior.current_promise);
405
+ goto tail2;
406
+ case State::kState3:
407
+ Destruct(&current_promise);
408
+ return;
409
+ }
410
+ tail0:
411
+ Destruct(&prior.prior.prior.next_factory);
412
+ tail1:
413
+ Destruct(&prior.prior.next_factory);
414
+ tail2:
415
+ Destruct(&prior.next_factory);
416
+ }
417
+ SeqState(const SeqState& other) noexcept : state(other.state) {
418
+ GPR_ASSERT(state == State::kState0);
419
+ Construct(&prior.current_promise, other.prior.current_promise);
420
+ Construct(&prior.prior.prior.next_factory,
421
+ other.prior.prior.prior.next_factory);
422
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
423
+ Construct(&prior.next_factory, other.prior.next_factory);
424
+ }
425
+ SeqState& operator=(const SeqState& other) = delete;
426
+ SeqState(SeqState&& other) noexcept : state(other.state) {
427
+ switch (state) {
428
+ case State::kState0:
429
+ Construct(&prior.prior.prior.current_promise,
430
+ std::move(other.prior.prior.prior.current_promise));
431
+ goto tail0;
432
+ case State::kState1:
433
+ Construct(&prior.prior.current_promise,
434
+ std::move(other.prior.prior.current_promise));
435
+ goto tail1;
436
+ case State::kState2:
437
+ Construct(&prior.current_promise,
438
+ std::move(other.prior.current_promise));
439
+ goto tail2;
440
+ case State::kState3:
441
+ Construct(&current_promise, std::move(other.current_promise));
442
+ return;
443
+ }
444
+ tail0:
445
+ Construct(&prior.prior.prior.next_factory,
446
+ std::move(other.prior.prior.prior.next_factory));
447
+ tail1:
448
+ Construct(&prior.prior.next_factory,
449
+ std::move(other.prior.prior.next_factory));
450
+ tail2:
451
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
452
+ }
453
+ SeqState& operator=(SeqState&& other) = delete;
454
+ Poll<Result> PollOnce() {
455
+ switch (state) {
456
+ case State::kState0: {
457
+ if (grpc_trace_promise_primitives.enabled()) {
458
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/4", this);
459
+ }
460
+ auto result = prior.prior.prior.current_promise();
461
+ PromiseResult0* p = result.value_if_ready();
462
+ if (grpc_trace_promise_primitives.enabled()) {
463
+ gpr_log(
464
+ GPR_DEBUG, "seq[%p]: poll step 1/4 gets %s", this,
465
+ p != nullptr
466
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
467
+ : "pending");
468
+ }
469
+ if (p == nullptr) return Pending{};
470
+ if (!PromiseResultTraits0::IsOk(*p)) {
471
+ return PromiseResultTraits0::template ReturnValue<Result>(
472
+ std::move(*p));
473
+ }
474
+ Destruct(&prior.prior.prior.current_promise);
475
+ auto next_promise = PromiseResultTraits0::CallFactory(
476
+ &prior.prior.prior.next_factory, std::move(*p));
477
+ Destruct(&prior.prior.prior.next_factory);
478
+ Construct(&prior.prior.current_promise, std::move(next_promise));
479
+ state = State::kState1;
480
+ }
481
+ ABSL_FALLTHROUGH_INTENDED;
482
+ case State::kState1: {
483
+ if (grpc_trace_promise_primitives.enabled()) {
484
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/4", this);
485
+ }
486
+ auto result = prior.prior.current_promise();
487
+ PromiseResult1* p = result.value_if_ready();
488
+ if (grpc_trace_promise_primitives.enabled()) {
489
+ gpr_log(
490
+ GPR_DEBUG, "seq[%p]: poll step 2/4 gets %s", this,
491
+ p != nullptr
492
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
493
+ : "pending");
494
+ }
495
+ if (p == nullptr) return Pending{};
496
+ if (!PromiseResultTraits1::IsOk(*p)) {
497
+ return PromiseResultTraits1::template ReturnValue<Result>(
498
+ std::move(*p));
499
+ }
500
+ Destruct(&prior.prior.current_promise);
501
+ auto next_promise = PromiseResultTraits1::CallFactory(
502
+ &prior.prior.next_factory, std::move(*p));
503
+ Destruct(&prior.prior.next_factory);
504
+ Construct(&prior.current_promise, std::move(next_promise));
505
+ state = State::kState2;
506
+ }
507
+ ABSL_FALLTHROUGH_INTENDED;
508
+ case State::kState2: {
509
+ if (grpc_trace_promise_primitives.enabled()) {
510
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/4", this);
511
+ }
512
+ auto result = prior.current_promise();
513
+ PromiseResult2* p = result.value_if_ready();
514
+ if (grpc_trace_promise_primitives.enabled()) {
515
+ gpr_log(
516
+ GPR_DEBUG, "seq[%p]: poll step 3/4 gets %s", this,
517
+ p != nullptr
518
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
519
+ : "pending");
520
+ }
521
+ if (p == nullptr) return Pending{};
522
+ if (!PromiseResultTraits2::IsOk(*p)) {
523
+ return PromiseResultTraits2::template ReturnValue<Result>(
524
+ std::move(*p));
525
+ }
526
+ Destruct(&prior.current_promise);
527
+ auto next_promise = PromiseResultTraits2::CallFactory(
528
+ &prior.next_factory, std::move(*p));
529
+ Destruct(&prior.next_factory);
530
+ Construct(&current_promise, std::move(next_promise));
531
+ state = State::kState3;
532
+ }
533
+ ABSL_FALLTHROUGH_INTENDED;
534
+ default:
535
+ case State::kState3: {
536
+ if (grpc_trace_promise_primitives.enabled()) {
537
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/4", this);
538
+ }
539
+ auto result = current_promise();
540
+ if (grpc_trace_promise_primitives.enabled()) {
541
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 4/4 gets %s", this,
542
+ result.ready() ? "ready" : "pending");
543
+ }
544
+ auto* p = result.value_if_ready();
545
+ if (p == nullptr) return Pending{};
546
+ return Result(std::move(*p));
547
+ }
548
+ }
549
+ }
550
+ };
551
+
552
+ template <template <typename> class Traits, typename P, typename F0,
553
+ typename F1, typename F2, typename F3>
554
+ struct SeqState<Traits, P, F0, F1, F2, F3> {
555
+ using Promise0 = PromiseLike<P>;
556
+ using PromiseResult0 = typename Promise0::Result;
557
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
558
+ using NextFactory0 =
559
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
560
+ using Promise1 = typename NextFactory0::Promise;
561
+ using PromiseResult1 = typename Promise1::Result;
562
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
563
+ using NextFactory1 =
564
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
565
+ using Promise2 = typename NextFactory1::Promise;
566
+ using PromiseResult2 = typename Promise2::Result;
567
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
568
+ using NextFactory2 =
569
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
570
+ using Promise3 = typename NextFactory2::Promise;
571
+ using PromiseResult3 = typename Promise3::Result;
572
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
573
+ using NextFactory3 =
574
+ OncePromiseFactory<typename PromiseResultTraits3::UnwrappedType, F3>;
575
+ using Promise4 = typename NextFactory3::Promise;
576
+ using PromiseResult4 = typename Promise4::Result;
577
+ using PromiseResultTraits4 = Traits<PromiseResult4>;
578
+ using Result = typename PromiseResultTraits4::WrappedType;
579
+ struct Running0 {
580
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
581
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
582
+ };
583
+ struct Running1 {
584
+ union {
585
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
586
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
587
+ };
588
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
589
+ };
590
+ struct Running2 {
591
+ union {
592
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
593
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
594
+ };
595
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
596
+ };
597
+ struct Running3 {
598
+ union {
599
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
600
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
601
+ };
602
+ GPR_NO_UNIQUE_ADDRESS NextFactory3 next_factory;
603
+ };
604
+ union {
605
+ GPR_NO_UNIQUE_ADDRESS Running3 prior;
606
+ GPR_NO_UNIQUE_ADDRESS Promise4 current_promise;
607
+ };
608
+ enum class State : uint8_t { kState0, kState1, kState2, kState3, kState4 };
609
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
610
+
611
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2, F3&& f3) noexcept {
612
+ Construct(&prior.prior.prior.prior.current_promise, std::forward<P>(p));
613
+ Construct(&prior.prior.prior.prior.next_factory, std::forward<F0>(f0));
614
+ Construct(&prior.prior.prior.next_factory, std::forward<F1>(f1));
615
+ Construct(&prior.prior.next_factory, std::forward<F2>(f2));
616
+ Construct(&prior.next_factory, std::forward<F3>(f3));
617
+ }
618
+ ~SeqState() {
619
+ switch (state) {
620
+ case State::kState0:
621
+ Destruct(&prior.prior.prior.prior.current_promise);
622
+ goto tail0;
623
+ case State::kState1:
624
+ Destruct(&prior.prior.prior.current_promise);
625
+ goto tail1;
626
+ case State::kState2:
627
+ Destruct(&prior.prior.current_promise);
628
+ goto tail2;
629
+ case State::kState3:
630
+ Destruct(&prior.current_promise);
631
+ goto tail3;
632
+ case State::kState4:
633
+ Destruct(&current_promise);
634
+ return;
635
+ }
636
+ tail0:
637
+ Destruct(&prior.prior.prior.prior.next_factory);
638
+ tail1:
639
+ Destruct(&prior.prior.prior.next_factory);
640
+ tail2:
641
+ Destruct(&prior.prior.next_factory);
642
+ tail3:
643
+ Destruct(&prior.next_factory);
644
+ }
645
+ SeqState(const SeqState& other) noexcept : state(other.state) {
646
+ GPR_ASSERT(state == State::kState0);
647
+ Construct(&prior.current_promise, other.prior.current_promise);
648
+ Construct(&prior.prior.prior.prior.next_factory,
649
+ other.prior.prior.prior.prior.next_factory);
650
+ Construct(&prior.prior.prior.next_factory,
651
+ other.prior.prior.prior.next_factory);
652
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
653
+ Construct(&prior.next_factory, other.prior.next_factory);
654
+ }
655
+ SeqState& operator=(const SeqState& other) = delete;
656
+ SeqState(SeqState&& other) noexcept : state(other.state) {
657
+ switch (state) {
658
+ case State::kState0:
659
+ Construct(&prior.prior.prior.prior.current_promise,
660
+ std::move(other.prior.prior.prior.prior.current_promise));
661
+ goto tail0;
662
+ case State::kState1:
663
+ Construct(&prior.prior.prior.current_promise,
664
+ std::move(other.prior.prior.prior.current_promise));
665
+ goto tail1;
666
+ case State::kState2:
667
+ Construct(&prior.prior.current_promise,
668
+ std::move(other.prior.prior.current_promise));
669
+ goto tail2;
670
+ case State::kState3:
671
+ Construct(&prior.current_promise,
672
+ std::move(other.prior.current_promise));
673
+ goto tail3;
674
+ case State::kState4:
675
+ Construct(&current_promise, std::move(other.current_promise));
676
+ return;
677
+ }
678
+ tail0:
679
+ Construct(&prior.prior.prior.prior.next_factory,
680
+ std::move(other.prior.prior.prior.prior.next_factory));
681
+ tail1:
682
+ Construct(&prior.prior.prior.next_factory,
683
+ std::move(other.prior.prior.prior.next_factory));
684
+ tail2:
685
+ Construct(&prior.prior.next_factory,
686
+ std::move(other.prior.prior.next_factory));
687
+ tail3:
688
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
689
+ }
690
+ SeqState& operator=(SeqState&& other) = delete;
691
+ Poll<Result> PollOnce() {
692
+ switch (state) {
693
+ case State::kState0: {
694
+ if (grpc_trace_promise_primitives.enabled()) {
695
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/5", this);
696
+ }
697
+ auto result = prior.prior.prior.prior.current_promise();
698
+ PromiseResult0* p = result.value_if_ready();
699
+ if (grpc_trace_promise_primitives.enabled()) {
700
+ gpr_log(
701
+ GPR_DEBUG, "seq[%p]: poll step 1/5 gets %s", this,
702
+ p != nullptr
703
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
704
+ : "pending");
705
+ }
706
+ if (p == nullptr) return Pending{};
707
+ if (!PromiseResultTraits0::IsOk(*p)) {
708
+ return PromiseResultTraits0::template ReturnValue<Result>(
709
+ std::move(*p));
710
+ }
711
+ Destruct(&prior.prior.prior.prior.current_promise);
712
+ auto next_promise = PromiseResultTraits0::CallFactory(
713
+ &prior.prior.prior.prior.next_factory, std::move(*p));
714
+ Destruct(&prior.prior.prior.prior.next_factory);
715
+ Construct(&prior.prior.prior.current_promise, std::move(next_promise));
716
+ state = State::kState1;
717
+ }
718
+ ABSL_FALLTHROUGH_INTENDED;
719
+ case State::kState1: {
720
+ if (grpc_trace_promise_primitives.enabled()) {
721
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/5", this);
722
+ }
723
+ auto result = prior.prior.prior.current_promise();
724
+ PromiseResult1* p = result.value_if_ready();
725
+ if (grpc_trace_promise_primitives.enabled()) {
726
+ gpr_log(
727
+ GPR_DEBUG, "seq[%p]: poll step 2/5 gets %s", this,
728
+ p != nullptr
729
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
730
+ : "pending");
731
+ }
732
+ if (p == nullptr) return Pending{};
733
+ if (!PromiseResultTraits1::IsOk(*p)) {
734
+ return PromiseResultTraits1::template ReturnValue<Result>(
735
+ std::move(*p));
736
+ }
737
+ Destruct(&prior.prior.prior.current_promise);
738
+ auto next_promise = PromiseResultTraits1::CallFactory(
739
+ &prior.prior.prior.next_factory, std::move(*p));
740
+ Destruct(&prior.prior.prior.next_factory);
741
+ Construct(&prior.prior.current_promise, std::move(next_promise));
742
+ state = State::kState2;
743
+ }
744
+ ABSL_FALLTHROUGH_INTENDED;
745
+ case State::kState2: {
746
+ if (grpc_trace_promise_primitives.enabled()) {
747
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/5", this);
748
+ }
749
+ auto result = prior.prior.current_promise();
750
+ PromiseResult2* p = result.value_if_ready();
751
+ if (grpc_trace_promise_primitives.enabled()) {
752
+ gpr_log(
753
+ GPR_DEBUG, "seq[%p]: poll step 3/5 gets %s", this,
754
+ p != nullptr
755
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
756
+ : "pending");
757
+ }
758
+ if (p == nullptr) return Pending{};
759
+ if (!PromiseResultTraits2::IsOk(*p)) {
760
+ return PromiseResultTraits2::template ReturnValue<Result>(
761
+ std::move(*p));
762
+ }
763
+ Destruct(&prior.prior.current_promise);
764
+ auto next_promise = PromiseResultTraits2::CallFactory(
765
+ &prior.prior.next_factory, std::move(*p));
766
+ Destruct(&prior.prior.next_factory);
767
+ Construct(&prior.current_promise, std::move(next_promise));
768
+ state = State::kState3;
769
+ }
770
+ ABSL_FALLTHROUGH_INTENDED;
771
+ case State::kState3: {
772
+ if (grpc_trace_promise_primitives.enabled()) {
773
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/5", this);
774
+ }
775
+ auto result = prior.current_promise();
776
+ PromiseResult3* p = result.value_if_ready();
777
+ if (grpc_trace_promise_primitives.enabled()) {
778
+ gpr_log(
779
+ GPR_DEBUG, "seq[%p]: poll step 4/5 gets %s", this,
780
+ p != nullptr
781
+ ? (PromiseResultTraits3::IsOk(*p) ? "ready" : "early-error")
782
+ : "pending");
783
+ }
784
+ if (p == nullptr) return Pending{};
785
+ if (!PromiseResultTraits3::IsOk(*p)) {
786
+ return PromiseResultTraits3::template ReturnValue<Result>(
787
+ std::move(*p));
788
+ }
789
+ Destruct(&prior.current_promise);
790
+ auto next_promise = PromiseResultTraits3::CallFactory(
791
+ &prior.next_factory, std::move(*p));
792
+ Destruct(&prior.next_factory);
793
+ Construct(&current_promise, std::move(next_promise));
794
+ state = State::kState4;
795
+ }
796
+ ABSL_FALLTHROUGH_INTENDED;
797
+ default:
798
+ case State::kState4: {
799
+ if (grpc_trace_promise_primitives.enabled()) {
800
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 5/5", this);
801
+ }
802
+ auto result = current_promise();
803
+ if (grpc_trace_promise_primitives.enabled()) {
804
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 5/5 gets %s", this,
805
+ result.ready() ? "ready" : "pending");
806
+ }
807
+ auto* p = result.value_if_ready();
808
+ if (p == nullptr) return Pending{};
809
+ return Result(std::move(*p));
810
+ }
811
+ }
812
+ }
813
+ };
814
+
815
+ template <template <typename> class Traits, typename P, typename F0,
816
+ typename F1, typename F2, typename F3, typename F4>
817
+ struct SeqState<Traits, P, F0, F1, F2, F3, F4> {
818
+ using Promise0 = PromiseLike<P>;
819
+ using PromiseResult0 = typename Promise0::Result;
820
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
821
+ using NextFactory0 =
822
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
823
+ using Promise1 = typename NextFactory0::Promise;
824
+ using PromiseResult1 = typename Promise1::Result;
825
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
826
+ using NextFactory1 =
827
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
828
+ using Promise2 = typename NextFactory1::Promise;
829
+ using PromiseResult2 = typename Promise2::Result;
830
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
831
+ using NextFactory2 =
832
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
833
+ using Promise3 = typename NextFactory2::Promise;
834
+ using PromiseResult3 = typename Promise3::Result;
835
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
836
+ using NextFactory3 =
837
+ OncePromiseFactory<typename PromiseResultTraits3::UnwrappedType, F3>;
838
+ using Promise4 = typename NextFactory3::Promise;
839
+ using PromiseResult4 = typename Promise4::Result;
840
+ using PromiseResultTraits4 = Traits<PromiseResult4>;
841
+ using NextFactory4 =
842
+ OncePromiseFactory<typename PromiseResultTraits4::UnwrappedType, F4>;
843
+ using Promise5 = typename NextFactory4::Promise;
844
+ using PromiseResult5 = typename Promise5::Result;
845
+ using PromiseResultTraits5 = Traits<PromiseResult5>;
846
+ using Result = typename PromiseResultTraits5::WrappedType;
847
+ struct Running0 {
848
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
849
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
850
+ };
851
+ struct Running1 {
852
+ union {
853
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
854
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
855
+ };
856
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
857
+ };
858
+ struct Running2 {
859
+ union {
860
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
861
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
862
+ };
863
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
864
+ };
865
+ struct Running3 {
866
+ union {
867
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
868
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
869
+ };
870
+ GPR_NO_UNIQUE_ADDRESS NextFactory3 next_factory;
871
+ };
872
+ struct Running4 {
873
+ union {
874
+ GPR_NO_UNIQUE_ADDRESS Running3 prior;
875
+ GPR_NO_UNIQUE_ADDRESS Promise4 current_promise;
876
+ };
877
+ GPR_NO_UNIQUE_ADDRESS NextFactory4 next_factory;
878
+ };
879
+ union {
880
+ GPR_NO_UNIQUE_ADDRESS Running4 prior;
881
+ GPR_NO_UNIQUE_ADDRESS Promise5 current_promise;
882
+ };
883
+ enum class State : uint8_t {
884
+ kState0,
885
+ kState1,
886
+ kState2,
887
+ kState3,
888
+ kState4,
889
+ kState5
890
+ };
891
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
892
+
893
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4) noexcept {
894
+ Construct(&prior.prior.prior.prior.prior.current_promise,
895
+ std::forward<P>(p));
896
+ Construct(&prior.prior.prior.prior.prior.next_factory,
897
+ std::forward<F0>(f0));
898
+ Construct(&prior.prior.prior.prior.next_factory, std::forward<F1>(f1));
899
+ Construct(&prior.prior.prior.next_factory, std::forward<F2>(f2));
900
+ Construct(&prior.prior.next_factory, std::forward<F3>(f3));
901
+ Construct(&prior.next_factory, std::forward<F4>(f4));
902
+ }
903
+ ~SeqState() {
904
+ switch (state) {
905
+ case State::kState0:
906
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
907
+ goto tail0;
908
+ case State::kState1:
909
+ Destruct(&prior.prior.prior.prior.current_promise);
910
+ goto tail1;
911
+ case State::kState2:
912
+ Destruct(&prior.prior.prior.current_promise);
913
+ goto tail2;
914
+ case State::kState3:
915
+ Destruct(&prior.prior.current_promise);
916
+ goto tail3;
917
+ case State::kState4:
918
+ Destruct(&prior.current_promise);
919
+ goto tail4;
920
+ case State::kState5:
921
+ Destruct(&current_promise);
922
+ return;
923
+ }
924
+ tail0:
925
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
926
+ tail1:
927
+ Destruct(&prior.prior.prior.prior.next_factory);
928
+ tail2:
929
+ Destruct(&prior.prior.prior.next_factory);
930
+ tail3:
931
+ Destruct(&prior.prior.next_factory);
932
+ tail4:
933
+ Destruct(&prior.next_factory);
934
+ }
935
+ SeqState(const SeqState& other) noexcept : state(other.state) {
936
+ GPR_ASSERT(state == State::kState0);
937
+ Construct(&prior.current_promise, other.prior.current_promise);
938
+ Construct(&prior.prior.prior.prior.prior.next_factory,
939
+ other.prior.prior.prior.prior.prior.next_factory);
940
+ Construct(&prior.prior.prior.prior.next_factory,
941
+ other.prior.prior.prior.prior.next_factory);
942
+ Construct(&prior.prior.prior.next_factory,
943
+ other.prior.prior.prior.next_factory);
944
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
945
+ Construct(&prior.next_factory, other.prior.next_factory);
946
+ }
947
+ SeqState& operator=(const SeqState& other) = delete;
948
+ SeqState(SeqState&& other) noexcept : state(other.state) {
949
+ switch (state) {
950
+ case State::kState0:
951
+ Construct(
952
+ &prior.prior.prior.prior.prior.current_promise,
953
+ std::move(other.prior.prior.prior.prior.prior.current_promise));
954
+ goto tail0;
955
+ case State::kState1:
956
+ Construct(&prior.prior.prior.prior.current_promise,
957
+ std::move(other.prior.prior.prior.prior.current_promise));
958
+ goto tail1;
959
+ case State::kState2:
960
+ Construct(&prior.prior.prior.current_promise,
961
+ std::move(other.prior.prior.prior.current_promise));
962
+ goto tail2;
963
+ case State::kState3:
964
+ Construct(&prior.prior.current_promise,
965
+ std::move(other.prior.prior.current_promise));
966
+ goto tail3;
967
+ case State::kState4:
968
+ Construct(&prior.current_promise,
969
+ std::move(other.prior.current_promise));
970
+ goto tail4;
971
+ case State::kState5:
972
+ Construct(&current_promise, std::move(other.current_promise));
973
+ return;
974
+ }
975
+ tail0:
976
+ Construct(&prior.prior.prior.prior.prior.next_factory,
977
+ std::move(other.prior.prior.prior.prior.prior.next_factory));
978
+ tail1:
979
+ Construct(&prior.prior.prior.prior.next_factory,
980
+ std::move(other.prior.prior.prior.prior.next_factory));
981
+ tail2:
982
+ Construct(&prior.prior.prior.next_factory,
983
+ std::move(other.prior.prior.prior.next_factory));
984
+ tail3:
985
+ Construct(&prior.prior.next_factory,
986
+ std::move(other.prior.prior.next_factory));
987
+ tail4:
988
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
989
+ }
990
+ SeqState& operator=(SeqState&& other) = delete;
991
+ Poll<Result> PollOnce() {
992
+ switch (state) {
993
+ case State::kState0: {
994
+ if (grpc_trace_promise_primitives.enabled()) {
995
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/6", this);
996
+ }
997
+ auto result = prior.prior.prior.prior.prior.current_promise();
998
+ PromiseResult0* p = result.value_if_ready();
999
+ if (grpc_trace_promise_primitives.enabled()) {
1000
+ gpr_log(
1001
+ GPR_DEBUG, "seq[%p]: poll step 1/6 gets %s", this,
1002
+ p != nullptr
1003
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
1004
+ : "pending");
1005
+ }
1006
+ if (p == nullptr) return Pending{};
1007
+ if (!PromiseResultTraits0::IsOk(*p)) {
1008
+ return PromiseResultTraits0::template ReturnValue<Result>(
1009
+ std::move(*p));
1010
+ }
1011
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
1012
+ auto next_promise = PromiseResultTraits0::CallFactory(
1013
+ &prior.prior.prior.prior.prior.next_factory, std::move(*p));
1014
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
1015
+ Construct(&prior.prior.prior.prior.current_promise,
1016
+ std::move(next_promise));
1017
+ state = State::kState1;
1018
+ }
1019
+ ABSL_FALLTHROUGH_INTENDED;
1020
+ case State::kState1: {
1021
+ if (grpc_trace_promise_primitives.enabled()) {
1022
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/6", this);
1023
+ }
1024
+ auto result = prior.prior.prior.prior.current_promise();
1025
+ PromiseResult1* p = result.value_if_ready();
1026
+ if (grpc_trace_promise_primitives.enabled()) {
1027
+ gpr_log(
1028
+ GPR_DEBUG, "seq[%p]: poll step 2/6 gets %s", this,
1029
+ p != nullptr
1030
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
1031
+ : "pending");
1032
+ }
1033
+ if (p == nullptr) return Pending{};
1034
+ if (!PromiseResultTraits1::IsOk(*p)) {
1035
+ return PromiseResultTraits1::template ReturnValue<Result>(
1036
+ std::move(*p));
1037
+ }
1038
+ Destruct(&prior.prior.prior.prior.current_promise);
1039
+ auto next_promise = PromiseResultTraits1::CallFactory(
1040
+ &prior.prior.prior.prior.next_factory, std::move(*p));
1041
+ Destruct(&prior.prior.prior.prior.next_factory);
1042
+ Construct(&prior.prior.prior.current_promise, std::move(next_promise));
1043
+ state = State::kState2;
1044
+ }
1045
+ ABSL_FALLTHROUGH_INTENDED;
1046
+ case State::kState2: {
1047
+ if (grpc_trace_promise_primitives.enabled()) {
1048
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/6", this);
1049
+ }
1050
+ auto result = prior.prior.prior.current_promise();
1051
+ PromiseResult2* p = result.value_if_ready();
1052
+ if (grpc_trace_promise_primitives.enabled()) {
1053
+ gpr_log(
1054
+ GPR_DEBUG, "seq[%p]: poll step 3/6 gets %s", this,
1055
+ p != nullptr
1056
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
1057
+ : "pending");
1058
+ }
1059
+ if (p == nullptr) return Pending{};
1060
+ if (!PromiseResultTraits2::IsOk(*p)) {
1061
+ return PromiseResultTraits2::template ReturnValue<Result>(
1062
+ std::move(*p));
1063
+ }
1064
+ Destruct(&prior.prior.prior.current_promise);
1065
+ auto next_promise = PromiseResultTraits2::CallFactory(
1066
+ &prior.prior.prior.next_factory, std::move(*p));
1067
+ Destruct(&prior.prior.prior.next_factory);
1068
+ Construct(&prior.prior.current_promise, std::move(next_promise));
1069
+ state = State::kState3;
1070
+ }
1071
+ ABSL_FALLTHROUGH_INTENDED;
1072
+ case State::kState3: {
1073
+ if (grpc_trace_promise_primitives.enabled()) {
1074
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/6", this);
1075
+ }
1076
+ auto result = prior.prior.current_promise();
1077
+ PromiseResult3* p = result.value_if_ready();
1078
+ if (grpc_trace_promise_primitives.enabled()) {
1079
+ gpr_log(
1080
+ GPR_DEBUG, "seq[%p]: poll step 4/6 gets %s", this,
1081
+ p != nullptr
1082
+ ? (PromiseResultTraits3::IsOk(*p) ? "ready" : "early-error")
1083
+ : "pending");
1084
+ }
1085
+ if (p == nullptr) return Pending{};
1086
+ if (!PromiseResultTraits3::IsOk(*p)) {
1087
+ return PromiseResultTraits3::template ReturnValue<Result>(
1088
+ std::move(*p));
1089
+ }
1090
+ Destruct(&prior.prior.current_promise);
1091
+ auto next_promise = PromiseResultTraits3::CallFactory(
1092
+ &prior.prior.next_factory, std::move(*p));
1093
+ Destruct(&prior.prior.next_factory);
1094
+ Construct(&prior.current_promise, std::move(next_promise));
1095
+ state = State::kState4;
1096
+ }
1097
+ ABSL_FALLTHROUGH_INTENDED;
1098
+ case State::kState4: {
1099
+ if (grpc_trace_promise_primitives.enabled()) {
1100
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 5/6", this);
1101
+ }
1102
+ auto result = prior.current_promise();
1103
+ PromiseResult4* p = result.value_if_ready();
1104
+ if (grpc_trace_promise_primitives.enabled()) {
1105
+ gpr_log(
1106
+ GPR_DEBUG, "seq[%p]: poll step 5/6 gets %s", this,
1107
+ p != nullptr
1108
+ ? (PromiseResultTraits4::IsOk(*p) ? "ready" : "early-error")
1109
+ : "pending");
1110
+ }
1111
+ if (p == nullptr) return Pending{};
1112
+ if (!PromiseResultTraits4::IsOk(*p)) {
1113
+ return PromiseResultTraits4::template ReturnValue<Result>(
1114
+ std::move(*p));
1115
+ }
1116
+ Destruct(&prior.current_promise);
1117
+ auto next_promise = PromiseResultTraits4::CallFactory(
1118
+ &prior.next_factory, std::move(*p));
1119
+ Destruct(&prior.next_factory);
1120
+ Construct(&current_promise, std::move(next_promise));
1121
+ state = State::kState5;
1122
+ }
1123
+ ABSL_FALLTHROUGH_INTENDED;
1124
+ default:
1125
+ case State::kState5: {
1126
+ if (grpc_trace_promise_primitives.enabled()) {
1127
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 6/6", this);
1128
+ }
1129
+ auto result = current_promise();
1130
+ if (grpc_trace_promise_primitives.enabled()) {
1131
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 6/6 gets %s", this,
1132
+ result.ready() ? "ready" : "pending");
1133
+ }
1134
+ auto* p = result.value_if_ready();
1135
+ if (p == nullptr) return Pending{};
1136
+ return Result(std::move(*p));
1137
+ }
1138
+ }
1139
+ }
1140
+ };
1141
+
1142
+ template <template <typename> class Traits, typename P, typename F0,
1143
+ typename F1, typename F2, typename F3, typename F4, typename F5>
1144
+ struct SeqState<Traits, P, F0, F1, F2, F3, F4, F5> {
1145
+ using Promise0 = PromiseLike<P>;
1146
+ using PromiseResult0 = typename Promise0::Result;
1147
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
1148
+ using NextFactory0 =
1149
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
1150
+ using Promise1 = typename NextFactory0::Promise;
1151
+ using PromiseResult1 = typename Promise1::Result;
1152
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
1153
+ using NextFactory1 =
1154
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
1155
+ using Promise2 = typename NextFactory1::Promise;
1156
+ using PromiseResult2 = typename Promise2::Result;
1157
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
1158
+ using NextFactory2 =
1159
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
1160
+ using Promise3 = typename NextFactory2::Promise;
1161
+ using PromiseResult3 = typename Promise3::Result;
1162
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
1163
+ using NextFactory3 =
1164
+ OncePromiseFactory<typename PromiseResultTraits3::UnwrappedType, F3>;
1165
+ using Promise4 = typename NextFactory3::Promise;
1166
+ using PromiseResult4 = typename Promise4::Result;
1167
+ using PromiseResultTraits4 = Traits<PromiseResult4>;
1168
+ using NextFactory4 =
1169
+ OncePromiseFactory<typename PromiseResultTraits4::UnwrappedType, F4>;
1170
+ using Promise5 = typename NextFactory4::Promise;
1171
+ using PromiseResult5 = typename Promise5::Result;
1172
+ using PromiseResultTraits5 = Traits<PromiseResult5>;
1173
+ using NextFactory5 =
1174
+ OncePromiseFactory<typename PromiseResultTraits5::UnwrappedType, F5>;
1175
+ using Promise6 = typename NextFactory5::Promise;
1176
+ using PromiseResult6 = typename Promise6::Result;
1177
+ using PromiseResultTraits6 = Traits<PromiseResult6>;
1178
+ using Result = typename PromiseResultTraits6::WrappedType;
1179
+ struct Running0 {
1180
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
1181
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
1182
+ };
1183
+ struct Running1 {
1184
+ union {
1185
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
1186
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
1187
+ };
1188
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
1189
+ };
1190
+ struct Running2 {
1191
+ union {
1192
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
1193
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
1194
+ };
1195
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
1196
+ };
1197
+ struct Running3 {
1198
+ union {
1199
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
1200
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
1201
+ };
1202
+ GPR_NO_UNIQUE_ADDRESS NextFactory3 next_factory;
1203
+ };
1204
+ struct Running4 {
1205
+ union {
1206
+ GPR_NO_UNIQUE_ADDRESS Running3 prior;
1207
+ GPR_NO_UNIQUE_ADDRESS Promise4 current_promise;
1208
+ };
1209
+ GPR_NO_UNIQUE_ADDRESS NextFactory4 next_factory;
1210
+ };
1211
+ struct Running5 {
1212
+ union {
1213
+ GPR_NO_UNIQUE_ADDRESS Running4 prior;
1214
+ GPR_NO_UNIQUE_ADDRESS Promise5 current_promise;
1215
+ };
1216
+ GPR_NO_UNIQUE_ADDRESS NextFactory5 next_factory;
1217
+ };
1218
+ union {
1219
+ GPR_NO_UNIQUE_ADDRESS Running5 prior;
1220
+ GPR_NO_UNIQUE_ADDRESS Promise6 current_promise;
1221
+ };
1222
+ enum class State : uint8_t {
1223
+ kState0,
1224
+ kState1,
1225
+ kState2,
1226
+ kState3,
1227
+ kState4,
1228
+ kState5,
1229
+ kState6
1230
+ };
1231
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
1232
+
1233
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4,
1234
+ F5&& f5) noexcept {
1235
+ Construct(&prior.prior.prior.prior.prior.prior.current_promise,
1236
+ std::forward<P>(p));
1237
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
1238
+ std::forward<F0>(f0));
1239
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1240
+ std::forward<F1>(f1));
1241
+ Construct(&prior.prior.prior.prior.next_factory, std::forward<F2>(f2));
1242
+ Construct(&prior.prior.prior.next_factory, std::forward<F3>(f3));
1243
+ Construct(&prior.prior.next_factory, std::forward<F4>(f4));
1244
+ Construct(&prior.next_factory, std::forward<F5>(f5));
1245
+ }
1246
+ ~SeqState() {
1247
+ switch (state) {
1248
+ case State::kState0:
1249
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
1250
+ goto tail0;
1251
+ case State::kState1:
1252
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
1253
+ goto tail1;
1254
+ case State::kState2:
1255
+ Destruct(&prior.prior.prior.prior.current_promise);
1256
+ goto tail2;
1257
+ case State::kState3:
1258
+ Destruct(&prior.prior.prior.current_promise);
1259
+ goto tail3;
1260
+ case State::kState4:
1261
+ Destruct(&prior.prior.current_promise);
1262
+ goto tail4;
1263
+ case State::kState5:
1264
+ Destruct(&prior.current_promise);
1265
+ goto tail5;
1266
+ case State::kState6:
1267
+ Destruct(&current_promise);
1268
+ return;
1269
+ }
1270
+ tail0:
1271
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
1272
+ tail1:
1273
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
1274
+ tail2:
1275
+ Destruct(&prior.prior.prior.prior.next_factory);
1276
+ tail3:
1277
+ Destruct(&prior.prior.prior.next_factory);
1278
+ tail4:
1279
+ Destruct(&prior.prior.next_factory);
1280
+ tail5:
1281
+ Destruct(&prior.next_factory);
1282
+ }
1283
+ SeqState(const SeqState& other) noexcept : state(other.state) {
1284
+ GPR_ASSERT(state == State::kState0);
1285
+ Construct(&prior.current_promise, other.prior.current_promise);
1286
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
1287
+ other.prior.prior.prior.prior.prior.prior.next_factory);
1288
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1289
+ other.prior.prior.prior.prior.prior.next_factory);
1290
+ Construct(&prior.prior.prior.prior.next_factory,
1291
+ other.prior.prior.prior.prior.next_factory);
1292
+ Construct(&prior.prior.prior.next_factory,
1293
+ other.prior.prior.prior.next_factory);
1294
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
1295
+ Construct(&prior.next_factory, other.prior.next_factory);
1296
+ }
1297
+ SeqState& operator=(const SeqState& other) = delete;
1298
+ SeqState(SeqState&& other) noexcept : state(other.state) {
1299
+ switch (state) {
1300
+ case State::kState0:
1301
+ Construct(
1302
+ &prior.prior.prior.prior.prior.prior.current_promise,
1303
+ std::move(
1304
+ other.prior.prior.prior.prior.prior.prior.current_promise));
1305
+ goto tail0;
1306
+ case State::kState1:
1307
+ Construct(
1308
+ &prior.prior.prior.prior.prior.current_promise,
1309
+ std::move(other.prior.prior.prior.prior.prior.current_promise));
1310
+ goto tail1;
1311
+ case State::kState2:
1312
+ Construct(&prior.prior.prior.prior.current_promise,
1313
+ std::move(other.prior.prior.prior.prior.current_promise));
1314
+ goto tail2;
1315
+ case State::kState3:
1316
+ Construct(&prior.prior.prior.current_promise,
1317
+ std::move(other.prior.prior.prior.current_promise));
1318
+ goto tail3;
1319
+ case State::kState4:
1320
+ Construct(&prior.prior.current_promise,
1321
+ std::move(other.prior.prior.current_promise));
1322
+ goto tail4;
1323
+ case State::kState5:
1324
+ Construct(&prior.current_promise,
1325
+ std::move(other.prior.current_promise));
1326
+ goto tail5;
1327
+ case State::kState6:
1328
+ Construct(&current_promise, std::move(other.current_promise));
1329
+ return;
1330
+ }
1331
+ tail0:
1332
+ Construct(
1333
+ &prior.prior.prior.prior.prior.prior.next_factory,
1334
+ std::move(other.prior.prior.prior.prior.prior.prior.next_factory));
1335
+ tail1:
1336
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1337
+ std::move(other.prior.prior.prior.prior.prior.next_factory));
1338
+ tail2:
1339
+ Construct(&prior.prior.prior.prior.next_factory,
1340
+ std::move(other.prior.prior.prior.prior.next_factory));
1341
+ tail3:
1342
+ Construct(&prior.prior.prior.next_factory,
1343
+ std::move(other.prior.prior.prior.next_factory));
1344
+ tail4:
1345
+ Construct(&prior.prior.next_factory,
1346
+ std::move(other.prior.prior.next_factory));
1347
+ tail5:
1348
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
1349
+ }
1350
+ SeqState& operator=(SeqState&& other) = delete;
1351
+ Poll<Result> PollOnce() {
1352
+ switch (state) {
1353
+ case State::kState0: {
1354
+ if (grpc_trace_promise_primitives.enabled()) {
1355
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/7", this);
1356
+ }
1357
+ auto result = prior.prior.prior.prior.prior.prior.current_promise();
1358
+ PromiseResult0* p = result.value_if_ready();
1359
+ if (grpc_trace_promise_primitives.enabled()) {
1360
+ gpr_log(
1361
+ GPR_DEBUG, "seq[%p]: poll step 1/7 gets %s", this,
1362
+ p != nullptr
1363
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
1364
+ : "pending");
1365
+ }
1366
+ if (p == nullptr) return Pending{};
1367
+ if (!PromiseResultTraits0::IsOk(*p)) {
1368
+ return PromiseResultTraits0::template ReturnValue<Result>(
1369
+ std::move(*p));
1370
+ }
1371
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
1372
+ auto next_promise = PromiseResultTraits0::CallFactory(
1373
+ &prior.prior.prior.prior.prior.prior.next_factory, std::move(*p));
1374
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
1375
+ Construct(&prior.prior.prior.prior.prior.current_promise,
1376
+ std::move(next_promise));
1377
+ state = State::kState1;
1378
+ }
1379
+ ABSL_FALLTHROUGH_INTENDED;
1380
+ case State::kState1: {
1381
+ if (grpc_trace_promise_primitives.enabled()) {
1382
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/7", this);
1383
+ }
1384
+ auto result = prior.prior.prior.prior.prior.current_promise();
1385
+ PromiseResult1* p = result.value_if_ready();
1386
+ if (grpc_trace_promise_primitives.enabled()) {
1387
+ gpr_log(
1388
+ GPR_DEBUG, "seq[%p]: poll step 2/7 gets %s", this,
1389
+ p != nullptr
1390
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
1391
+ : "pending");
1392
+ }
1393
+ if (p == nullptr) return Pending{};
1394
+ if (!PromiseResultTraits1::IsOk(*p)) {
1395
+ return PromiseResultTraits1::template ReturnValue<Result>(
1396
+ std::move(*p));
1397
+ }
1398
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
1399
+ auto next_promise = PromiseResultTraits1::CallFactory(
1400
+ &prior.prior.prior.prior.prior.next_factory, std::move(*p));
1401
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
1402
+ Construct(&prior.prior.prior.prior.current_promise,
1403
+ std::move(next_promise));
1404
+ state = State::kState2;
1405
+ }
1406
+ ABSL_FALLTHROUGH_INTENDED;
1407
+ case State::kState2: {
1408
+ if (grpc_trace_promise_primitives.enabled()) {
1409
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/7", this);
1410
+ }
1411
+ auto result = prior.prior.prior.prior.current_promise();
1412
+ PromiseResult2* p = result.value_if_ready();
1413
+ if (grpc_trace_promise_primitives.enabled()) {
1414
+ gpr_log(
1415
+ GPR_DEBUG, "seq[%p]: poll step 3/7 gets %s", this,
1416
+ p != nullptr
1417
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
1418
+ : "pending");
1419
+ }
1420
+ if (p == nullptr) return Pending{};
1421
+ if (!PromiseResultTraits2::IsOk(*p)) {
1422
+ return PromiseResultTraits2::template ReturnValue<Result>(
1423
+ std::move(*p));
1424
+ }
1425
+ Destruct(&prior.prior.prior.prior.current_promise);
1426
+ auto next_promise = PromiseResultTraits2::CallFactory(
1427
+ &prior.prior.prior.prior.next_factory, std::move(*p));
1428
+ Destruct(&prior.prior.prior.prior.next_factory);
1429
+ Construct(&prior.prior.prior.current_promise, std::move(next_promise));
1430
+ state = State::kState3;
1431
+ }
1432
+ ABSL_FALLTHROUGH_INTENDED;
1433
+ case State::kState3: {
1434
+ if (grpc_trace_promise_primitives.enabled()) {
1435
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/7", this);
1436
+ }
1437
+ auto result = prior.prior.prior.current_promise();
1438
+ PromiseResult3* p = result.value_if_ready();
1439
+ if (grpc_trace_promise_primitives.enabled()) {
1440
+ gpr_log(
1441
+ GPR_DEBUG, "seq[%p]: poll step 4/7 gets %s", this,
1442
+ p != nullptr
1443
+ ? (PromiseResultTraits3::IsOk(*p) ? "ready" : "early-error")
1444
+ : "pending");
1445
+ }
1446
+ if (p == nullptr) return Pending{};
1447
+ if (!PromiseResultTraits3::IsOk(*p)) {
1448
+ return PromiseResultTraits3::template ReturnValue<Result>(
1449
+ std::move(*p));
1450
+ }
1451
+ Destruct(&prior.prior.prior.current_promise);
1452
+ auto next_promise = PromiseResultTraits3::CallFactory(
1453
+ &prior.prior.prior.next_factory, std::move(*p));
1454
+ Destruct(&prior.prior.prior.next_factory);
1455
+ Construct(&prior.prior.current_promise, std::move(next_promise));
1456
+ state = State::kState4;
1457
+ }
1458
+ ABSL_FALLTHROUGH_INTENDED;
1459
+ case State::kState4: {
1460
+ if (grpc_trace_promise_primitives.enabled()) {
1461
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 5/7", this);
1462
+ }
1463
+ auto result = prior.prior.current_promise();
1464
+ PromiseResult4* p = result.value_if_ready();
1465
+ if (grpc_trace_promise_primitives.enabled()) {
1466
+ gpr_log(
1467
+ GPR_DEBUG, "seq[%p]: poll step 5/7 gets %s", this,
1468
+ p != nullptr
1469
+ ? (PromiseResultTraits4::IsOk(*p) ? "ready" : "early-error")
1470
+ : "pending");
1471
+ }
1472
+ if (p == nullptr) return Pending{};
1473
+ if (!PromiseResultTraits4::IsOk(*p)) {
1474
+ return PromiseResultTraits4::template ReturnValue<Result>(
1475
+ std::move(*p));
1476
+ }
1477
+ Destruct(&prior.prior.current_promise);
1478
+ auto next_promise = PromiseResultTraits4::CallFactory(
1479
+ &prior.prior.next_factory, std::move(*p));
1480
+ Destruct(&prior.prior.next_factory);
1481
+ Construct(&prior.current_promise, std::move(next_promise));
1482
+ state = State::kState5;
1483
+ }
1484
+ ABSL_FALLTHROUGH_INTENDED;
1485
+ case State::kState5: {
1486
+ if (grpc_trace_promise_primitives.enabled()) {
1487
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 6/7", this);
1488
+ }
1489
+ auto result = prior.current_promise();
1490
+ PromiseResult5* p = result.value_if_ready();
1491
+ if (grpc_trace_promise_primitives.enabled()) {
1492
+ gpr_log(
1493
+ GPR_DEBUG, "seq[%p]: poll step 6/7 gets %s", this,
1494
+ p != nullptr
1495
+ ? (PromiseResultTraits5::IsOk(*p) ? "ready" : "early-error")
1496
+ : "pending");
1497
+ }
1498
+ if (p == nullptr) return Pending{};
1499
+ if (!PromiseResultTraits5::IsOk(*p)) {
1500
+ return PromiseResultTraits5::template ReturnValue<Result>(
1501
+ std::move(*p));
1502
+ }
1503
+ Destruct(&prior.current_promise);
1504
+ auto next_promise = PromiseResultTraits5::CallFactory(
1505
+ &prior.next_factory, std::move(*p));
1506
+ Destruct(&prior.next_factory);
1507
+ Construct(&current_promise, std::move(next_promise));
1508
+ state = State::kState6;
1509
+ }
1510
+ ABSL_FALLTHROUGH_INTENDED;
1511
+ default:
1512
+ case State::kState6: {
1513
+ if (grpc_trace_promise_primitives.enabled()) {
1514
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 7/7", this);
1515
+ }
1516
+ auto result = current_promise();
1517
+ if (grpc_trace_promise_primitives.enabled()) {
1518
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 7/7 gets %s", this,
1519
+ result.ready() ? "ready" : "pending");
1520
+ }
1521
+ auto* p = result.value_if_ready();
1522
+ if (p == nullptr) return Pending{};
1523
+ return Result(std::move(*p));
1524
+ }
1525
+ }
1526
+ }
1527
+ };
1528
+
1529
+ template <template <typename> class Traits, typename P, typename F0,
1530
+ typename F1, typename F2, typename F3, typename F4, typename F5,
1531
+ typename F6>
1532
+ struct SeqState<Traits, P, F0, F1, F2, F3, F4, F5, F6> {
1533
+ using Promise0 = PromiseLike<P>;
1534
+ using PromiseResult0 = typename Promise0::Result;
1535
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
1536
+ using NextFactory0 =
1537
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
1538
+ using Promise1 = typename NextFactory0::Promise;
1539
+ using PromiseResult1 = typename Promise1::Result;
1540
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
1541
+ using NextFactory1 =
1542
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
1543
+ using Promise2 = typename NextFactory1::Promise;
1544
+ using PromiseResult2 = typename Promise2::Result;
1545
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
1546
+ using NextFactory2 =
1547
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
1548
+ using Promise3 = typename NextFactory2::Promise;
1549
+ using PromiseResult3 = typename Promise3::Result;
1550
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
1551
+ using NextFactory3 =
1552
+ OncePromiseFactory<typename PromiseResultTraits3::UnwrappedType, F3>;
1553
+ using Promise4 = typename NextFactory3::Promise;
1554
+ using PromiseResult4 = typename Promise4::Result;
1555
+ using PromiseResultTraits4 = Traits<PromiseResult4>;
1556
+ using NextFactory4 =
1557
+ OncePromiseFactory<typename PromiseResultTraits4::UnwrappedType, F4>;
1558
+ using Promise5 = typename NextFactory4::Promise;
1559
+ using PromiseResult5 = typename Promise5::Result;
1560
+ using PromiseResultTraits5 = Traits<PromiseResult5>;
1561
+ using NextFactory5 =
1562
+ OncePromiseFactory<typename PromiseResultTraits5::UnwrappedType, F5>;
1563
+ using Promise6 = typename NextFactory5::Promise;
1564
+ using PromiseResult6 = typename Promise6::Result;
1565
+ using PromiseResultTraits6 = Traits<PromiseResult6>;
1566
+ using NextFactory6 =
1567
+ OncePromiseFactory<typename PromiseResultTraits6::UnwrappedType, F6>;
1568
+ using Promise7 = typename NextFactory6::Promise;
1569
+ using PromiseResult7 = typename Promise7::Result;
1570
+ using PromiseResultTraits7 = Traits<PromiseResult7>;
1571
+ using Result = typename PromiseResultTraits7::WrappedType;
1572
+ struct Running0 {
1573
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
1574
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
1575
+ };
1576
+ struct Running1 {
1577
+ union {
1578
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
1579
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
1580
+ };
1581
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
1582
+ };
1583
+ struct Running2 {
1584
+ union {
1585
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
1586
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
1587
+ };
1588
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
1589
+ };
1590
+ struct Running3 {
1591
+ union {
1592
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
1593
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
1594
+ };
1595
+ GPR_NO_UNIQUE_ADDRESS NextFactory3 next_factory;
1596
+ };
1597
+ struct Running4 {
1598
+ union {
1599
+ GPR_NO_UNIQUE_ADDRESS Running3 prior;
1600
+ GPR_NO_UNIQUE_ADDRESS Promise4 current_promise;
1601
+ };
1602
+ GPR_NO_UNIQUE_ADDRESS NextFactory4 next_factory;
1603
+ };
1604
+ struct Running5 {
1605
+ union {
1606
+ GPR_NO_UNIQUE_ADDRESS Running4 prior;
1607
+ GPR_NO_UNIQUE_ADDRESS Promise5 current_promise;
1608
+ };
1609
+ GPR_NO_UNIQUE_ADDRESS NextFactory5 next_factory;
1610
+ };
1611
+ struct Running6 {
1612
+ union {
1613
+ GPR_NO_UNIQUE_ADDRESS Running5 prior;
1614
+ GPR_NO_UNIQUE_ADDRESS Promise6 current_promise;
1615
+ };
1616
+ GPR_NO_UNIQUE_ADDRESS NextFactory6 next_factory;
1617
+ };
1618
+ union {
1619
+ GPR_NO_UNIQUE_ADDRESS Running6 prior;
1620
+ GPR_NO_UNIQUE_ADDRESS Promise7 current_promise;
1621
+ };
1622
+ enum class State : uint8_t {
1623
+ kState0,
1624
+ kState1,
1625
+ kState2,
1626
+ kState3,
1627
+ kState4,
1628
+ kState5,
1629
+ kState6,
1630
+ kState7
1631
+ };
1632
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
1633
+
1634
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, F5&& f5,
1635
+ F6&& f6) noexcept {
1636
+ Construct(&prior.prior.prior.prior.prior.prior.prior.current_promise,
1637
+ std::forward<P>(p));
1638
+ Construct(&prior.prior.prior.prior.prior.prior.prior.next_factory,
1639
+ std::forward<F0>(f0));
1640
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
1641
+ std::forward<F1>(f1));
1642
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1643
+ std::forward<F2>(f2));
1644
+ Construct(&prior.prior.prior.prior.next_factory, std::forward<F3>(f3));
1645
+ Construct(&prior.prior.prior.next_factory, std::forward<F4>(f4));
1646
+ Construct(&prior.prior.next_factory, std::forward<F5>(f5));
1647
+ Construct(&prior.next_factory, std::forward<F6>(f6));
1648
+ }
1649
+ ~SeqState() {
1650
+ switch (state) {
1651
+ case State::kState0:
1652
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.current_promise);
1653
+ goto tail0;
1654
+ case State::kState1:
1655
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
1656
+ goto tail1;
1657
+ case State::kState2:
1658
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
1659
+ goto tail2;
1660
+ case State::kState3:
1661
+ Destruct(&prior.prior.prior.prior.current_promise);
1662
+ goto tail3;
1663
+ case State::kState4:
1664
+ Destruct(&prior.prior.prior.current_promise);
1665
+ goto tail4;
1666
+ case State::kState5:
1667
+ Destruct(&prior.prior.current_promise);
1668
+ goto tail5;
1669
+ case State::kState6:
1670
+ Destruct(&prior.current_promise);
1671
+ goto tail6;
1672
+ case State::kState7:
1673
+ Destruct(&current_promise);
1674
+ return;
1675
+ }
1676
+ tail0:
1677
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.next_factory);
1678
+ tail1:
1679
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
1680
+ tail2:
1681
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
1682
+ tail3:
1683
+ Destruct(&prior.prior.prior.prior.next_factory);
1684
+ tail4:
1685
+ Destruct(&prior.prior.prior.next_factory);
1686
+ tail5:
1687
+ Destruct(&prior.prior.next_factory);
1688
+ tail6:
1689
+ Destruct(&prior.next_factory);
1690
+ }
1691
+ SeqState(const SeqState& other) noexcept : state(other.state) {
1692
+ GPR_ASSERT(state == State::kState0);
1693
+ Construct(&prior.current_promise, other.prior.current_promise);
1694
+ Construct(&prior.prior.prior.prior.prior.prior.prior.next_factory,
1695
+ other.prior.prior.prior.prior.prior.prior.prior.next_factory);
1696
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
1697
+ other.prior.prior.prior.prior.prior.prior.next_factory);
1698
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1699
+ other.prior.prior.prior.prior.prior.next_factory);
1700
+ Construct(&prior.prior.prior.prior.next_factory,
1701
+ other.prior.prior.prior.prior.next_factory);
1702
+ Construct(&prior.prior.prior.next_factory,
1703
+ other.prior.prior.prior.next_factory);
1704
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
1705
+ Construct(&prior.next_factory, other.prior.next_factory);
1706
+ }
1707
+ SeqState& operator=(const SeqState& other) = delete;
1708
+ SeqState(SeqState&& other) noexcept : state(other.state) {
1709
+ switch (state) {
1710
+ case State::kState0:
1711
+ Construct(&prior.prior.prior.prior.prior.prior.prior.current_promise,
1712
+ std::move(other.prior.prior.prior.prior.prior.prior.prior
1713
+ .current_promise));
1714
+ goto tail0;
1715
+ case State::kState1:
1716
+ Construct(
1717
+ &prior.prior.prior.prior.prior.prior.current_promise,
1718
+ std::move(
1719
+ other.prior.prior.prior.prior.prior.prior.current_promise));
1720
+ goto tail1;
1721
+ case State::kState2:
1722
+ Construct(
1723
+ &prior.prior.prior.prior.prior.current_promise,
1724
+ std::move(other.prior.prior.prior.prior.prior.current_promise));
1725
+ goto tail2;
1726
+ case State::kState3:
1727
+ Construct(&prior.prior.prior.prior.current_promise,
1728
+ std::move(other.prior.prior.prior.prior.current_promise));
1729
+ goto tail3;
1730
+ case State::kState4:
1731
+ Construct(&prior.prior.prior.current_promise,
1732
+ std::move(other.prior.prior.prior.current_promise));
1733
+ goto tail4;
1734
+ case State::kState5:
1735
+ Construct(&prior.prior.current_promise,
1736
+ std::move(other.prior.prior.current_promise));
1737
+ goto tail5;
1738
+ case State::kState6:
1739
+ Construct(&prior.current_promise,
1740
+ std::move(other.prior.current_promise));
1741
+ goto tail6;
1742
+ case State::kState7:
1743
+ Construct(&current_promise, std::move(other.current_promise));
1744
+ return;
1745
+ }
1746
+ tail0:
1747
+ Construct(
1748
+ &prior.prior.prior.prior.prior.prior.prior.next_factory,
1749
+ std::move(
1750
+ other.prior.prior.prior.prior.prior.prior.prior.next_factory));
1751
+ tail1:
1752
+ Construct(
1753
+ &prior.prior.prior.prior.prior.prior.next_factory,
1754
+ std::move(other.prior.prior.prior.prior.prior.prior.next_factory));
1755
+ tail2:
1756
+ Construct(&prior.prior.prior.prior.prior.next_factory,
1757
+ std::move(other.prior.prior.prior.prior.prior.next_factory));
1758
+ tail3:
1759
+ Construct(&prior.prior.prior.prior.next_factory,
1760
+ std::move(other.prior.prior.prior.prior.next_factory));
1761
+ tail4:
1762
+ Construct(&prior.prior.prior.next_factory,
1763
+ std::move(other.prior.prior.prior.next_factory));
1764
+ tail5:
1765
+ Construct(&prior.prior.next_factory,
1766
+ std::move(other.prior.prior.next_factory));
1767
+ tail6:
1768
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
1769
+ }
1770
+ SeqState& operator=(SeqState&& other) = delete;
1771
+ Poll<Result> PollOnce() {
1772
+ switch (state) {
1773
+ case State::kState0: {
1774
+ if (grpc_trace_promise_primitives.enabled()) {
1775
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/8", this);
1776
+ }
1777
+ auto result =
1778
+ prior.prior.prior.prior.prior.prior.prior.current_promise();
1779
+ PromiseResult0* p = result.value_if_ready();
1780
+ if (grpc_trace_promise_primitives.enabled()) {
1781
+ gpr_log(
1782
+ GPR_DEBUG, "seq[%p]: poll step 1/8 gets %s", this,
1783
+ p != nullptr
1784
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
1785
+ : "pending");
1786
+ }
1787
+ if (p == nullptr) return Pending{};
1788
+ if (!PromiseResultTraits0::IsOk(*p)) {
1789
+ return PromiseResultTraits0::template ReturnValue<Result>(
1790
+ std::move(*p));
1791
+ }
1792
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.current_promise);
1793
+ auto next_promise = PromiseResultTraits0::CallFactory(
1794
+ &prior.prior.prior.prior.prior.prior.prior.next_factory,
1795
+ std::move(*p));
1796
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.next_factory);
1797
+ Construct(&prior.prior.prior.prior.prior.prior.current_promise,
1798
+ std::move(next_promise));
1799
+ state = State::kState1;
1800
+ }
1801
+ ABSL_FALLTHROUGH_INTENDED;
1802
+ case State::kState1: {
1803
+ if (grpc_trace_promise_primitives.enabled()) {
1804
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/8", this);
1805
+ }
1806
+ auto result = prior.prior.prior.prior.prior.prior.current_promise();
1807
+ PromiseResult1* p = result.value_if_ready();
1808
+ if (grpc_trace_promise_primitives.enabled()) {
1809
+ gpr_log(
1810
+ GPR_DEBUG, "seq[%p]: poll step 2/8 gets %s", this,
1811
+ p != nullptr
1812
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
1813
+ : "pending");
1814
+ }
1815
+ if (p == nullptr) return Pending{};
1816
+ if (!PromiseResultTraits1::IsOk(*p)) {
1817
+ return PromiseResultTraits1::template ReturnValue<Result>(
1818
+ std::move(*p));
1819
+ }
1820
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
1821
+ auto next_promise = PromiseResultTraits1::CallFactory(
1822
+ &prior.prior.prior.prior.prior.prior.next_factory, std::move(*p));
1823
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
1824
+ Construct(&prior.prior.prior.prior.prior.current_promise,
1825
+ std::move(next_promise));
1826
+ state = State::kState2;
1827
+ }
1828
+ ABSL_FALLTHROUGH_INTENDED;
1829
+ case State::kState2: {
1830
+ if (grpc_trace_promise_primitives.enabled()) {
1831
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/8", this);
1832
+ }
1833
+ auto result = prior.prior.prior.prior.prior.current_promise();
1834
+ PromiseResult2* p = result.value_if_ready();
1835
+ if (grpc_trace_promise_primitives.enabled()) {
1836
+ gpr_log(
1837
+ GPR_DEBUG, "seq[%p]: poll step 3/8 gets %s", this,
1838
+ p != nullptr
1839
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
1840
+ : "pending");
1841
+ }
1842
+ if (p == nullptr) return Pending{};
1843
+ if (!PromiseResultTraits2::IsOk(*p)) {
1844
+ return PromiseResultTraits2::template ReturnValue<Result>(
1845
+ std::move(*p));
1846
+ }
1847
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
1848
+ auto next_promise = PromiseResultTraits2::CallFactory(
1849
+ &prior.prior.prior.prior.prior.next_factory, std::move(*p));
1850
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
1851
+ Construct(&prior.prior.prior.prior.current_promise,
1852
+ std::move(next_promise));
1853
+ state = State::kState3;
1854
+ }
1855
+ ABSL_FALLTHROUGH_INTENDED;
1856
+ case State::kState3: {
1857
+ if (grpc_trace_promise_primitives.enabled()) {
1858
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/8", this);
1859
+ }
1860
+ auto result = prior.prior.prior.prior.current_promise();
1861
+ PromiseResult3* p = result.value_if_ready();
1862
+ if (grpc_trace_promise_primitives.enabled()) {
1863
+ gpr_log(
1864
+ GPR_DEBUG, "seq[%p]: poll step 4/8 gets %s", this,
1865
+ p != nullptr
1866
+ ? (PromiseResultTraits3::IsOk(*p) ? "ready" : "early-error")
1867
+ : "pending");
1868
+ }
1869
+ if (p == nullptr) return Pending{};
1870
+ if (!PromiseResultTraits3::IsOk(*p)) {
1871
+ return PromiseResultTraits3::template ReturnValue<Result>(
1872
+ std::move(*p));
1873
+ }
1874
+ Destruct(&prior.prior.prior.prior.current_promise);
1875
+ auto next_promise = PromiseResultTraits3::CallFactory(
1876
+ &prior.prior.prior.prior.next_factory, std::move(*p));
1877
+ Destruct(&prior.prior.prior.prior.next_factory);
1878
+ Construct(&prior.prior.prior.current_promise, std::move(next_promise));
1879
+ state = State::kState4;
1880
+ }
1881
+ ABSL_FALLTHROUGH_INTENDED;
1882
+ case State::kState4: {
1883
+ if (grpc_trace_promise_primitives.enabled()) {
1884
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 5/8", this);
1885
+ }
1886
+ auto result = prior.prior.prior.current_promise();
1887
+ PromiseResult4* p = result.value_if_ready();
1888
+ if (grpc_trace_promise_primitives.enabled()) {
1889
+ gpr_log(
1890
+ GPR_DEBUG, "seq[%p]: poll step 5/8 gets %s", this,
1891
+ p != nullptr
1892
+ ? (PromiseResultTraits4::IsOk(*p) ? "ready" : "early-error")
1893
+ : "pending");
1894
+ }
1895
+ if (p == nullptr) return Pending{};
1896
+ if (!PromiseResultTraits4::IsOk(*p)) {
1897
+ return PromiseResultTraits4::template ReturnValue<Result>(
1898
+ std::move(*p));
1899
+ }
1900
+ Destruct(&prior.prior.prior.current_promise);
1901
+ auto next_promise = PromiseResultTraits4::CallFactory(
1902
+ &prior.prior.prior.next_factory, std::move(*p));
1903
+ Destruct(&prior.prior.prior.next_factory);
1904
+ Construct(&prior.prior.current_promise, std::move(next_promise));
1905
+ state = State::kState5;
1906
+ }
1907
+ ABSL_FALLTHROUGH_INTENDED;
1908
+ case State::kState5: {
1909
+ if (grpc_trace_promise_primitives.enabled()) {
1910
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 6/8", this);
1911
+ }
1912
+ auto result = prior.prior.current_promise();
1913
+ PromiseResult5* p = result.value_if_ready();
1914
+ if (grpc_trace_promise_primitives.enabled()) {
1915
+ gpr_log(
1916
+ GPR_DEBUG, "seq[%p]: poll step 6/8 gets %s", this,
1917
+ p != nullptr
1918
+ ? (PromiseResultTraits5::IsOk(*p) ? "ready" : "early-error")
1919
+ : "pending");
1920
+ }
1921
+ if (p == nullptr) return Pending{};
1922
+ if (!PromiseResultTraits5::IsOk(*p)) {
1923
+ return PromiseResultTraits5::template ReturnValue<Result>(
1924
+ std::move(*p));
1925
+ }
1926
+ Destruct(&prior.prior.current_promise);
1927
+ auto next_promise = PromiseResultTraits5::CallFactory(
1928
+ &prior.prior.next_factory, std::move(*p));
1929
+ Destruct(&prior.prior.next_factory);
1930
+ Construct(&prior.current_promise, std::move(next_promise));
1931
+ state = State::kState6;
1932
+ }
1933
+ ABSL_FALLTHROUGH_INTENDED;
1934
+ case State::kState6: {
1935
+ if (grpc_trace_promise_primitives.enabled()) {
1936
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 7/8", this);
1937
+ }
1938
+ auto result = prior.current_promise();
1939
+ PromiseResult6* p = result.value_if_ready();
1940
+ if (grpc_trace_promise_primitives.enabled()) {
1941
+ gpr_log(
1942
+ GPR_DEBUG, "seq[%p]: poll step 7/8 gets %s", this,
1943
+ p != nullptr
1944
+ ? (PromiseResultTraits6::IsOk(*p) ? "ready" : "early-error")
1945
+ : "pending");
1946
+ }
1947
+ if (p == nullptr) return Pending{};
1948
+ if (!PromiseResultTraits6::IsOk(*p)) {
1949
+ return PromiseResultTraits6::template ReturnValue<Result>(
1950
+ std::move(*p));
1951
+ }
1952
+ Destruct(&prior.current_promise);
1953
+ auto next_promise = PromiseResultTraits6::CallFactory(
1954
+ &prior.next_factory, std::move(*p));
1955
+ Destruct(&prior.next_factory);
1956
+ Construct(&current_promise, std::move(next_promise));
1957
+ state = State::kState7;
1958
+ }
1959
+ ABSL_FALLTHROUGH_INTENDED;
1960
+ default:
1961
+ case State::kState7: {
1962
+ if (grpc_trace_promise_primitives.enabled()) {
1963
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 8/8", this);
1964
+ }
1965
+ auto result = current_promise();
1966
+ if (grpc_trace_promise_primitives.enabled()) {
1967
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 8/8 gets %s", this,
1968
+ result.ready() ? "ready" : "pending");
1969
+ }
1970
+ auto* p = result.value_if_ready();
1971
+ if (p == nullptr) return Pending{};
1972
+ return Result(std::move(*p));
1973
+ }
1974
+ }
1975
+ }
1976
+ };
1977
+
1978
+ template <template <typename> class Traits, typename P, typename F0,
1979
+ typename F1, typename F2, typename F3, typename F4, typename F5,
1980
+ typename F6, typename F7>
1981
+ struct SeqState<Traits, P, F0, F1, F2, F3, F4, F5, F6, F7> {
1982
+ using Promise0 = PromiseLike<P>;
1983
+ using PromiseResult0 = typename Promise0::Result;
1984
+ using PromiseResultTraits0 = Traits<PromiseResult0>;
1985
+ using NextFactory0 =
1986
+ OncePromiseFactory<typename PromiseResultTraits0::UnwrappedType, F0>;
1987
+ using Promise1 = typename NextFactory0::Promise;
1988
+ using PromiseResult1 = typename Promise1::Result;
1989
+ using PromiseResultTraits1 = Traits<PromiseResult1>;
1990
+ using NextFactory1 =
1991
+ OncePromiseFactory<typename PromiseResultTraits1::UnwrappedType, F1>;
1992
+ using Promise2 = typename NextFactory1::Promise;
1993
+ using PromiseResult2 = typename Promise2::Result;
1994
+ using PromiseResultTraits2 = Traits<PromiseResult2>;
1995
+ using NextFactory2 =
1996
+ OncePromiseFactory<typename PromiseResultTraits2::UnwrappedType, F2>;
1997
+ using Promise3 = typename NextFactory2::Promise;
1998
+ using PromiseResult3 = typename Promise3::Result;
1999
+ using PromiseResultTraits3 = Traits<PromiseResult3>;
2000
+ using NextFactory3 =
2001
+ OncePromiseFactory<typename PromiseResultTraits3::UnwrappedType, F3>;
2002
+ using Promise4 = typename NextFactory3::Promise;
2003
+ using PromiseResult4 = typename Promise4::Result;
2004
+ using PromiseResultTraits4 = Traits<PromiseResult4>;
2005
+ using NextFactory4 =
2006
+ OncePromiseFactory<typename PromiseResultTraits4::UnwrappedType, F4>;
2007
+ using Promise5 = typename NextFactory4::Promise;
2008
+ using PromiseResult5 = typename Promise5::Result;
2009
+ using PromiseResultTraits5 = Traits<PromiseResult5>;
2010
+ using NextFactory5 =
2011
+ OncePromiseFactory<typename PromiseResultTraits5::UnwrappedType, F5>;
2012
+ using Promise6 = typename NextFactory5::Promise;
2013
+ using PromiseResult6 = typename Promise6::Result;
2014
+ using PromiseResultTraits6 = Traits<PromiseResult6>;
2015
+ using NextFactory6 =
2016
+ OncePromiseFactory<typename PromiseResultTraits6::UnwrappedType, F6>;
2017
+ using Promise7 = typename NextFactory6::Promise;
2018
+ using PromiseResult7 = typename Promise7::Result;
2019
+ using PromiseResultTraits7 = Traits<PromiseResult7>;
2020
+ using NextFactory7 =
2021
+ OncePromiseFactory<typename PromiseResultTraits7::UnwrappedType, F7>;
2022
+ using Promise8 = typename NextFactory7::Promise;
2023
+ using PromiseResult8 = typename Promise8::Result;
2024
+ using PromiseResultTraits8 = Traits<PromiseResult8>;
2025
+ using Result = typename PromiseResultTraits8::WrappedType;
2026
+ struct Running0 {
2027
+ GPR_NO_UNIQUE_ADDRESS Promise0 current_promise;
2028
+ GPR_NO_UNIQUE_ADDRESS NextFactory0 next_factory;
2029
+ };
2030
+ struct Running1 {
2031
+ union {
2032
+ GPR_NO_UNIQUE_ADDRESS Running0 prior;
2033
+ GPR_NO_UNIQUE_ADDRESS Promise1 current_promise;
2034
+ };
2035
+ GPR_NO_UNIQUE_ADDRESS NextFactory1 next_factory;
2036
+ };
2037
+ struct Running2 {
2038
+ union {
2039
+ GPR_NO_UNIQUE_ADDRESS Running1 prior;
2040
+ GPR_NO_UNIQUE_ADDRESS Promise2 current_promise;
2041
+ };
2042
+ GPR_NO_UNIQUE_ADDRESS NextFactory2 next_factory;
2043
+ };
2044
+ struct Running3 {
2045
+ union {
2046
+ GPR_NO_UNIQUE_ADDRESS Running2 prior;
2047
+ GPR_NO_UNIQUE_ADDRESS Promise3 current_promise;
2048
+ };
2049
+ GPR_NO_UNIQUE_ADDRESS NextFactory3 next_factory;
2050
+ };
2051
+ struct Running4 {
2052
+ union {
2053
+ GPR_NO_UNIQUE_ADDRESS Running3 prior;
2054
+ GPR_NO_UNIQUE_ADDRESS Promise4 current_promise;
2055
+ };
2056
+ GPR_NO_UNIQUE_ADDRESS NextFactory4 next_factory;
2057
+ };
2058
+ struct Running5 {
2059
+ union {
2060
+ GPR_NO_UNIQUE_ADDRESS Running4 prior;
2061
+ GPR_NO_UNIQUE_ADDRESS Promise5 current_promise;
2062
+ };
2063
+ GPR_NO_UNIQUE_ADDRESS NextFactory5 next_factory;
2064
+ };
2065
+ struct Running6 {
2066
+ union {
2067
+ GPR_NO_UNIQUE_ADDRESS Running5 prior;
2068
+ GPR_NO_UNIQUE_ADDRESS Promise6 current_promise;
2069
+ };
2070
+ GPR_NO_UNIQUE_ADDRESS NextFactory6 next_factory;
2071
+ };
2072
+ struct Running7 {
2073
+ union {
2074
+ GPR_NO_UNIQUE_ADDRESS Running6 prior;
2075
+ GPR_NO_UNIQUE_ADDRESS Promise7 current_promise;
2076
+ };
2077
+ GPR_NO_UNIQUE_ADDRESS NextFactory7 next_factory;
2078
+ };
2079
+ union {
2080
+ GPR_NO_UNIQUE_ADDRESS Running7 prior;
2081
+ GPR_NO_UNIQUE_ADDRESS Promise8 current_promise;
2082
+ };
2083
+ enum class State : uint8_t {
2084
+ kState0,
2085
+ kState1,
2086
+ kState2,
2087
+ kState3,
2088
+ kState4,
2089
+ kState5,
2090
+ kState6,
2091
+ kState7,
2092
+ kState8
2093
+ };
2094
+ GPR_NO_UNIQUE_ADDRESS State state = State::kState0;
2095
+
2096
+ SeqState(P&& p, F0&& f0, F1&& f1, F2&& f2, F3&& f3, F4&& f4, F5&& f5, F6&& f6,
2097
+ F7&& f7) noexcept {
2098
+ Construct(&prior.prior.prior.prior.prior.prior.prior.prior.current_promise,
2099
+ std::forward<P>(p));
2100
+ Construct(&prior.prior.prior.prior.prior.prior.prior.prior.next_factory,
2101
+ std::forward<F0>(f0));
2102
+ Construct(&prior.prior.prior.prior.prior.prior.prior.next_factory,
2103
+ std::forward<F1>(f1));
2104
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
2105
+ std::forward<F2>(f2));
2106
+ Construct(&prior.prior.prior.prior.prior.next_factory,
2107
+ std::forward<F3>(f3));
2108
+ Construct(&prior.prior.prior.prior.next_factory, std::forward<F4>(f4));
2109
+ Construct(&prior.prior.prior.next_factory, std::forward<F5>(f5));
2110
+ Construct(&prior.prior.next_factory, std::forward<F6>(f6));
2111
+ Construct(&prior.next_factory, std::forward<F7>(f7));
2112
+ }
2113
+ ~SeqState() {
2114
+ switch (state) {
2115
+ case State::kState0:
2116
+ Destruct(
2117
+ &prior.prior.prior.prior.prior.prior.prior.prior.current_promise);
2118
+ goto tail0;
2119
+ case State::kState1:
2120
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.current_promise);
2121
+ goto tail1;
2122
+ case State::kState2:
2123
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
2124
+ goto tail2;
2125
+ case State::kState3:
2126
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
2127
+ goto tail3;
2128
+ case State::kState4:
2129
+ Destruct(&prior.prior.prior.prior.current_promise);
2130
+ goto tail4;
2131
+ case State::kState5:
2132
+ Destruct(&prior.prior.prior.current_promise);
2133
+ goto tail5;
2134
+ case State::kState6:
2135
+ Destruct(&prior.prior.current_promise);
2136
+ goto tail6;
2137
+ case State::kState7:
2138
+ Destruct(&prior.current_promise);
2139
+ goto tail7;
2140
+ case State::kState8:
2141
+ Destruct(&current_promise);
2142
+ return;
2143
+ }
2144
+ tail0:
2145
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.prior.next_factory);
2146
+ tail1:
2147
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.next_factory);
2148
+ tail2:
2149
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
2150
+ tail3:
2151
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
2152
+ tail4:
2153
+ Destruct(&prior.prior.prior.prior.next_factory);
2154
+ tail5:
2155
+ Destruct(&prior.prior.prior.next_factory);
2156
+ tail6:
2157
+ Destruct(&prior.prior.next_factory);
2158
+ tail7:
2159
+ Destruct(&prior.next_factory);
2160
+ }
2161
+ SeqState(const SeqState& other) noexcept : state(other.state) {
2162
+ GPR_ASSERT(state == State::kState0);
2163
+ Construct(&prior.current_promise, other.prior.current_promise);
2164
+ Construct(
2165
+ &prior.prior.prior.prior.prior.prior.prior.prior.next_factory,
2166
+ other.prior.prior.prior.prior.prior.prior.prior.prior.next_factory);
2167
+ Construct(&prior.prior.prior.prior.prior.prior.prior.next_factory,
2168
+ other.prior.prior.prior.prior.prior.prior.prior.next_factory);
2169
+ Construct(&prior.prior.prior.prior.prior.prior.next_factory,
2170
+ other.prior.prior.prior.prior.prior.prior.next_factory);
2171
+ Construct(&prior.prior.prior.prior.prior.next_factory,
2172
+ other.prior.prior.prior.prior.prior.next_factory);
2173
+ Construct(&prior.prior.prior.prior.next_factory,
2174
+ other.prior.prior.prior.prior.next_factory);
2175
+ Construct(&prior.prior.prior.next_factory,
2176
+ other.prior.prior.prior.next_factory);
2177
+ Construct(&prior.prior.next_factory, other.prior.prior.next_factory);
2178
+ Construct(&prior.next_factory, other.prior.next_factory);
2179
+ }
2180
+ SeqState& operator=(const SeqState& other) = delete;
2181
+ SeqState(SeqState&& other) noexcept : state(other.state) {
2182
+ switch (state) {
2183
+ case State::kState0:
2184
+ Construct(
2185
+ &prior.prior.prior.prior.prior.prior.prior.prior.current_promise,
2186
+ std::move(other.prior.prior.prior.prior.prior.prior.prior.prior
2187
+ .current_promise));
2188
+ goto tail0;
2189
+ case State::kState1:
2190
+ Construct(&prior.prior.prior.prior.prior.prior.prior.current_promise,
2191
+ std::move(other.prior.prior.prior.prior.prior.prior.prior
2192
+ .current_promise));
2193
+ goto tail1;
2194
+ case State::kState2:
2195
+ Construct(
2196
+ &prior.prior.prior.prior.prior.prior.current_promise,
2197
+ std::move(
2198
+ other.prior.prior.prior.prior.prior.prior.current_promise));
2199
+ goto tail2;
2200
+ case State::kState3:
2201
+ Construct(
2202
+ &prior.prior.prior.prior.prior.current_promise,
2203
+ std::move(other.prior.prior.prior.prior.prior.current_promise));
2204
+ goto tail3;
2205
+ case State::kState4:
2206
+ Construct(&prior.prior.prior.prior.current_promise,
2207
+ std::move(other.prior.prior.prior.prior.current_promise));
2208
+ goto tail4;
2209
+ case State::kState5:
2210
+ Construct(&prior.prior.prior.current_promise,
2211
+ std::move(other.prior.prior.prior.current_promise));
2212
+ goto tail5;
2213
+ case State::kState6:
2214
+ Construct(&prior.prior.current_promise,
2215
+ std::move(other.prior.prior.current_promise));
2216
+ goto tail6;
2217
+ case State::kState7:
2218
+ Construct(&prior.current_promise,
2219
+ std::move(other.prior.current_promise));
2220
+ goto tail7;
2221
+ case State::kState8:
2222
+ Construct(&current_promise, std::move(other.current_promise));
2223
+ return;
2224
+ }
2225
+ tail0:
2226
+ Construct(&prior.prior.prior.prior.prior.prior.prior.prior.next_factory,
2227
+ std::move(other.prior.prior.prior.prior.prior.prior.prior.prior
2228
+ .next_factory));
2229
+ tail1:
2230
+ Construct(
2231
+ &prior.prior.prior.prior.prior.prior.prior.next_factory,
2232
+ std::move(
2233
+ other.prior.prior.prior.prior.prior.prior.prior.next_factory));
2234
+ tail2:
2235
+ Construct(
2236
+ &prior.prior.prior.prior.prior.prior.next_factory,
2237
+ std::move(other.prior.prior.prior.prior.prior.prior.next_factory));
2238
+ tail3:
2239
+ Construct(&prior.prior.prior.prior.prior.next_factory,
2240
+ std::move(other.prior.prior.prior.prior.prior.next_factory));
2241
+ tail4:
2242
+ Construct(&prior.prior.prior.prior.next_factory,
2243
+ std::move(other.prior.prior.prior.prior.next_factory));
2244
+ tail5:
2245
+ Construct(&prior.prior.prior.next_factory,
2246
+ std::move(other.prior.prior.prior.next_factory));
2247
+ tail6:
2248
+ Construct(&prior.prior.next_factory,
2249
+ std::move(other.prior.prior.next_factory));
2250
+ tail7:
2251
+ Construct(&prior.next_factory, std::move(other.prior.next_factory));
2252
+ }
2253
+ SeqState& operator=(SeqState&& other) = delete;
2254
+ Poll<Result> PollOnce() {
2255
+ switch (state) {
2256
+ case State::kState0: {
2257
+ if (grpc_trace_promise_primitives.enabled()) {
2258
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 1/9", this);
2259
+ }
2260
+ auto result =
2261
+ prior.prior.prior.prior.prior.prior.prior.prior.current_promise();
2262
+ PromiseResult0* p = result.value_if_ready();
2263
+ if (grpc_trace_promise_primitives.enabled()) {
2264
+ gpr_log(
2265
+ GPR_DEBUG, "seq[%p]: poll step 1/9 gets %s", this,
2266
+ p != nullptr
2267
+ ? (PromiseResultTraits0::IsOk(*p) ? "ready" : "early-error")
2268
+ : "pending");
2269
+ }
2270
+ if (p == nullptr) return Pending{};
2271
+ if (!PromiseResultTraits0::IsOk(*p)) {
2272
+ return PromiseResultTraits0::template ReturnValue<Result>(
2273
+ std::move(*p));
2274
+ }
2275
+ Destruct(
2276
+ &prior.prior.prior.prior.prior.prior.prior.prior.current_promise);
2277
+ auto next_promise = PromiseResultTraits0::CallFactory(
2278
+ &prior.prior.prior.prior.prior.prior.prior.prior.next_factory,
2279
+ std::move(*p));
2280
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.prior.next_factory);
2281
+ Construct(&prior.prior.prior.prior.prior.prior.prior.current_promise,
2282
+ std::move(next_promise));
2283
+ state = State::kState1;
2284
+ }
2285
+ ABSL_FALLTHROUGH_INTENDED;
2286
+ case State::kState1: {
2287
+ if (grpc_trace_promise_primitives.enabled()) {
2288
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 2/9", this);
2289
+ }
2290
+ auto result =
2291
+ prior.prior.prior.prior.prior.prior.prior.current_promise();
2292
+ PromiseResult1* p = result.value_if_ready();
2293
+ if (grpc_trace_promise_primitives.enabled()) {
2294
+ gpr_log(
2295
+ GPR_DEBUG, "seq[%p]: poll step 2/9 gets %s", this,
2296
+ p != nullptr
2297
+ ? (PromiseResultTraits1::IsOk(*p) ? "ready" : "early-error")
2298
+ : "pending");
2299
+ }
2300
+ if (p == nullptr) return Pending{};
2301
+ if (!PromiseResultTraits1::IsOk(*p)) {
2302
+ return PromiseResultTraits1::template ReturnValue<Result>(
2303
+ std::move(*p));
2304
+ }
2305
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.current_promise);
2306
+ auto next_promise = PromiseResultTraits1::CallFactory(
2307
+ &prior.prior.prior.prior.prior.prior.prior.next_factory,
2308
+ std::move(*p));
2309
+ Destruct(&prior.prior.prior.prior.prior.prior.prior.next_factory);
2310
+ Construct(&prior.prior.prior.prior.prior.prior.current_promise,
2311
+ std::move(next_promise));
2312
+ state = State::kState2;
2313
+ }
2314
+ ABSL_FALLTHROUGH_INTENDED;
2315
+ case State::kState2: {
2316
+ if (grpc_trace_promise_primitives.enabled()) {
2317
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 3/9", this);
2318
+ }
2319
+ auto result = prior.prior.prior.prior.prior.prior.current_promise();
2320
+ PromiseResult2* p = result.value_if_ready();
2321
+ if (grpc_trace_promise_primitives.enabled()) {
2322
+ gpr_log(
2323
+ GPR_DEBUG, "seq[%p]: poll step 3/9 gets %s", this,
2324
+ p != nullptr
2325
+ ? (PromiseResultTraits2::IsOk(*p) ? "ready" : "early-error")
2326
+ : "pending");
2327
+ }
2328
+ if (p == nullptr) return Pending{};
2329
+ if (!PromiseResultTraits2::IsOk(*p)) {
2330
+ return PromiseResultTraits2::template ReturnValue<Result>(
2331
+ std::move(*p));
2332
+ }
2333
+ Destruct(&prior.prior.prior.prior.prior.prior.current_promise);
2334
+ auto next_promise = PromiseResultTraits2::CallFactory(
2335
+ &prior.prior.prior.prior.prior.prior.next_factory, std::move(*p));
2336
+ Destruct(&prior.prior.prior.prior.prior.prior.next_factory);
2337
+ Construct(&prior.prior.prior.prior.prior.current_promise,
2338
+ std::move(next_promise));
2339
+ state = State::kState3;
2340
+ }
2341
+ ABSL_FALLTHROUGH_INTENDED;
2342
+ case State::kState3: {
2343
+ if (grpc_trace_promise_primitives.enabled()) {
2344
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 4/9", this);
2345
+ }
2346
+ auto result = prior.prior.prior.prior.prior.current_promise();
2347
+ PromiseResult3* p = result.value_if_ready();
2348
+ if (grpc_trace_promise_primitives.enabled()) {
2349
+ gpr_log(
2350
+ GPR_DEBUG, "seq[%p]: poll step 4/9 gets %s", this,
2351
+ p != nullptr
2352
+ ? (PromiseResultTraits3::IsOk(*p) ? "ready" : "early-error")
2353
+ : "pending");
2354
+ }
2355
+ if (p == nullptr) return Pending{};
2356
+ if (!PromiseResultTraits3::IsOk(*p)) {
2357
+ return PromiseResultTraits3::template ReturnValue<Result>(
2358
+ std::move(*p));
2359
+ }
2360
+ Destruct(&prior.prior.prior.prior.prior.current_promise);
2361
+ auto next_promise = PromiseResultTraits3::CallFactory(
2362
+ &prior.prior.prior.prior.prior.next_factory, std::move(*p));
2363
+ Destruct(&prior.prior.prior.prior.prior.next_factory);
2364
+ Construct(&prior.prior.prior.prior.current_promise,
2365
+ std::move(next_promise));
2366
+ state = State::kState4;
2367
+ }
2368
+ ABSL_FALLTHROUGH_INTENDED;
2369
+ case State::kState4: {
2370
+ if (grpc_trace_promise_primitives.enabled()) {
2371
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 5/9", this);
2372
+ }
2373
+ auto result = prior.prior.prior.prior.current_promise();
2374
+ PromiseResult4* p = result.value_if_ready();
2375
+ if (grpc_trace_promise_primitives.enabled()) {
2376
+ gpr_log(
2377
+ GPR_DEBUG, "seq[%p]: poll step 5/9 gets %s", this,
2378
+ p != nullptr
2379
+ ? (PromiseResultTraits4::IsOk(*p) ? "ready" : "early-error")
2380
+ : "pending");
2381
+ }
2382
+ if (p == nullptr) return Pending{};
2383
+ if (!PromiseResultTraits4::IsOk(*p)) {
2384
+ return PromiseResultTraits4::template ReturnValue<Result>(
2385
+ std::move(*p));
2386
+ }
2387
+ Destruct(&prior.prior.prior.prior.current_promise);
2388
+ auto next_promise = PromiseResultTraits4::CallFactory(
2389
+ &prior.prior.prior.prior.next_factory, std::move(*p));
2390
+ Destruct(&prior.prior.prior.prior.next_factory);
2391
+ Construct(&prior.prior.prior.current_promise, std::move(next_promise));
2392
+ state = State::kState5;
2393
+ }
2394
+ ABSL_FALLTHROUGH_INTENDED;
2395
+ case State::kState5: {
2396
+ if (grpc_trace_promise_primitives.enabled()) {
2397
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 6/9", this);
2398
+ }
2399
+ auto result = prior.prior.prior.current_promise();
2400
+ PromiseResult5* p = result.value_if_ready();
2401
+ if (grpc_trace_promise_primitives.enabled()) {
2402
+ gpr_log(
2403
+ GPR_DEBUG, "seq[%p]: poll step 6/9 gets %s", this,
2404
+ p != nullptr
2405
+ ? (PromiseResultTraits5::IsOk(*p) ? "ready" : "early-error")
2406
+ : "pending");
2407
+ }
2408
+ if (p == nullptr) return Pending{};
2409
+ if (!PromiseResultTraits5::IsOk(*p)) {
2410
+ return PromiseResultTraits5::template ReturnValue<Result>(
2411
+ std::move(*p));
2412
+ }
2413
+ Destruct(&prior.prior.prior.current_promise);
2414
+ auto next_promise = PromiseResultTraits5::CallFactory(
2415
+ &prior.prior.prior.next_factory, std::move(*p));
2416
+ Destruct(&prior.prior.prior.next_factory);
2417
+ Construct(&prior.prior.current_promise, std::move(next_promise));
2418
+ state = State::kState6;
2419
+ }
2420
+ ABSL_FALLTHROUGH_INTENDED;
2421
+ case State::kState6: {
2422
+ if (grpc_trace_promise_primitives.enabled()) {
2423
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 7/9", this);
2424
+ }
2425
+ auto result = prior.prior.current_promise();
2426
+ PromiseResult6* p = result.value_if_ready();
2427
+ if (grpc_trace_promise_primitives.enabled()) {
2428
+ gpr_log(
2429
+ GPR_DEBUG, "seq[%p]: poll step 7/9 gets %s", this,
2430
+ p != nullptr
2431
+ ? (PromiseResultTraits6::IsOk(*p) ? "ready" : "early-error")
2432
+ : "pending");
2433
+ }
2434
+ if (p == nullptr) return Pending{};
2435
+ if (!PromiseResultTraits6::IsOk(*p)) {
2436
+ return PromiseResultTraits6::template ReturnValue<Result>(
2437
+ std::move(*p));
2438
+ }
2439
+ Destruct(&prior.prior.current_promise);
2440
+ auto next_promise = PromiseResultTraits6::CallFactory(
2441
+ &prior.prior.next_factory, std::move(*p));
2442
+ Destruct(&prior.prior.next_factory);
2443
+ Construct(&prior.current_promise, std::move(next_promise));
2444
+ state = State::kState7;
2445
+ }
2446
+ ABSL_FALLTHROUGH_INTENDED;
2447
+ case State::kState7: {
2448
+ if (grpc_trace_promise_primitives.enabled()) {
2449
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 8/9", this);
2450
+ }
2451
+ auto result = prior.current_promise();
2452
+ PromiseResult7* p = result.value_if_ready();
2453
+ if (grpc_trace_promise_primitives.enabled()) {
2454
+ gpr_log(
2455
+ GPR_DEBUG, "seq[%p]: poll step 8/9 gets %s", this,
2456
+ p != nullptr
2457
+ ? (PromiseResultTraits7::IsOk(*p) ? "ready" : "early-error")
2458
+ : "pending");
2459
+ }
2460
+ if (p == nullptr) return Pending{};
2461
+ if (!PromiseResultTraits7::IsOk(*p)) {
2462
+ return PromiseResultTraits7::template ReturnValue<Result>(
2463
+ std::move(*p));
2464
+ }
2465
+ Destruct(&prior.current_promise);
2466
+ auto next_promise = PromiseResultTraits7::CallFactory(
2467
+ &prior.next_factory, std::move(*p));
2468
+ Destruct(&prior.next_factory);
2469
+ Construct(&current_promise, std::move(next_promise));
2470
+ state = State::kState8;
2471
+ }
2472
+ ABSL_FALLTHROUGH_INTENDED;
2473
+ default:
2474
+ case State::kState8: {
2475
+ if (grpc_trace_promise_primitives.enabled()) {
2476
+ gpr_log(GPR_DEBUG, "seq[%p]: begin poll step 9/9", this);
2477
+ }
2478
+ auto result = current_promise();
2479
+ if (grpc_trace_promise_primitives.enabled()) {
2480
+ gpr_log(GPR_DEBUG, "seq[%p]: poll step 9/9 gets %s", this,
2481
+ result.ready() ? "ready" : "pending");
2482
+ }
2483
+ auto* p = result.value_if_ready();
2484
+ if (p == nullptr) return Pending{};
2485
+ return Result(std::move(*p));
2486
+ }
2487
+ }
2488
+ }
2489
+ };
2490
+
2491
+ } // namespace promise_detail
2492
+ } // namespace grpc_core
2493
+
2494
+ #endif // GRPC_SRC_CORE_LIB_PROMISE_DETAIL_SEQ_STATE_H