grpc 1.63.0 → 1.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2453) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +179 -146
  3. data/include/grpc/compression.h +1 -2
  4. data/include/grpc/credentials.h +1221 -0
  5. data/include/grpc/event_engine/README.md +1 -1
  6. data/include/grpc/event_engine/endpoint_config.h +2 -2
  7. data/include/grpc/event_engine/event_engine.h +39 -15
  8. data/include/grpc/event_engine/extensible.h +5 -2
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +4 -4
  10. data/include/grpc/event_engine/internal/slice_cast.h +1 -1
  11. data/include/grpc/event_engine/memory_allocator.h +3 -4
  12. data/include/grpc/event_engine/memory_request.h +19 -2
  13. data/include/grpc/event_engine/slice.h +3 -5
  14. data/include/grpc/event_engine/slice_buffer.h +6 -8
  15. data/include/grpc/grpc.h +8 -2
  16. data/include/grpc/grpc_audit_logging.h +3 -3
  17. data/include/grpc/grpc_crl_provider.h +5 -4
  18. data/include/grpc/grpc_posix.h +1 -2
  19. data/include/grpc/grpc_security.h +1 -1173
  20. data/include/grpc/impl/call.h +2 -2
  21. data/include/grpc/impl/channel_arg_names.h +10 -7
  22. data/include/grpc/impl/grpc_types.h +1 -2
  23. data/include/grpc/impl/slice_type.h +1 -2
  24. data/include/grpc/module.modulemap +2 -0
  25. data/include/grpc/passive_listener.h +62 -0
  26. data/include/grpc/support/alloc.h +1 -2
  27. data/include/grpc/support/json.h +1 -2
  28. data/include/grpc/support/log.h +37 -64
  29. data/include/grpc/support/metrics.h +21 -6
  30. data/include/grpc/support/port_platform.h +31 -1
  31. data/include/grpc/support/sync_generic.h +2 -4
  32. data/include/grpc/support/sync_posix.h +1 -2
  33. data/include/grpc/support/time.h +1 -2
  34. data/src/core/{lib/channel → channelz}/channel_trace.cc +60 -67
  35. data/src/core/{lib/channel → channelz}/channel_trace.h +23 -23
  36. data/src/core/{lib/channel → channelz}/channelz.cc +74 -14
  37. data/src/core/{lib/channel → channelz}/channelz.h +58 -21
  38. data/src/core/{lib/channel → channelz}/channelz_registry.cc +14 -14
  39. data/src/core/{lib/channel → channelz}/channelz_registry.h +6 -7
  40. data/src/core/client_channel/backup_poller.cc +25 -16
  41. data/src/core/client_channel/client_channel.cc +1426 -0
  42. data/src/core/client_channel/client_channel.h +245 -0
  43. data/src/core/client_channel/client_channel_factory.cc +2 -2
  44. data/src/core/client_channel/client_channel_factory.h +1 -2
  45. data/src/core/client_channel/client_channel_filter.cc +397 -914
  46. data/src/core/client_channel/client_channel_filter.h +25 -80
  47. data/src/core/client_channel/client_channel_internal.h +26 -11
  48. data/src/core/client_channel/client_channel_plugin.cc +3 -18
  49. data/src/core/client_channel/client_channel_service_config.cc +2 -3
  50. data/src/core/client_channel/client_channel_service_config.h +8 -10
  51. data/src/core/client_channel/config_selector.h +25 -25
  52. data/src/core/client_channel/connector.h +4 -4
  53. data/src/core/client_channel/direct_channel.cc +83 -0
  54. data/src/core/client_channel/direct_channel.h +101 -0
  55. data/src/core/client_channel/dynamic_filters.cc +19 -16
  56. data/src/core/client_channel/dynamic_filters.h +9 -10
  57. data/src/core/client_channel/global_subchannel_pool.cc +2 -2
  58. data/src/core/client_channel/global_subchannel_pool.h +2 -3
  59. data/src/core/client_channel/lb_metadata.cc +120 -0
  60. data/src/core/client_channel/lb_metadata.h +55 -0
  61. data/src/core/client_channel/load_balanced_call_destination.cc +273 -0
  62. data/src/core/client_channel/load_balanced_call_destination.h +48 -0
  63. data/src/core/client_channel/local_subchannel_pool.cc +6 -7
  64. data/src/core/client_channel/local_subchannel_pool.h +1 -1
  65. data/src/core/client_channel/retry_filter.cc +8 -17
  66. data/src/core/client_channel/retry_filter.h +9 -17
  67. data/src/core/client_channel/retry_filter_legacy_call_data.cc +214 -323
  68. data/src/core/client_channel/retry_filter_legacy_call_data.h +11 -14
  69. data/src/core/client_channel/retry_service_config.cc +10 -13
  70. data/src/core/client_channel/retry_service_config.h +6 -8
  71. data/src/core/client_channel/retry_throttle.cc +3 -4
  72. data/src/core/client_channel/retry_throttle.h +4 -7
  73. data/src/core/client_channel/subchannel.cc +293 -174
  74. data/src/core/client_channel/subchannel.h +48 -41
  75. data/src/core/client_channel/subchannel_interface_internal.h +1 -1
  76. data/src/core/client_channel/subchannel_pool_interface.cc +1 -5
  77. data/src/core/client_channel/subchannel_pool_interface.h +4 -7
  78. data/src/core/client_channel/subchannel_stream_client.cc +47 -61
  79. data/src/core/client_channel/subchannel_stream_client.h +10 -14
  80. data/src/core/{lib/config → config}/config_vars.cc +16 -19
  81. data/src/core/{lib/config → config}/config_vars.h +12 -15
  82. data/src/core/{lib/config → config}/config_vars_non_generated.cc +1 -1
  83. data/src/core/{lib/config → config}/core_configuration.cc +10 -10
  84. data/src/core/{lib/config → config}/core_configuration.h +10 -12
  85. data/src/core/{lib/config → config}/load_config.cc +5 -7
  86. data/src/core/{lib/config → config}/load_config.h +3 -4
  87. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +27 -31
  88. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +5 -3
  89. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  90. data/src/core/ext/filters/census/grpc_context.cc +7 -10
  91. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +1 -2
  92. data/src/core/ext/filters/channel_idle/idle_filter_state.h +0 -1
  93. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +44 -47
  94. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +22 -19
  95. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +25 -29
  96. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -7
  97. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +2 -3
  98. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +7 -10
  99. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +205 -0
  100. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +97 -0
  101. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +80 -0
  102. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +86 -0
  103. data/src/core/ext/filters/http/client/http_client_filter.cc +19 -12
  104. data/src/core/ext/filters/http/client/http_client_filter.h +8 -6
  105. data/src/core/ext/filters/http/client_authority_filter.cc +13 -11
  106. data/src/core/ext/filters/http/client_authority_filter.h +8 -5
  107. data/src/core/ext/filters/http/http_filters_plugin.cc +1 -2
  108. data/src/core/ext/filters/http/message_compress/compression_filter.cc +59 -54
  109. data/src/core/ext/filters/http/message_compress/compression_filter.h +16 -12
  110. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -15
  111. data/src/core/ext/filters/http/server/http_server_filter.h +8 -6
  112. data/src/core/ext/filters/message_size/message_size_filter.cc +42 -51
  113. data/src/core/ext/filters/message_size/message_size_filter.h +20 -16
  114. data/src/core/ext/filters/rbac/rbac_filter.cc +20 -18
  115. data/src/core/ext/filters/rbac/rbac_filter.h +8 -7
  116. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +16 -10
  117. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +3 -5
  118. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +26 -28
  119. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +8 -6
  120. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +2 -3
  121. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +6 -8
  122. data/src/core/ext/transport/chttp2/alpn/alpn.cc +4 -5
  123. data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -1
  124. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +85 -117
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +5 -12
  126. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +436 -324
  127. data/src/core/ext/transport/chttp2/server/chttp2_server.h +34 -1
  128. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +26 -38
  129. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +1 -3
  130. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +10 -12
  131. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -3
  132. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc +53 -0
  133. data/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h +72 -0
  134. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +688 -562
  135. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -16
  136. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -2
  137. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +2 -2
  138. data/src/core/ext/transport/chttp2/transport/decode_huff.h +2 -2
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -16
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -9
  141. data/src/core/ext/transport/chttp2/transport/frame.cc +25 -8
  142. data/src/core/ext/transport/chttp2/transport/frame.h +11 -2
  143. data/src/core/ext/transport/chttp2/transport/frame_data.cc +21 -22
  144. data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -5
  145. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -10
  146. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -3
  147. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +16 -21
  148. data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -3
  149. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +19 -20
  150. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  151. data/src/core/ext/transport/chttp2/transport/frame_security.cc +82 -0
  152. data/src/core/ext/transport/chttp2/transport/frame_security.h +44 -0
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +36 -21
  154. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -4
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +31 -10
  156. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -4
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +21 -22
  158. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +18 -15
  159. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +10 -10
  160. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -4
  161. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +4 -5
  162. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +5 -8
  163. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +79 -74
  164. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +5 -6
  165. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +45 -20
  166. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +28 -9
  167. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +12 -4
  168. data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -4
  169. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -2
  170. data/src/core/ext/transport/chttp2/transport/internal.h +71 -81
  171. data/src/core/ext/transport/chttp2/transport/legacy_frame.h +1 -0
  172. data/src/core/ext/transport/chttp2/transport/parsing.cc +135 -121
  173. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc +3 -4
  174. data/src/core/ext/transport/chttp2/transport/ping_abuse_policy.h +1 -1
  175. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +4 -7
  176. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +2 -7
  177. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +33 -19
  178. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +6 -7
  179. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -21
  180. data/src/core/ext/transport/chttp2/transport/stream_lists.h +65 -0
  181. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -2
  182. data/src/core/ext/transport/chttp2/transport/varint.h +2 -3
  183. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +4 -4
  184. data/src/core/ext/transport/chttp2/transport/write_size_policy.h +2 -3
  185. data/src/core/ext/transport/chttp2/transport/writing.cc +178 -140
  186. data/src/core/ext/transport/inproc/inproc_transport.cc +155 -73
  187. data/src/core/ext/transport/inproc/inproc_transport.h +2 -5
  188. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +127 -129
  189. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +1 -4
  190. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +46 -15
  191. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +40 -18
  192. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +10 -4
  193. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +59 -27
  194. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +36 -18
  195. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +9 -4
  196. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +50 -15
  197. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +44 -22
  198. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +10 -4
  199. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +187 -54
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +162 -84
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +24 -4
  202. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +11 -5
  203. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +14 -4
  204. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +7 -4
  205. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +19 -6
  206. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +18 -8
  207. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +7 -4
  208. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +11 -10
  209. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +7 -1
  210. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +6 -4
  211. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +8 -7
  212. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +7 -1
  213. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +6 -4
  214. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +8 -7
  215. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +7 -1
  216. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +6 -4
  217. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +129 -82
  218. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +39 -27
  219. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +7 -4
  220. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +9 -6
  221. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +10 -4
  222. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +6 -4
  223. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +9 -8
  224. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +7 -1
  225. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +5 -4
  226. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +18 -8
  227. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +13 -6
  228. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +6 -4
  229. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +91 -34
  230. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +114 -48
  231. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +21 -4
  232. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +544 -254
  233. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +265 -149
  234. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +29 -4
  235. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +41 -14
  236. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +31 -17
  237. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +8 -4
  238. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +499 -141
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +268 -143
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +31 -4
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +12 -7
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +11 -5
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +6 -4
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +171 -27
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +54 -27
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +6 -4
  247. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +127 -35
  248. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +125 -63
  249. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +20 -4
  250. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +67 -27
  251. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +60 -26
  252. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +13 -4
  253. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +11 -6
  254. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +11 -5
  255. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +6 -4
  256. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +755 -72
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +320 -75
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +39 -4
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +67 -25
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +57 -27
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +12 -4
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +8 -5
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +10 -4
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +6 -4
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +9 -6
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +10 -4
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +6 -4
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +11 -5
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +14 -4
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +7 -4
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +201 -62
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +120 -53
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +19 -4
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +196 -62
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +95 -53
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +14 -4
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +13 -5
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +11 -5
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +6 -4
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +10 -7
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +10 -4
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +6 -4
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +231 -76
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +150 -78
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +21 -4
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +10 -7
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +14 -4
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +7 -4
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +15 -7
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +15 -5
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +7 -4
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +16 -10
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +14 -4
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +7 -4
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +23 -11
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +17 -7
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +7 -4
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +11 -6
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +11 -5
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +6 -4
  301. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +42 -11
  302. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +35 -17
  303. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +9 -4
  304. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +106 -34
  305. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +69 -37
  306. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +12 -4
  307. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +281 -37
  308. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +81 -27
  309. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +12 -4
  310. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +8 -5
  311. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +10 -4
  312. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +6 -4
  313. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +142 -47
  314. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +90 -47
  315. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +15 -4
  316. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +91 -29
  317. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +68 -38
  318. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +12 -4
  319. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +93 -13
  320. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +24 -14
  321. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +6 -4
  322. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +14 -7
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -6
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +7 -4
  325. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +14 -9
  326. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +11 -5
  327. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +6 -4
  328. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +51 -22
  329. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +58 -24
  330. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +13 -4
  331. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +68 -21
  332. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +71 -29
  333. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +15 -4
  334. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +159 -38
  335. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +105 -57
  336. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +16 -4
  337. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +61 -13
  338. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +33 -19
  339. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +8 -4
  340. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +708 -233
  341. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +499 -262
  342. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +63 -4
  343. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +20 -10
  344. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +22 -8
  345. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +8 -4
  346. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +100 -35
  347. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +95 -45
  348. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +17 -4
  349. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +118 -16
  350. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +43 -12
  351. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +8 -4
  352. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +9 -6
  353. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +10 -4
  354. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +6 -4
  355. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +12 -7
  356. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +17 -7
  357. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +7 -4
  358. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +10 -7
  359. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +10 -4
  360. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +6 -4
  361. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb.h +22 -15
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.c +12 -6
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/opencensus.upb_minitable.h +6 -4
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +20 -8
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +13 -7
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +6 -4
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +8 -5
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +10 -4
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +6 -4
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +17 -10
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +18 -8
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +7 -4
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +5 -4
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +3 -1
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.h +5 -4
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +19 -10
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +19 -9
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +7 -4
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +14 -11
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +10 -4
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +6 -4
  382. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +216 -102
  383. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +124 -57
  384. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +21 -4
  385. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +5 -4
  386. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +7 -1
  387. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +6 -4
  388. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +24 -11
  389. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +33 -11
  390. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +10 -4
  391. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +42 -22
  392. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +27 -13
  393. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +8 -4
  394. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +444 -0
  395. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +135 -0
  396. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +38 -0
  397. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +56 -13
  398. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +29 -13
  399. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +7 -4
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +29 -12
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +20 -10
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +7 -4
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +13 -8
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +17 -7
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +7 -4
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +327 -134
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +208 -121
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +26 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +8 -5
  410. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +10 -4
  411. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +6 -4
  412. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +23 -10
  413. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +15 -9
  414. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +6 -4
  415. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +31 -14
  416. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +39 -17
  417. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +10 -4
  418. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +6 -5
  419. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +7 -1
  420. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +6 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +22 -11
  422. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +14 -8
  423. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +6 -4
  424. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +8 -5
  425. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +10 -4
  426. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +6 -4
  427. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +106 -0
  428. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +52 -0
  429. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +32 -0
  430. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -4
  431. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +3 -1
  432. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.h +5 -4
  433. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +170 -31
  434. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +83 -37
  435. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +14 -4
  436. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +25 -12
  437. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +27 -13
  438. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +8 -4
  439. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +112 -39
  440. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +73 -43
  441. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +12 -4
  442. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +14 -6
  443. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +17 -7
  444. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +7 -4
  445. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +58 -20
  446. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +44 -26
  447. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +9 -4
  448. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +5 -4
  449. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +7 -1
  450. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +6 -4
  451. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +122 -40
  452. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +105 -47
  453. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +19 -4
  454. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +18 -8
  455. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +18 -8
  456. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +7 -4
  457. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +65 -24
  458. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +47 -25
  459. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +10 -4
  460. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +10 -7
  461. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +10 -4
  462. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +6 -4
  463. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +16 -6
  464. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +26 -8
  465. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +9 -4
  466. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +9 -6
  467. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +10 -4
  468. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +6 -4
  469. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +10 -9
  470. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +23 -1
  471. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +10 -4
  472. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +16 -8
  473. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +15 -5
  474. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +7 -4
  475. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +13 -5
  476. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +11 -5
  477. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +6 -4
  478. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +9 -6
  479. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +10 -4
  480. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +6 -4
  481. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +8 -5
  482. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +10 -4
  483. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +6 -4
  484. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +16 -9
  485. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +24 -10
  486. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +8 -4
  487. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +5 -4
  488. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +11 -1
  489. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +7 -4
  490. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +51 -10
  491. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +30 -9
  492. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +7 -4
  493. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +14 -6
  494. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +15 -5
  495. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +7 -4
  496. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +30 -12
  497. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +32 -14
  498. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +9 -4
  499. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +24 -10
  500. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +40 -10
  501. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +12 -4
  502. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +30 -17
  503. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +33 -11
  504. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +10 -4
  505. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +12 -7
  506. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +19 -5
  507. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +8 -4
  508. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +5 -4
  509. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +3 -1
  510. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.h +5 -4
  511. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +6 -5
  512. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +7 -1
  513. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +6 -4
  514. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +8 -7
  515. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +11 -1
  516. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +7 -4
  517. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +11 -10
  518. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +15 -1
  519. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +8 -4
  520. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +14 -9
  521. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +15 -5
  522. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +7 -4
  523. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +5 -4
  524. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +3 -1
  525. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.h +5 -4
  526. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +8 -7
  527. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +7 -1
  528. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +6 -4
  529. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +12 -7
  530. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +11 -5
  531. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +6 -4
  532. data/src/core/ext/upb-gen/google/api/annotations.upb.h +17 -7
  533. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +5 -2
  534. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +5 -4
  535. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +135 -36
  536. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +121 -56
  537. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +18 -4
  538. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +525 -69
  539. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +202 -68
  540. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +23 -4
  541. data/src/core/ext/upb-gen/google/api/http.upb.h +30 -16
  542. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +22 -8
  543. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +8 -4
  544. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +12 -6
  545. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +10 -4
  546. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +6 -4
  547. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +8 -6
  548. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +7 -1
  549. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +6 -4
  550. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +583 -181
  551. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +376 -215
  552. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +56 -21
  553. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +8 -6
  554. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +7 -1
  555. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +6 -4
  556. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +6 -4
  557. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +7 -1
  558. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +6 -4
  559. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +33 -10
  560. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +32 -14
  561. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +9 -4
  562. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +8 -6
  563. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +7 -1
  564. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +6 -4
  565. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +15 -13
  566. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +39 -1
  567. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +14 -4
  568. data/src/core/ext/upb-gen/google/rpc/status.upb.h +12 -6
  569. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +10 -4
  570. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +6 -4
  571. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb.h +22 -14
  572. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.c +24 -6
  573. data/src/core/ext/upb-gen/opencensus/proto/trace/v1/trace_config.upb_minitable.h +9 -4
  574. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +19 -10
  575. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +15 -5
  576. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +7 -4
  577. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +98 -39
  578. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +87 -37
  579. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +17 -4
  580. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +14 -8
  581. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +15 -5
  582. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +7 -4
  583. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +8 -6
  584. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +11 -1
  585. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +7 -4
  586. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +47 -22
  587. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +58 -20
  588. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +14 -4
  589. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +16 -8
  590. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +18 -4
  591. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +8 -4
  592. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +72 -19
  593. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +60 -22
  594. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +14 -4
  595. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +69 -23
  596. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +31 -12
  597. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +8 -4
  598. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +19 -9
  599. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +13 -6
  600. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +6 -4
  601. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +6 -5
  602. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +4 -1
  603. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +5 -4
  604. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +19 -9
  605. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +13 -6
  606. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +6 -4
  607. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +18 -8
  608. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +13 -6
  609. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +6 -4
  610. data/src/core/ext/upb-gen/validate/validate.upb.h +264 -172
  611. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +185 -87
  612. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +29 -5
  613. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +69 -23
  614. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +31 -12
  615. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +8 -4
  616. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +19 -9
  617. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +13 -6
  618. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +6 -4
  619. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +6 -5
  620. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +4 -1
  621. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +5 -4
  622. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +46 -18
  623. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +32 -11
  624. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +9 -4
  625. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +18 -8
  626. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +13 -6
  627. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +6 -4
  628. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +6 -5
  629. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +7 -1
  630. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +6 -4
  631. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +9 -6
  632. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +10 -4
  633. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +6 -4
  634. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +16 -9
  635. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +18 -8
  636. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +7 -4
  637. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +11 -4
  638. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +14 -4
  639. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +7 -4
  640. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +9 -6
  641. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +10 -4
  642. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +6 -4
  643. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +12 -7
  644. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +11 -5
  645. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +6 -4
  646. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +21 -11
  647. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +18 -8
  648. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +7 -4
  649. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +11 -8
  650. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +10 -4
  651. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +6 -4
  652. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +29 -10
  653. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +24 -6
  654. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +9 -4
  655. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +8 -5
  656. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +10 -4
  657. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +6 -4
  658. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +9 -6
  659. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +10 -4
  660. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +6 -4
  661. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +13 -5
  662. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +17 -7
  663. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +7 -4
  664. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +5 -4
  665. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +7 -1
  666. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +6 -4
  667. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +19 -6
  668. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +18 -8
  669. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +7 -4
  670. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +81 -22
  671. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +85 -43
  672. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +15 -4
  673. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +44 -7
  674. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +48 -22
  675. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +11 -4
  676. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +9 -6
  677. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +14 -4
  678. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +7 -4
  679. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +18 -10
  680. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +17 -7
  681. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +7 -4
  682. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +17 -8
  683. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +19 -9
  684. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +7 -4
  685. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +12 -10
  686. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +15 -1
  687. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +8 -4
  688. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +9 -6
  689. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +10 -4
  690. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +6 -4
  691. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +2 -1
  692. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -4
  693. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +2 -1
  694. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -4
  695. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +2 -1
  696. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -4
  697. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +2 -1
  698. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -4
  699. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +2 -1
  700. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -4
  701. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +2 -1
  702. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -4
  703. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +2 -1
  704. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -4
  705. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +2 -1
  706. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -4
  707. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +2 -1
  708. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -4
  709. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +88 -82
  710. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -4
  711. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +2 -1
  712. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -4
  713. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +2 -1
  714. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -4
  715. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +2 -1
  716. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -4
  717. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +63 -61
  718. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -4
  719. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +223 -211
  720. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +10 -4
  721. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -1
  722. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -4
  723. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +319 -298
  724. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +10 -4
  725. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +2 -1
  726. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -4
  727. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +116 -106
  728. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -4
  729. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +2 -1
  730. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -4
  731. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +2 -1
  732. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -4
  733. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +2 -1
  734. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -4
  735. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +187 -141
  736. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +30 -4
  737. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +12 -12
  738. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -4
  739. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +2 -1
  740. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -4
  741. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +2 -1
  742. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -4
  743. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +2 -1
  744. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -4
  745. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +175 -165
  746. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -4
  747. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +199 -188
  748. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -4
  749. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +2 -1
  750. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -4
  751. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +2 -1
  752. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -4
  753. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +231 -223
  754. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -4
  755. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -1
  756. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -4
  757. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +2 -1
  758. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -4
  759. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +2 -1
  760. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -4
  761. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -1
  762. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -4
  763. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -1
  764. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -4
  765. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -1
  766. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -4
  767. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +41 -37
  768. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -4
  769. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +124 -94
  770. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +10 -4
  771. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +2 -1
  772. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -4
  773. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +43 -40
  774. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -4
  775. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +2 -1
  776. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -4
  777. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +22 -13
  778. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -4
  779. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -1
  780. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -4
  781. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +2 -1
  782. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -4
  783. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +2 -1
  784. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -4
  785. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +2 -1
  786. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -4
  787. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +71 -66
  788. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -4
  789. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +2 -1
  790. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -4
  791. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +613 -605
  792. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -4
  793. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +2 -1
  794. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -4
  795. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +2 -1
  796. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -4
  797. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +32 -21
  798. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +10 -4
  799. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +20 -18
  800. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -4
  801. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -1
  802. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -4
  803. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +2 -1
  804. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -4
  805. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.c +64 -60
  806. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opencensus.upbdefs.h +5 -4
  807. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +2 -1
  808. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -4
  809. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +2 -1
  810. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -4
  811. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +2 -1
  812. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -4
  813. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +2 -1
  814. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -4
  815. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +2 -1
  816. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -4
  817. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +23 -21
  818. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -4
  819. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +147 -143
  820. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -4
  821. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -1
  822. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -4
  823. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -1
  824. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -4
  825. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -1
  826. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -4
  827. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +87 -0
  828. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +48 -0
  829. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +38 -34
  830. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -4
  831. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -1
  832. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -4
  833. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +2 -1
  834. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -4
  835. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +292 -289
  836. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -4
  837. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +2 -1
  838. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -4
  839. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +53 -0
  840. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +33 -0
  841. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -1
  842. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -4
  843. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +84 -76
  844. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +10 -4
  845. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -1
  846. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -4
  847. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -1
  848. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -4
  849. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +2 -1
  850. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -4
  851. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +2 -1
  852. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -4
  853. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +2 -1
  854. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -4
  855. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +2 -1
  856. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -4
  857. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -1
  858. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -4
  859. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +2 -1
  860. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -4
  861. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +2 -1
  862. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -4
  863. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +2 -1
  864. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -4
  865. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +2 -1
  866. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -4
  867. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  868. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  869. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +2 -1
  870. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -4
  871. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +2 -1
  872. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -4
  873. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +2 -1
  874. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -4
  875. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +2 -1
  876. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -4
  877. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +2 -1
  878. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -4
  879. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +2 -1
  880. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -4
  881. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +41 -34
  882. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -4
  883. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +2 -1
  884. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -4
  885. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +2 -1
  886. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -4
  887. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +2 -1
  888. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -4
  889. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -1
  890. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -4
  891. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +2 -1
  892. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -4
  893. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +2 -1
  894. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -4
  895. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +2 -1
  896. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -4
  897. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +2 -1
  898. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -4
  899. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +2 -1
  900. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -4
  901. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +2 -1
  902. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -4
  903. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +2 -1
  904. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -4
  905. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +2 -1
  906. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -4
  907. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +2 -1
  908. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -4
  909. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +2 -1
  910. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -4
  911. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +110 -108
  912. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -4
  913. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +103 -79
  914. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +15 -4
  915. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +2 -1
  916. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -4
  917. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +2 -1
  918. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -4
  919. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +2 -1
  920. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -4
  921. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +485 -458
  922. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -4
  923. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +2 -1
  924. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -4
  925. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +2 -1
  926. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -4
  927. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +2 -1
  928. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -4
  929. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +2 -1
  930. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -4
  931. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +2 -1
  932. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -4
  933. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +2 -1
  934. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -4
  935. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.c +2 -1
  936. data/src/core/ext/upbdefs-gen/opencensus/proto/trace/v1/trace_config.upbdefs.h +5 -4
  937. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +2 -1
  938. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -4
  939. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +2 -1
  940. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -4
  941. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +2 -1
  942. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -4
  943. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +2 -1
  944. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -4
  945. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +2 -1
  946. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -4
  947. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +2 -1
  948. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -4
  949. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +2 -1
  950. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -4
  951. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +2 -1
  952. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -4
  953. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +2 -1
  954. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -4
  955. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +2 -1
  956. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -4
  957. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +2 -1
  958. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -4
  959. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +2 -1
  960. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -4
  961. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +2 -1
  962. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -4
  963. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +2 -1
  964. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -4
  965. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +2 -1
  966. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -4
  967. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +2 -1
  968. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -4
  969. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +2 -1
  970. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -4
  971. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +2 -1
  972. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -4
  973. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +2 -1
  974. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -4
  975. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +2 -1
  976. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -4
  977. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +2 -1
  978. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -4
  979. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +2 -1
  980. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -4
  981. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +2 -1
  982. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -4
  983. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +2 -1
  984. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -4
  985. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +2 -1
  986. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -4
  987. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +2 -1
  988. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -4
  989. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +2 -1
  990. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -4
  991. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +2 -1
  992. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -4
  993. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +2 -1
  994. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -4
  995. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +2 -1
  996. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -4
  997. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +2 -1
  998. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -4
  999. data/src/core/filter/blackboard.cc +33 -0
  1000. data/src/core/filter/blackboard.h +70 -0
  1001. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.cc +16 -15
  1002. data/src/core/{lib/transport → handshaker/endpoint_info}/endpoint_info_handshaker.h +4 -4
  1003. data/src/core/handshaker/handshaker.cc +199 -0
  1004. data/src/core/{lib/transport → handshaker}/handshaker.h +60 -55
  1005. data/src/core/{lib/transport → handshaker}/handshaker_factory.h +19 -3
  1006. data/src/core/{lib/transport → handshaker}/handshaker_registry.cc +2 -3
  1007. data/src/core/{lib/transport → handshaker}/handshaker_registry.h +4 -4
  1008. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.cc +123 -164
  1009. data/src/core/{lib/transport → handshaker/http_connect}/http_connect_handshaker.h +4 -4
  1010. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.cc +35 -42
  1011. data/src/core/{client_channel → handshaker/http_connect}/http_proxy_mapper.h +5 -6
  1012. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.cc +57 -0
  1013. data/src/core/handshaker/http_connect/xds_http_proxy_mapper.h +46 -0
  1014. data/src/core/{lib/handshaker → handshaker}/proxy_mapper.h +3 -4
  1015. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.cc +2 -2
  1016. data/src/core/{lib/handshaker → handshaker}/proxy_mapper_registry.h +4 -5
  1017. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.cc +98 -85
  1018. data/src/core/{lib/security/transport → handshaker/security}/secure_endpoint.h +10 -12
  1019. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.cc +176 -230
  1020. data/src/core/{lib/security/transport → handshaker/security}/security_handshaker.h +7 -9
  1021. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.cc +53 -67
  1022. data/src/core/{lib/transport → handshaker/tcp_connect}/tcp_connect_handshaker.h +4 -4
  1023. data/src/core/lib/address_utils/parse_address.cc +33 -44
  1024. data/src/core/lib/address_utils/parse_address.h +1 -3
  1025. data/src/core/lib/address_utils/sockaddr_utils.cc +22 -19
  1026. data/src/core/lib/address_utils/sockaddr_utils.h +0 -2
  1027. data/src/core/lib/channel/channel_args.cc +20 -26
  1028. data/src/core/lib/channel/channel_args.h +34 -21
  1029. data/src/core/lib/channel/channel_args_preconditioning.cc +2 -2
  1030. data/src/core/lib/channel/channel_args_preconditioning.h +2 -3
  1031. data/src/core/lib/channel/channel_stack.cc +19 -81
  1032. data/src/core/lib/channel/channel_stack.h +27 -63
  1033. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  1034. data/src/core/lib/channel/channel_stack_builder.h +1 -7
  1035. data/src/core/lib/channel/channel_stack_builder_impl.cc +5 -157
  1036. data/src/core/lib/channel/channel_stack_builder_impl.h +13 -3
  1037. data/src/core/lib/channel/connected_channel.cc +49 -706
  1038. data/src/core/lib/channel/promise_based_filter.cc +249 -324
  1039. data/src/core/lib/channel/promise_based_filter.h +264 -559
  1040. data/src/core/lib/channel/status_util.cc +2 -4
  1041. data/src/core/lib/channel/status_util.h +1 -2
  1042. data/src/core/lib/compression/compression.cc +7 -10
  1043. data/src/core/lib/compression/compression_internal.cc +7 -10
  1044. data/src/core/lib/compression/compression_internal.h +2 -5
  1045. data/src/core/lib/compression/message_compress.cc +16 -18
  1046. data/src/core/lib/compression/message_compress.h +1 -2
  1047. data/src/core/lib/debug/trace.cc +48 -67
  1048. data/src/core/lib/debug/trace.h +2 -97
  1049. data/src/core/lib/debug/trace_flags.cc +242 -0
  1050. data/src/core/lib/debug/trace_flags.h +131 -0
  1051. data/src/core/lib/debug/trace_impl.h +125 -0
  1052. data/src/core/lib/event_engine/ares_resolver.cc +165 -92
  1053. data/src/core/lib/event_engine/ares_resolver.h +11 -18
  1054. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +14 -15
  1055. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
  1056. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +47 -34
  1057. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +4 -6
  1058. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +1 -1
  1059. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +28 -31
  1060. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +5 -6
  1061. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +3 -5
  1062. data/src/core/lib/event_engine/channel_args_endpoint_config.h +1 -3
  1063. data/src/core/lib/event_engine/common_closures.h +1 -2
  1064. data/src/core/lib/event_engine/default_event_engine.cc +13 -16
  1065. data/src/core/lib/event_engine/default_event_engine.h +3 -4
  1066. data/src/core/lib/event_engine/default_event_engine_factory.cc +3 -4
  1067. data/src/core/lib/event_engine/default_event_engine_factory.h +1 -2
  1068. data/src/core/lib/event_engine/event_engine.cc +35 -5
  1069. data/src/core/lib/event_engine/event_engine_context.h +5 -4
  1070. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -1
  1071. data/src/core/lib/event_engine/extensions/supports_fd.h +25 -2
  1072. data/src/core/lib/event_engine/extensions/tcp_trace.h +42 -0
  1073. data/src/core/lib/event_engine/forkable.cc +12 -13
  1074. data/src/core/lib/event_engine/forkable.h +0 -13
  1075. data/src/core/lib/event_engine/grpc_polled_fd.h +2 -4
  1076. data/src/core/lib/event_engine/handle_containers.h +1 -3
  1077. data/src/core/lib/event_engine/memory_allocator_factory.h +1 -3
  1078. data/src/core/lib/event_engine/nameser.h +1 -1
  1079. data/src/core/lib/event_engine/poller.h +1 -2
  1080. data/src/core/lib/event_engine/posix.h +1 -2
  1081. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +28 -30
  1082. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -8
  1083. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +27 -31
  1084. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +2 -4
  1085. data/src/core/lib/event_engine/posix_engine/event_poller.h +1 -3
  1086. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -3
  1087. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -6
  1088. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +5 -6
  1089. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +0 -1
  1090. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -9
  1091. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +0 -1
  1092. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +3 -4
  1093. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +0 -1
  1094. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +96 -103
  1095. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +22 -23
  1096. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +84 -65
  1097. data/src/core/lib/event_engine/posix_engine/posix_engine.h +16 -13
  1098. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +1 -2
  1099. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +27 -30
  1100. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +13 -13
  1101. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +27 -33
  1102. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +1 -3
  1103. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +46 -40
  1104. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -10
  1105. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -6
  1106. data/src/core/lib/event_engine/posix_engine/timer.h +4 -7
  1107. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +2 -3
  1108. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +16 -25
  1109. data/src/core/lib/event_engine/posix_engine/timer_manager.h +4 -7
  1110. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +7 -10
  1111. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +2 -5
  1112. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +3 -4
  1113. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +0 -1
  1114. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +2 -3
  1115. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +0 -1
  1116. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +0 -1
  1117. data/src/core/lib/event_engine/query_extensions.h +3 -2
  1118. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +2 -5
  1119. data/src/core/lib/event_engine/resolved_address.cc +8 -7
  1120. data/src/core/lib/event_engine/resolved_address_internal.h +1 -2
  1121. data/src/core/lib/event_engine/shim.cc +3 -3
  1122. data/src/core/lib/event_engine/slice.cc +5 -7
  1123. data/src/core/lib/event_engine/slice_buffer.cc +2 -4
  1124. data/src/core/lib/event_engine/tcp_socket_utils.cc +21 -26
  1125. data/src/core/lib/event_engine/tcp_socket_utils.h +1 -2
  1126. data/src/core/lib/event_engine/thread_local.cc +2 -2
  1127. data/src/core/lib/event_engine/thread_local.h +1 -1
  1128. data/src/core/lib/event_engine/thread_pool/thread_count.cc +5 -8
  1129. data/src/core/lib/event_engine/thread_pool/thread_count.h +4 -6
  1130. data/src/core/lib/event_engine/thread_pool/thread_pool.h +1 -4
  1131. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +1 -2
  1132. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +46 -53
  1133. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +9 -15
  1134. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +50 -23
  1135. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +7 -7
  1136. data/src/core/lib/event_engine/time_util.cc +3 -4
  1137. data/src/core/lib/event_engine/time_util.h +1 -3
  1138. data/src/core/lib/event_engine/utils.cc +19 -6
  1139. data/src/core/lib/event_engine/utils.h +9 -4
  1140. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +158 -132
  1141. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -6
  1142. data/src/core/lib/event_engine/windows/iocp.cc +24 -22
  1143. data/src/core/lib/event_engine/windows/iocp.h +2 -3
  1144. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +4 -6
  1145. data/src/core/lib/event_engine/windows/win_socket.cc +47 -36
  1146. data/src/core/lib/event_engine/windows/win_socket.h +8 -10
  1147. data/src/core/lib/event_engine/windows/windows_endpoint.cc +58 -44
  1148. data/src/core/lib/event_engine/windows/windows_engine.cc +245 -136
  1149. data/src/core/lib/event_engine/windows/windows_engine.h +143 -33
  1150. data/src/core/lib/event_engine/windows/windows_listener.cc +29 -43
  1151. data/src/core/lib/event_engine/windows/windows_listener.h +4 -5
  1152. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +3 -3
  1153. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +2 -5
  1154. data/src/core/lib/event_engine/work_queue/work_queue.h +1 -3
  1155. data/src/core/lib/experiments/config.cc +59 -32
  1156. data/src/core/lib/experiments/config.h +55 -2
  1157. data/src/core/lib/experiments/experiments.cc +310 -293
  1158. data/src/core/lib/experiments/experiments.h +145 -122
  1159. data/src/core/lib/iomgr/buffer_list.cc +7 -8
  1160. data/src/core/lib/iomgr/buffer_list.h +2 -4
  1161. data/src/core/lib/iomgr/call_combiner.cc +42 -68
  1162. data/src/core/lib/iomgr/call_combiner.h +12 -17
  1163. data/src/core/lib/iomgr/cfstream_handle.cc +14 -20
  1164. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  1165. data/src/core/lib/iomgr/closure.cc +2 -2
  1166. data/src/core/lib/iomgr/closure.h +17 -21
  1167. data/src/core/lib/iomgr/combiner.cc +38 -52
  1168. data/src/core/lib/iomgr/combiner.h +2 -6
  1169. data/src/core/lib/iomgr/endpoint.cc +1 -7
  1170. data/src/core/lib/iomgr/endpoint.h +4 -6
  1171. data/src/core/lib/iomgr/endpoint_cfstream.cc +45 -76
  1172. data/src/core/lib/iomgr/endpoint_pair_posix.cc +8 -10
  1173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +16 -17
  1174. data/src/core/lib/iomgr/error.cc +24 -34
  1175. data/src/core/lib/iomgr/error.h +8 -11
  1176. data/src/core/lib/iomgr/error_cfstream.cc +1 -3
  1177. data/src/core/lib/iomgr/ev_apple.cc +16 -24
  1178. data/src/core/lib/iomgr/ev_epoll1_linux.cc +81 -126
  1179. data/src/core/lib/iomgr/ev_poll_posix.cc +62 -62
  1180. data/src/core/lib/iomgr/ev_posix.cc +68 -60
  1181. data/src/core/lib/iomgr/ev_posix.h +9 -12
  1182. data/src/core/lib/iomgr/event_engine_shims/closure.cc +11 -15
  1183. data/src/core/lib/iomgr/event_engine_shims/closure.h +1 -3
  1184. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +35 -53
  1185. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -2
  1186. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +10 -15
  1187. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +1 -2
  1188. data/src/core/lib/iomgr/exec_ctx.cc +14 -18
  1189. data/src/core/lib/iomgr/exec_ctx.h +33 -23
  1190. data/src/core/lib/iomgr/executor.cc +60 -59
  1191. data/src/core/lib/iomgr/executor.h +2 -2
  1192. data/src/core/lib/iomgr/fork_posix.cc +11 -15
  1193. data/src/core/lib/iomgr/fork_windows.cc +3 -2
  1194. data/src/core/lib/iomgr/internal_errqueue.cc +5 -6
  1195. data/src/core/lib/iomgr/iocp_windows.cc +16 -15
  1196. data/src/core/lib/iomgr/iocp_windows.h +0 -1
  1197. data/src/core/lib/iomgr/iomgr.cc +19 -26
  1198. data/src/core/lib/iomgr/iomgr.h +0 -1
  1199. data/src/core/lib/iomgr/iomgr_internal.cc +1 -2
  1200. data/src/core/lib/iomgr/iomgr_internal.h +0 -1
  1201. data/src/core/lib/iomgr/iomgr_posix.cc +2 -1
  1202. data/src/core/lib/iomgr/iomgr_windows.cc +7 -6
  1203. data/src/core/lib/iomgr/lockfree_event.cc +12 -21
  1204. data/src/core/lib/iomgr/lockfree_event.h +1 -2
  1205. data/src/core/lib/iomgr/nameser.h +1 -1
  1206. data/src/core/lib/iomgr/polling_entity.cc +17 -11
  1207. data/src/core/lib/iomgr/pollset.cc +2 -2
  1208. data/src/core/lib/iomgr/pollset.h +0 -3
  1209. data/src/core/lib/iomgr/pollset_set.cc +2 -2
  1210. data/src/core/lib/iomgr/pollset_set_windows.cc +0 -1
  1211. data/src/core/lib/iomgr/pollset_windows.cc +2 -6
  1212. data/src/core/lib/iomgr/pollset_windows.h +0 -1
  1213. data/src/core/lib/iomgr/port.h +2 -2
  1214. data/src/core/lib/iomgr/python_util.h +1 -2
  1215. data/src/core/lib/iomgr/resolve_address.cc +4 -7
  1216. data/src/core/lib/iomgr/resolve_address.h +3 -6
  1217. data/src/core/lib/iomgr/resolve_address_impl.h +0 -1
  1218. data/src/core/lib/iomgr/resolve_address_posix.cc +12 -21
  1219. data/src/core/lib/iomgr/resolve_address_windows.cc +9 -12
  1220. data/src/core/lib/iomgr/resolved_address.h +0 -1
  1221. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +5 -6
  1222. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  1223. data/src/core/lib/iomgr/socket_factory_posix.h +1 -2
  1224. data/src/core/lib/iomgr/socket_mutator.cc +3 -5
  1225. data/src/core/lib/iomgr/socket_mutator.h +2 -4
  1226. data/src/core/lib/iomgr/socket_utils.h +0 -1
  1227. data/src/core/lib/iomgr/socket_utils_common_posix.cc +45 -52
  1228. data/src/core/lib/iomgr/socket_utils_linux.cc +1 -3
  1229. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -6
  1230. data/src/core/lib/iomgr/socket_utils_posix.h +1 -2
  1231. data/src/core/lib/iomgr/socket_utils_windows.cc +1 -3
  1232. data/src/core/lib/iomgr/socket_windows.cc +11 -14
  1233. data/src/core/lib/iomgr/socket_windows.h +1 -2
  1234. data/src/core/lib/iomgr/tcp_client.cc +2 -2
  1235. data/src/core/lib/iomgr/tcp_client.h +1 -2
  1236. data/src/core/lib/iomgr/tcp_client_cfstream.cc +12 -20
  1237. data/src/core/lib/iomgr/tcp_client_posix.cc +24 -36
  1238. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -12
  1239. data/src/core/lib/iomgr/tcp_posix.cc +124 -193
  1240. data/src/core/lib/iomgr/tcp_posix.h +1 -3
  1241. data/src/core/lib/iomgr/tcp_server.cc +2 -2
  1242. data/src/core/lib/iomgr/tcp_server.h +3 -4
  1243. data/src/core/lib/iomgr/tcp_server_posix.cc +61 -79
  1244. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  1245. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +13 -17
  1246. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +13 -14
  1247. data/src/core/lib/iomgr/tcp_server_windows.cc +34 -41
  1248. data/src/core/lib/iomgr/tcp_windows.cc +38 -66
  1249. data/src/core/lib/iomgr/timer.cc +2 -2
  1250. data/src/core/lib/iomgr/timer.h +2 -3
  1251. data/src/core/lib/iomgr/timer_generic.cc +73 -106
  1252. data/src/core/lib/iomgr/timer_generic.h +0 -1
  1253. data/src/core/lib/iomgr/timer_heap.cc +4 -6
  1254. data/src/core/lib/iomgr/timer_manager.cc +27 -44
  1255. data/src/core/lib/iomgr/timer_manager.h +0 -1
  1256. data/src/core/lib/iomgr/unix_sockets_posix.cc +5 -6
  1257. data/src/core/lib/iomgr/unix_sockets_posix.h +1 -3
  1258. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -4
  1259. data/src/core/lib/iomgr/vsock.cc +5 -8
  1260. data/src/core/lib/iomgr/vsock.h +1 -3
  1261. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -4
  1262. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1263. data/src/core/lib/promise/activity.cc +4 -5
  1264. data/src/core/lib/promise/activity.h +54 -23
  1265. data/src/core/lib/promise/all_ok.h +52 -9
  1266. data/src/core/lib/promise/arena_promise.h +1 -3
  1267. data/src/core/lib/promise/cancel_callback.h +34 -6
  1268. data/src/core/lib/promise/context.h +18 -9
  1269. data/src/core/lib/promise/detail/basic_seq.h +33 -20
  1270. data/src/core/lib/promise/detail/join_state.h +555 -760
  1271. data/src/core/lib/promise/detail/promise_factory.h +45 -29
  1272. data/src/core/lib/promise/detail/promise_like.h +49 -11
  1273. data/src/core/lib/promise/detail/seq_state.h +1314 -1977
  1274. data/src/core/lib/promise/detail/status.h +36 -14
  1275. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +1 -2
  1276. data/src/core/lib/promise/for_each.h +97 -39
  1277. data/src/core/lib/promise/if.h +21 -17
  1278. data/src/core/lib/promise/interceptor_list.h +22 -36
  1279. data/src/core/lib/promise/latch.h +25 -40
  1280. data/src/core/lib/promise/loop.h +23 -10
  1281. data/src/core/lib/promise/map.h +77 -9
  1282. data/src/core/lib/promise/observable.h +181 -0
  1283. data/src/core/lib/promise/party.cc +262 -154
  1284. data/src/core/lib/promise/party.h +186 -388
  1285. data/src/core/lib/promise/pipe.h +34 -57
  1286. data/src/core/lib/promise/poll.h +117 -39
  1287. data/src/core/lib/promise/promise.h +12 -6
  1288. data/src/core/lib/promise/race.h +10 -5
  1289. data/src/core/lib/promise/seq.h +57 -64
  1290. data/src/core/lib/promise/sleep.cc +4 -5
  1291. data/src/core/lib/promise/sleep.h +2 -4
  1292. data/src/core/lib/promise/status_flag.h +160 -54
  1293. data/src/core/lib/promise/try_join.h +37 -20
  1294. data/src/core/lib/promise/try_seq.h +113 -77
  1295. data/src/core/lib/resource_quota/api.cc +4 -7
  1296. data/src/core/lib/resource_quota/api.h +3 -5
  1297. data/src/core/lib/resource_quota/arena.cc +64 -87
  1298. data/src/core/lib/resource_quota/arena.h +142 -215
  1299. data/src/core/lib/resource_quota/connection_quota.cc +8 -10
  1300. data/src/core/lib/resource_quota/connection_quota.h +3 -4
  1301. data/src/core/lib/resource_quota/memory_quota.cc +51 -52
  1302. data/src/core/lib/resource_quota/memory_quota.h +27 -21
  1303. data/src/core/lib/resource_quota/periodic_update.cc +5 -5
  1304. data/src/core/lib/resource_quota/periodic_update.h +1 -3
  1305. data/src/core/lib/resource_quota/resource_quota.cc +2 -2
  1306. data/src/core/lib/resource_quota/resource_quota.h +6 -8
  1307. data/src/core/lib/resource_quota/thread_quota.cc +4 -4
  1308. data/src/core/lib/resource_quota/thread_quota.h +3 -4
  1309. data/src/core/lib/security/authorization/audit_logging.cc +10 -12
  1310. data/src/core/lib/security/authorization/audit_logging.h +3 -5
  1311. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  1312. data/src/core/lib/security/authorization/authorization_policy_provider.h +5 -7
  1313. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -4
  1314. data/src/core/lib/security/authorization/evaluate_args.cc +11 -16
  1315. data/src/core/lib/security/authorization/evaluate_args.h +1 -3
  1316. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +4 -5
  1317. data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -3
  1318. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +25 -34
  1319. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +11 -10
  1320. data/src/core/lib/security/authorization/matchers.cc +5 -8
  1321. data/src/core/lib/security/authorization/matchers.h +1 -3
  1322. data/src/core/lib/security/authorization/rbac_policy.cc +2 -2
  1323. data/src/core/lib/security/authorization/rbac_policy.h +2 -5
  1324. data/src/core/lib/security/authorization/stdout_logger.cc +7 -7
  1325. data/src/core/lib/security/authorization/stdout_logger.h +2 -3
  1326. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +7 -8
  1327. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +6 -6
  1328. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +0 -1
  1329. data/src/core/lib/security/context/security_context.cc +51 -49
  1330. data/src/core/lib/security/context/security_context.h +46 -17
  1331. data/src/core/lib/security/credentials/alts/alts_credentials.cc +6 -7
  1332. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -7
  1333. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +4 -5
  1334. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +1 -2
  1335. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +3 -5
  1336. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +3 -5
  1337. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -7
  1338. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +4 -5
  1339. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +2 -2
  1340. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -2
  1341. data/src/core/lib/security/credentials/call_creds_util.cc +8 -8
  1342. data/src/core/lib/security/credentials/call_creds_util.h +2 -2
  1343. data/src/core/lib/security/credentials/channel_creds_registry.h +5 -6
  1344. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +14 -13
  1345. data/src/core/lib/security/credentials/composite/composite_credentials.cc +18 -21
  1346. data/src/core/lib/security/credentials/composite/composite_credentials.h +9 -8
  1347. data/src/core/lib/security/credentials/credentials.cc +20 -20
  1348. data/src/core/lib/security/credentials/credentials.h +13 -14
  1349. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +336 -339
  1350. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +58 -46
  1351. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -5
  1352. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1353. data/src/core/lib/security/credentials/external/external_account_credentials.cc +410 -374
  1354. data/src/core/lib/security/credentials/external/external_account_credentials.h +127 -59
  1355. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +90 -53
  1356. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +30 -9
  1357. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +103 -129
  1358. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +20 -22
  1359. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -4
  1360. data/src/core/lib/security/credentials/fake/fake_credentials.h +10 -9
  1361. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +195 -0
  1362. data/src/core/lib/security/credentials/gcp_service_account_identity/gcp_service_account_identity_credentials.h +90 -0
  1363. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +4 -6
  1364. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +60 -77
  1365. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -7
  1366. data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -14
  1367. data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
  1368. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
  1369. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
  1370. data/src/core/lib/security/credentials/jwt/json_token.cc +28 -31
  1371. data/src/core/lib/security/credentials/jwt/json_token.h +2 -4
  1372. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +24 -30
  1373. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +9 -9
  1374. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +80 -87
  1375. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +3 -5
  1376. data/src/core/lib/security/credentials/local/local_credentials.cc +3 -4
  1377. data/src/core/lib/security/credentials/local/local_credentials.h +5 -5
  1378. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +202 -302
  1379. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +48 -71
  1380. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +22 -35
  1381. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +11 -13
  1382. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +47 -59
  1383. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +8 -9
  1384. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +28 -28
  1385. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +2 -3
  1386. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_match.cc +0 -2
  1387. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +107 -46
  1388. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +15 -14
  1389. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +8 -12
  1390. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +9 -10
  1391. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +27 -29
  1392. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
  1393. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +6 -10
  1394. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +6 -9
  1395. data/src/core/lib/security/credentials/tls/tls_credentials.cc +20 -24
  1396. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -5
  1397. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -7
  1398. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -2
  1399. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.cc +305 -0
  1400. data/src/core/lib/security/credentials/token_fetcher/token_fetcher_credentials.h +181 -0
  1401. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -19
  1402. data/src/core/lib/security/credentials/xds/xds_credentials.h +7 -9
  1403. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +35 -40
  1404. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1405. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +28 -28
  1406. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +3 -3
  1407. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +8 -10
  1408. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +5 -6
  1409. data/src/core/lib/security/security_connector/load_system_roots.h +1 -2
  1410. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +8 -10
  1411. data/src/core/lib/security/security_connector/load_system_roots_supported.h +1 -2
  1412. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +4 -6
  1413. data/src/core/lib/security/security_connector/local/local_security_connector.cc +35 -35
  1414. data/src/core/lib/security/security_connector/local/local_security_connector.h +3 -3
  1415. data/src/core/lib/security/security_connector/security_connector.cc +11 -15
  1416. data/src/core/lib/security/security_connector/security_connector.h +8 -11
  1417. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +28 -32
  1418. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -5
  1419. data/src/core/lib/security/security_connector/ssl_utils.cc +42 -42
  1420. data/src/core/lib/security/security_connector/ssl_utils.h +6 -9
  1421. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +49 -62
  1422. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +6 -7
  1423. data/src/core/lib/security/transport/auth_filters.h +20 -16
  1424. data/src/core/lib/security/transport/client_auth_filter.cc +19 -27
  1425. data/src/core/lib/security/transport/server_auth_filter.cc +23 -32
  1426. data/src/core/lib/security/util/json_util.cc +4 -6
  1427. data/src/core/lib/security/util/json_util.h +1 -1
  1428. data/src/core/lib/slice/percent_encoding.cc +4 -6
  1429. data/src/core/lib/slice/slice.cc +13 -15
  1430. data/src/core/lib/slice/slice.h +8 -11
  1431. data/src/core/lib/slice/slice_buffer.cc +18 -19
  1432. data/src/core/lib/slice/slice_buffer.h +2 -4
  1433. data/src/core/lib/slice/slice_internal.h +4 -7
  1434. data/src/core/lib/slice/slice_refcount.h +7 -15
  1435. data/src/core/lib/slice/slice_string_helpers.cc +3 -3
  1436. data/src/core/lib/slice/slice_string_helpers.h +1 -3
  1437. data/src/core/lib/surface/byte_buffer.cc +2 -4
  1438. data/src/core/lib/surface/byte_buffer_reader.cc +5 -7
  1439. data/src/core/lib/surface/call.cc +205 -3992
  1440. data/src/core/lib/surface/call.h +176 -100
  1441. data/src/core/lib/surface/call_details.cc +5 -5
  1442. data/src/core/lib/surface/call_log_batch.cc +7 -11
  1443. data/src/core/lib/surface/call_test_only.h +2 -4
  1444. data/src/core/lib/surface/call_utils.cc +231 -0
  1445. data/src/core/lib/surface/call_utils.h +486 -0
  1446. data/src/core/lib/surface/channel.cc +47 -45
  1447. data/src/core/lib/surface/channel.h +20 -19
  1448. data/src/core/lib/surface/channel_create.cc +31 -15
  1449. data/src/core/lib/surface/channel_create.h +3 -3
  1450. data/src/core/lib/surface/channel_init.cc +273 -270
  1451. data/src/core/lib/surface/channel_init.h +179 -120
  1452. data/src/core/lib/surface/channel_stack_type.cc +2 -2
  1453. data/src/core/lib/surface/client_call.cc +441 -0
  1454. data/src/core/lib/surface/client_call.h +187 -0
  1455. data/src/core/lib/surface/completion_queue.cc +127 -124
  1456. data/src/core/lib/surface/completion_queue.h +4 -14
  1457. data/src/core/lib/surface/completion_queue_factory.cc +8 -9
  1458. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1459. data/src/core/lib/surface/connection_context.cc +77 -0
  1460. data/src/core/lib/surface/connection_context.h +156 -0
  1461. data/src/core/lib/surface/event_string.cc +2 -2
  1462. data/src/core/lib/surface/event_string.h +1 -2
  1463. data/src/core/lib/surface/filter_stack_call.cc +1156 -0
  1464. data/src/core/lib/surface/filter_stack_call.h +366 -0
  1465. data/src/core/lib/surface/init.cc +60 -21
  1466. data/src/core/lib/surface/init.h +5 -0
  1467. data/src/core/lib/surface/init_internally.cc +2 -2
  1468. data/src/core/lib/surface/lame_client.cc +20 -26
  1469. data/src/core/lib/surface/lame_client.h +9 -13
  1470. data/src/core/lib/surface/legacy_channel.cc +69 -55
  1471. data/src/core/lib/surface/legacy_channel.h +14 -25
  1472. data/src/core/lib/surface/metadata_array.cc +6 -7
  1473. data/src/core/lib/surface/server_call.cc +227 -0
  1474. data/src/core/lib/surface/server_call.h +167 -0
  1475. data/src/core/lib/surface/validate_metadata.cc +4 -6
  1476. data/src/core/lib/surface/validate_metadata.h +3 -6
  1477. data/src/core/lib/surface/version.cc +3 -4
  1478. data/src/core/lib/transport/bdp_estimator.cc +14 -20
  1479. data/src/core/lib/transport/bdp_estimator.h +12 -18
  1480. data/src/core/{resolver/xds/xds_resolver_trace.cc → lib/transport/call_arena_allocator.cc} +7 -5
  1481. data/src/core/lib/transport/call_arena_allocator.h +91 -0
  1482. data/src/core/lib/transport/call_destination.h +76 -0
  1483. data/src/core/lib/transport/call_filters.cc +64 -393
  1484. data/src/core/lib/transport/call_filters.h +810 -710
  1485. data/src/core/lib/transport/call_final_info.cc +2 -2
  1486. data/src/core/lib/transport/call_final_info.h +3 -4
  1487. data/src/core/lib/transport/call_spine.cc +99 -79
  1488. data/src/core/lib/transport/call_spine.h +252 -251
  1489. data/src/core/lib/transport/call_state.cc +39 -0
  1490. data/src/core/lib/transport/call_state.h +1061 -0
  1491. data/src/core/lib/transport/connectivity_state.cc +38 -47
  1492. data/src/core/lib/transport/connectivity_state.h +3 -7
  1493. data/src/core/lib/transport/error_utils.cc +3 -5
  1494. data/src/core/lib/transport/error_utils.h +2 -4
  1495. data/src/core/lib/transport/interception_chain.cc +147 -0
  1496. data/src/core/lib/transport/interception_chain.h +253 -0
  1497. data/src/core/lib/transport/message.cc +3 -4
  1498. data/src/core/lib/transport/message.h +5 -0
  1499. data/src/core/lib/transport/metadata.cc +29 -5
  1500. data/src/core/lib/transport/metadata.h +37 -2
  1501. data/src/core/lib/transport/metadata_batch.cc +12 -5
  1502. data/src/core/lib/transport/metadata_batch.h +104 -15
  1503. data/src/core/lib/transport/metadata_compression_traits.h +2 -3
  1504. data/src/core/lib/transport/metadata_info.cc +2 -2
  1505. data/src/core/lib/transport/metadata_info.h +1 -1
  1506. data/src/core/lib/transport/parsed_metadata.cc +2 -2
  1507. data/src/core/lib/transport/parsed_metadata.h +2 -5
  1508. data/src/core/lib/transport/simple_slice_based_metadata.h +0 -1
  1509. data/src/core/lib/transport/status_conversion.cc +2 -2
  1510. data/src/core/lib/transport/status_conversion.h +2 -3
  1511. data/src/core/lib/transport/timeout_encoding.cc +11 -12
  1512. data/src/core/lib/transport/timeout_encoding.h +1 -3
  1513. data/src/core/lib/transport/transport.cc +7 -13
  1514. data/src/core/lib/transport/transport.h +94 -88
  1515. data/src/core/lib/transport/transport_framing_endpoint_extension.h +47 -0
  1516. data/src/core/lib/transport/transport_op_string.cc +2 -5
  1517. data/src/core/load_balancing/address_filtering.cc +2 -4
  1518. data/src/core/load_balancing/address_filtering.h +2 -3
  1519. data/src/core/load_balancing/backend_metric_parser.cc +1 -2
  1520. data/src/core/load_balancing/backend_metric_parser.h +0 -2
  1521. data/src/core/load_balancing/child_policy_handler.cc +42 -46
  1522. data/src/core/load_balancing/child_policy_handler.h +2 -3
  1523. data/src/core/load_balancing/delegating_helper.h +6 -8
  1524. data/src/core/load_balancing/endpoint_list.cc +17 -21
  1525. data/src/core/load_balancing/endpoint_list.h +20 -16
  1526. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +38 -34
  1527. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +21 -7
  1528. data/src/core/load_balancing/grpclb/grpclb.cc +180 -214
  1529. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +2 -3
  1530. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.h +1 -2
  1531. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +3 -5
  1532. data/src/core/load_balancing/grpclb/grpclb_client_stats.h +4 -7
  1533. data/src/core/load_balancing/grpclb/load_balancer_api.cc +7 -11
  1534. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -6
  1535. data/src/core/load_balancing/health_check_client.cc +62 -83
  1536. data/src/core/load_balancing/health_check_client.h +1 -1
  1537. data/src/core/load_balancing/health_check_client_internal.h +6 -8
  1538. data/src/core/load_balancing/lb_policy.cc +7 -10
  1539. data/src/core/load_balancing/lb_policy.h +72 -39
  1540. data/src/core/load_balancing/lb_policy_factory.h +3 -4
  1541. data/src/core/load_balancing/lb_policy_registry.cc +7 -9
  1542. data/src/core/load_balancing/lb_policy_registry.h +3 -4
  1543. data/src/core/load_balancing/oob_backend_metric.cc +22 -29
  1544. data/src/core/load_balancing/oob_backend_metric.h +1 -1
  1545. data/src/core/load_balancing/oob_backend_metric_internal.h +6 -8
  1546. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +143 -188
  1547. data/src/core/load_balancing/outlier_detection/outlier_detection.h +5 -7
  1548. data/src/core/load_balancing/pick_first/pick_first.cc +1190 -286
  1549. data/src/core/load_balancing/priority/priority.cc +107 -146
  1550. data/src/core/load_balancing/ring_hash/ring_hash.cc +86 -93
  1551. data/src/core/load_balancing/ring_hash/ring_hash.h +5 -6
  1552. data/src/core/load_balancing/rls/rls.cc +364 -362
  1553. data/src/core/load_balancing/round_robin/round_robin.cc +81 -97
  1554. data/src/core/load_balancing/subchannel_interface.h +15 -5
  1555. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +7 -8
  1556. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.h +1 -2
  1557. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +162 -169
  1558. data/src/core/load_balancing/weighted_target/weighted_target.cc +79 -115
  1559. data/src/core/load_balancing/weighted_target/weighted_target.h +1 -1
  1560. data/src/core/load_balancing/xds/cds.cc +62 -79
  1561. data/src/core/load_balancing/xds/xds_cluster_impl.cc +188 -163
  1562. data/src/core/load_balancing/xds/xds_cluster_manager.cc +53 -86
  1563. data/src/core/load_balancing/xds/xds_override_host.cc +126 -188
  1564. data/src/core/load_balancing/xds/xds_override_host.h +5 -6
  1565. data/src/core/load_balancing/xds/xds_wrr_locality.cc +37 -48
  1566. data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -17
  1567. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +7 -3
  1568. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +89 -65
  1569. data/src/core/resolver/dns/c_ares/dns_resolver_ares.h +1 -2
  1570. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +3 -5
  1571. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +6 -9
  1572. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +153 -134
  1573. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +176 -161
  1574. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +3 -18
  1575. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +1 -1
  1576. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -2
  1577. data/src/core/resolver/dns/dns_resolver_plugin.cc +11 -13
  1578. data/src/core/resolver/dns/dns_resolver_plugin.h +1 -1
  1579. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +56 -63
  1580. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.h +2 -3
  1581. data/src/core/resolver/dns/event_engine/service_config_helper.cc +8 -10
  1582. data/src/core/resolver/dns/native/dns_resolver.cc +21 -31
  1583. data/src/core/resolver/dns/native/dns_resolver.h +1 -1
  1584. data/src/core/resolver/endpoint_addresses.cc +5 -8
  1585. data/src/core/resolver/endpoint_addresses.h +3 -1
  1586. data/src/core/resolver/fake/fake_resolver.cc +10 -12
  1587. data/src/core/resolver/fake/fake_resolver.h +6 -8
  1588. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +29 -31
  1589. data/src/core/resolver/polling_resolver.cc +42 -58
  1590. data/src/core/resolver/polling_resolver.h +6 -8
  1591. data/src/core/resolver/resolver.cc +3 -7
  1592. data/src/core/resolver/resolver.h +2 -8
  1593. data/src/core/resolver/resolver_factory.h +2 -3
  1594. data/src/core/resolver/resolver_registry.cc +12 -14
  1595. data/src/core/resolver/resolver_registry.h +2 -3
  1596. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +6 -8
  1597. data/src/core/resolver/xds/xds_config.cc +95 -0
  1598. data/src/core/resolver/xds/xds_config.h +108 -0
  1599. data/src/core/resolver/xds/xds_dependency_manager.cc +86 -174
  1600. data/src/core/resolver/xds/xds_dependency_manager.h +11 -76
  1601. data/src/core/resolver/xds/xds_resolver.cc +140 -126
  1602. data/src/core/resolver/xds/xds_resolver_attributes.h +6 -3
  1603. data/src/core/{lib/surface → server}/server.cc +420 -519
  1604. data/src/core/{lib/surface → server}/server.h +52 -38
  1605. data/src/core/{lib/channel → server}/server_call_tracer_filter.cc +27 -23
  1606. data/src/core/{lib/channel → server}/server_call_tracer_filter.h +4 -4
  1607. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector.h +7 -8
  1608. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.cc +51 -47
  1609. data/src/core/{ext/filters/server_config_selector → server}/server_config_selector_filter.h +3 -3
  1610. data/src/core/{lib/surface → server}/server_interface.h +6 -4
  1611. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.cc +5 -5
  1612. data/src/core/{ext/xds → server}/xds_channel_stack_modifier.h +7 -9
  1613. data/src/core/{ext/xds → server}/xds_server_config_fetcher.cc +83 -92
  1614. data/src/core/service_config/service_config.h +3 -6
  1615. data/src/core/service_config/service_config_call_data.h +20 -19
  1616. data/src/core/service_config/service_config_channel_arg_filter.cc +20 -17
  1617. data/src/core/service_config/service_config_impl.cc +9 -11
  1618. data/src/core/service_config/service_config_impl.h +6 -9
  1619. data/src/core/service_config/service_config_parser.cc +4 -9
  1620. data/src/core/service_config/service_config_parser.h +2 -4
  1621. data/src/core/{lib/channel → telemetry}/call_tracer.cc +58 -36
  1622. data/src/core/{lib/channel → telemetry}/call_tracer.h +50 -14
  1623. data/src/core/{lib/debug → telemetry}/histogram_view.cc +5 -5
  1624. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -4
  1625. data/src/core/telemetry/metrics.cc +180 -0
  1626. data/src/core/telemetry/metrics.h +569 -0
  1627. data/src/core/{lib/debug → telemetry}/stats.cc +2 -3
  1628. data/src/core/{lib/debug → telemetry}/stats.h +6 -8
  1629. data/src/core/{lib/debug → telemetry}/stats_data.cc +182 -3
  1630. data/src/core/{lib/debug → telemetry}/stats_data.h +133 -7
  1631. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -4
  1632. data/src/core/tsi/alts/crypt/aes_gcm.cc +4 -8
  1633. data/src/core/tsi/alts/crypt/gsec.cc +2 -4
  1634. data/src/core/tsi/alts/crypt/gsec.h +3 -5
  1635. data/src/core/tsi/alts/frame_protector/alts_counter.cc +2 -4
  1636. data/src/core/tsi/alts/frame_protector/alts_counter.h +2 -4
  1637. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +2 -4
  1638. data/src/core/tsi/alts/frame_protector/alts_crypter.h +1 -3
  1639. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +16 -19
  1640. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +0 -1
  1641. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +1 -2
  1642. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +1 -2
  1643. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +2 -3
  1644. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +2 -3
  1645. data/src/core/tsi/alts/frame_protector/frame_handler.cc +11 -13
  1646. data/src/core/tsi/alts/frame_protector/frame_handler.h +0 -1
  1647. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -82
  1648. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -2
  1649. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +5 -6
  1650. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +2 -3
  1651. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +76 -76
  1652. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -2
  1653. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +6 -5
  1654. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -2
  1655. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +17 -24
  1656. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +4 -6
  1657. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +17 -19
  1658. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +0 -1
  1659. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +12 -14
  1660. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +0 -1
  1661. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +1 -2
  1662. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +16 -14
  1663. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +3 -6
  1664. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +0 -1
  1665. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +13 -16
  1666. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +0 -1
  1667. data/src/core/tsi/fake_transport_security.cc +31 -34
  1668. data/src/core/tsi/local_transport_security.cc +9 -11
  1669. data/src/core/tsi/local_transport_security.h +1 -2
  1670. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +13 -15
  1671. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +7 -10
  1672. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -5
  1673. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -17
  1674. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -10
  1675. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -7
  1676. data/src/core/tsi/ssl_transport_security.cc +154 -131
  1677. data/src/core/tsi/ssl_transport_security.h +5 -8
  1678. data/src/core/tsi/ssl_transport_security_utils.cc +86 -32
  1679. data/src/core/tsi/ssl_transport_security_utils.h +13 -5
  1680. data/src/core/tsi/ssl_types.h +0 -1
  1681. data/src/core/tsi/transport_security.cc +3 -9
  1682. data/src/core/tsi/transport_security.h +0 -3
  1683. data/src/core/tsi/transport_security_grpc.cc +2 -2
  1684. data/src/core/tsi/transport_security_grpc.h +1 -2
  1685. data/src/core/tsi/transport_security_interface.h +2 -7
  1686. data/src/core/{lib/gpr → util}/alloc.cc +4 -6
  1687. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  1688. data/src/core/{lib/gpr → util}/atm.cc +2 -3
  1689. data/src/core/{lib/gprpp → util}/atomic_utils.h +3 -3
  1690. data/src/core/{lib/avl → util}/avl.h +6 -7
  1691. data/src/core/{lib/backoff → util}/backoff.cc +9 -10
  1692. data/src/core/{lib/backoff → util}/backoff.h +8 -11
  1693. data/src/core/{lib/gprpp → util}/bitset.h +5 -6
  1694. data/src/core/{lib/gprpp → util}/chunked_vector.h +8 -9
  1695. data/src/core/{lib/gprpp → util}/construct_destruct.h +6 -5
  1696. data/src/core/{lib/gprpp → util}/cpp_impl_of.h +3 -3
  1697. data/src/core/{lib/gprpp → util}/crash.cc +4 -7
  1698. data/src/core/{lib/gprpp → util}/crash.h +4 -5
  1699. data/src/core/{lib/gprpp → util}/debug_location.h +10 -3
  1700. data/src/core/{lib/gprpp → util}/directory_reader.h +3 -3
  1701. data/src/core/{lib/gprpp → util}/down_cast.h +7 -8
  1702. data/src/core/{lib/gprpp → util}/dual_ref_counted.h +59 -47
  1703. data/src/core/util/dump_args.cc +54 -0
  1704. data/src/core/util/dump_args.h +122 -0
  1705. data/src/core/{lib/gprpp → util}/env.h +3 -3
  1706. data/src/core/{lib/debug → util}/event_log.cc +4 -5
  1707. data/src/core/{lib/debug → util}/event_log.h +6 -8
  1708. data/src/core/{lib/gprpp → util}/examine_stack.cc +2 -2
  1709. data/src/core/{lib/gprpp → util}/examine_stack.h +3 -3
  1710. data/src/core/{lib/gprpp → util}/fork.cc +6 -7
  1711. data/src/core/{lib/gprpp → util}/fork.h +5 -5
  1712. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +33 -37
  1713. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -12
  1714. data/src/core/{lib/iomgr → util}/gethostname.h +3 -3
  1715. data/src/core/{lib/iomgr → util}/gethostname_fallback.cc +1 -1
  1716. data/src/core/{lib/iomgr → util}/gethostname_host_name_max.cc +2 -3
  1717. data/src/core/{lib/iomgr → util}/gethostname_sysconf.cc +2 -3
  1718. data/src/core/util/glob.cc +70 -0
  1719. data/src/core/util/glob.h +29 -0
  1720. data/src/core/{lib/gpr/time.cc → util/gpr_time.cc} +16 -17
  1721. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex.h +3 -4
  1722. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_posix.cc +4 -6
  1723. data/src/core/{lib/iomgr → util}/grpc_if_nametoindex_unsupported.cc +5 -8
  1724. data/src/core/{lib/gprpp → util}/host_port.cc +7 -7
  1725. data/src/core/{lib/gprpp → util}/host_port.h +3 -3
  1726. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -7
  1727. data/src/core/{lib/http → util/http_client}/format_request.h +5 -6
  1728. data/src/core/{lib/http → util/http_client}/httpcli.cc +62 -74
  1729. data/src/core/{lib/http → util/http_client}/httpcli.h +32 -31
  1730. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +18 -21
  1731. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -6
  1732. data/src/core/{lib/http → util/http_client}/parser.cc +11 -15
  1733. data/src/core/{lib/http → util/http_client}/parser.h +4 -8
  1734. data/src/core/{lib/gprpp → util}/if_list.h +3 -3
  1735. data/src/core/{lib/gpr → util}/iphone/cpu.cc +1 -2
  1736. data/src/core/{lib → util}/json/json.h +4 -5
  1737. data/src/core/{lib → util}/json/json_args.h +3 -3
  1738. data/src/core/{lib → util}/json/json_channel_args.h +4 -5
  1739. data/src/core/{lib → util}/json/json_object_loader.cc +3 -4
  1740. data/src/core/{lib → util}/json/json_object_loader.h +13 -14
  1741. data/src/core/{lib → util}/json/json_reader.cc +6 -9
  1742. data/src/core/{lib → util}/json/json_reader.h +4 -5
  1743. data/src/core/{lib → util}/json/json_util.cc +6 -6
  1744. data/src/core/{lib → util}/json/json_util.h +5 -6
  1745. data/src/core/{lib → util}/json/json_writer.cc +2 -4
  1746. data/src/core/{lib → util}/json/json_writer.h +4 -4
  1747. data/src/core/util/latent_see.cc +163 -0
  1748. data/src/core/util/latent_see.h +334 -0
  1749. data/src/core/{lib/gpr → util}/linux/cpu.cc +11 -12
  1750. data/src/core/{lib/gprpp → util}/linux/env.cc +1 -1
  1751. data/src/core/{lib/gprpp → util}/load_file.cc +4 -7
  1752. data/src/core/{lib/gprpp → util}/load_file.h +3 -4
  1753. data/src/core/util/log.cc +127 -0
  1754. data/src/core/util/lru_cache.h +122 -0
  1755. data/src/core/{lib/gprpp → util}/manual_constructor.h +4 -5
  1756. data/src/core/{lib/gprpp → util}/match.h +4 -5
  1757. data/src/core/{lib/matchers → util}/matchers.cc +9 -2
  1758. data/src/core/{lib/matchers → util}/matchers.h +8 -4
  1759. data/src/core/{lib/gprpp → util}/memory.h +4 -5
  1760. data/src/core/{lib/gprpp → util}/mpscq.cc +2 -2
  1761. data/src/core/{lib/gprpp → util}/mpscq.h +7 -8
  1762. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +5 -7
  1763. data/src/core/{lib/gprpp → util}/no_destruct.h +4 -4
  1764. data/src/core/{lib/gprpp → util}/notification.h +4 -5
  1765. data/src/core/{lib/gprpp → util}/orphanable.h +7 -7
  1766. data/src/core/{lib/gprpp → util}/overload.h +3 -3
  1767. data/src/core/{lib/gprpp → util}/packed_table.h +5 -5
  1768. data/src/core/{lib/gprpp → util}/per_cpu.cc +3 -4
  1769. data/src/core/{lib/gprpp → util}/per_cpu.h +4 -6
  1770. data/src/core/{lib/gpr → util}/posix/cpu.cc +6 -7
  1771. data/src/core/{lib/gprpp → util}/posix/directory_reader.cc +2 -2
  1772. data/src/core/{lib/gprpp → util}/posix/env.cc +1 -1
  1773. data/src/core/{lib/gprpp → util}/posix/stat.cc +8 -8
  1774. data/src/core/{lib/gpr → util}/posix/string.cc +2 -3
  1775. data/src/core/{lib/gpr → util}/posix/sync.cc +26 -27
  1776. data/src/core/{lib/gprpp → util}/posix/thd.cc +22 -26
  1777. data/src/core/{lib/gpr → util}/posix/time.cc +12 -11
  1778. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +13 -13
  1779. data/src/core/{lib/backoff → util}/random_early_detection.cc +2 -2
  1780. data/src/core/{lib/backoff → util}/random_early_detection.h +3 -4
  1781. data/src/core/{lib/gprpp → util}/ref_counted.h +40 -32
  1782. data/src/core/{lib/gprpp → util}/ref_counted_ptr.h +5 -7
  1783. data/src/core/{lib/gprpp → util}/ref_counted_string.cc +3 -5
  1784. data/src/core/{lib/gprpp → util}/ref_counted_string.h +5 -7
  1785. data/src/core/util/ring_buffer.h +123 -0
  1786. data/src/core/{lib/gprpp → util}/single_set_ptr.h +10 -8
  1787. data/src/core/{lib/gprpp → util}/sorted_pack.h +4 -4
  1788. data/src/core/{lib/gpr → util}/spinlock.h +5 -7
  1789. data/src/core/{lib/gprpp → util}/stat.h +3 -4
  1790. data/src/core/{lib/gprpp → util}/status_helper.cc +18 -40
  1791. data/src/core/{lib/gprpp → util}/status_helper.h +7 -37
  1792. data/src/core/{lib/gprpp → util}/strerror.cc +2 -3
  1793. data/src/core/{lib/gprpp → util}/strerror.h +3 -3
  1794. data/src/core/{lib/gpr → util}/string.cc +15 -18
  1795. data/src/core/{lib/gpr → util}/string.h +4 -6
  1796. data/src/core/{lib/gpr → util}/sync.cc +6 -7
  1797. data/src/core/{lib/gprpp → util}/sync.h +9 -10
  1798. data/src/core/{lib/gpr → util}/sync_abseil.cc +5 -8
  1799. data/src/core/{lib/gprpp → util}/table.h +56 -22
  1800. data/src/core/{lib/gprpp → util}/tchar.cc +2 -2
  1801. data/src/core/{lib/gprpp → util}/tchar.h +3 -3
  1802. data/src/core/{lib/gprpp → util}/thd.h +10 -12
  1803. data/src/core/{lib/gprpp → util}/time.cc +16 -18
  1804. data/src/core/{lib/gprpp → util}/time.h +29 -29
  1805. data/src/core/{lib/gprpp → util}/time_averaged_stats.cc +2 -2
  1806. data/src/core/{lib/gprpp → util}/time_averaged_stats.h +3 -3
  1807. data/src/core/{lib/gpr → util}/time_precise.cc +7 -7
  1808. data/src/core/{lib/gpr → util}/time_precise.h +3 -4
  1809. data/src/core/{lib/gprpp → util}/time_util.cc +6 -7
  1810. data/src/core/{lib/gprpp → util}/time_util.h +4 -5
  1811. data/src/core/{lib/gpr → util}/tmpfile.h +3 -4
  1812. data/src/core/{lib/gprpp → util}/type_list.h +3 -3
  1813. data/src/core/util/unique_ptr_with_bitset.h +86 -0
  1814. data/src/core/{lib/gprpp → util}/unique_type_name.h +32 -13
  1815. data/src/core/{ext/xds → util}/upb_utils.h +3 -5
  1816. data/src/core/{lib/uri/uri_parser.cc → util/uri.cc} +14 -10
  1817. data/src/core/{lib/uri/uri_parser.h → util/uri.h} +8 -4
  1818. data/src/core/{lib/gpr → util}/useful.h +23 -52
  1819. data/src/core/{lib/gprpp → util}/uuid_v4.cc +2 -2
  1820. data/src/core/{lib/gprpp → util}/uuid_v4.h +3 -4
  1821. data/src/core/{lib/gprpp → util}/validation_errors.cc +11 -3
  1822. data/src/core/{lib/gprpp → util}/validation_errors.h +14 -4
  1823. data/src/core/{lib/gpr → util}/windows/cpu.cc +1 -2
  1824. data/src/core/{lib/gprpp → util}/windows/directory_reader.cc +1 -3
  1825. data/src/core/{lib/gprpp → util}/windows/env.cc +2 -2
  1826. data/src/core/{lib/gprpp → util}/windows/stat.cc +9 -9
  1827. data/src/core/{lib/gpr → util}/windows/string.cc +3 -4
  1828. data/src/core/{lib/gpr → util}/windows/string_util.cc +6 -8
  1829. data/src/core/{lib/gpr → util}/windows/sync.cc +3 -3
  1830. data/src/core/{lib/gprpp → util}/windows/thd.cc +10 -10
  1831. data/src/core/{lib/gpr → util}/windows/time.cc +6 -6
  1832. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +5 -7
  1833. data/src/core/{lib/gprpp → util}/work_serializer.cc +79 -99
  1834. data/src/core/{lib/gprpp → util}/work_serializer.h +6 -8
  1835. data/src/core/{lib/gprpp → util}/xxhash_inline.h +3 -3
  1836. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.cc +7 -9
  1837. data/src/core/{ext/xds → xds/grpc}/certificate_provider_store.h +14 -16
  1838. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.cc +7 -9
  1839. data/src/core/{ext/xds → xds/grpc}/file_watcher_certificate_provider_factory.h +10 -12
  1840. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.cc +6 -6
  1841. data/src/core/{ext/xds → xds/grpc}/xds_audit_logger_registry.h +6 -7
  1842. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.cc +9 -168
  1843. data/src/core/{ext/xds → xds/grpc}/xds_bootstrap_grpc.h +15 -45
  1844. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.cc +7 -8
  1845. data/src/core/{ext/xds → xds/grpc}/xds_certificate_provider.h +13 -13
  1846. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.cc +119 -84
  1847. data/src/core/{ext/xds → xds/grpc}/xds_client_grpc.h +21 -16
  1848. data/src/core/xds/grpc/xds_cluster.cc +79 -0
  1849. data/src/core/{ext/xds → xds/grpc}/xds_cluster.h +43 -53
  1850. data/src/core/{ext/xds/xds_cluster.cc → xds/grpc/xds_cluster_parser.cc} +184 -207
  1851. data/src/core/xds/grpc/xds_cluster_parser.h +61 -0
  1852. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.cc +9 -12
  1853. data/src/core/{ext/xds → xds/grpc}/xds_cluster_specifier_plugin.h +6 -7
  1854. data/src/core/xds/grpc/xds_common_types.cc +103 -0
  1855. data/src/core/{ext/xds → xds/grpc}/xds_common_types.h +13 -31
  1856. data/src/core/{ext/xds/xds_common_types.cc → xds/grpc/xds_common_types_parser.cc} +79 -85
  1857. data/src/core/xds/grpc/xds_common_types_parser.h +76 -0
  1858. data/src/core/xds/grpc/xds_endpoint.cc +97 -0
  1859. data/src/core/{ext/xds → xds/grpc}/xds_endpoint.h +12 -34
  1860. data/src/core/{ext/xds/xds_endpoint.cc → xds/grpc/xds_endpoint_parser.cc} +88 -161
  1861. data/src/core/xds/grpc/xds_endpoint_parser.h +47 -0
  1862. data/src/core/{ext/xds → xds/grpc}/xds_health_status.cc +1 -3
  1863. data/src/core/{ext/xds → xds/grpc}/xds_health_status.h +3 -6
  1864. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.cc +30 -19
  1865. data/src/core/{ext/xds → xds/grpc}/xds_http_fault_filter.h +14 -10
  1866. data/src/core/{ext/xds/xds_http_filters.h → xds/grpc/xds_http_filter.h} +23 -71
  1867. data/src/core/{ext/xds/xds_http_filters.cc → xds/grpc/xds_http_filter_registry.cc} +16 -11
  1868. data/src/core/xds/grpc/xds_http_filter_registry.h +104 -0
  1869. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +141 -0
  1870. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +60 -0
  1871. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.cc +68 -54
  1872. data/src/core/{ext/xds → xds/grpc}/xds_http_rbac_filter.h +14 -10
  1873. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.cc +25 -13
  1874. data/src/core/{ext/xds → xds/grpc}/xds_http_stateful_session_filter.h +14 -10
  1875. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.cc +25 -31
  1876. data/src/core/{ext/xds → xds/grpc}/xds_lb_policy_registry.h +7 -8
  1877. data/src/core/xds/grpc/xds_listener.cc +175 -0
  1878. data/src/core/{ext/xds → xds/grpc}/xds_listener.h +9 -42
  1879. data/src/core/{ext/xds/xds_listener.cc → xds/grpc/xds_listener_parser.cc} +66 -215
  1880. data/src/core/xds/grpc/xds_listener_parser.h +59 -0
  1881. data/src/core/xds/grpc/xds_metadata.cc +62 -0
  1882. data/src/core/xds/grpc/xds_metadata.h +150 -0
  1883. data/src/core/xds/grpc/xds_metadata_parser.cc +184 -0
  1884. data/src/core/xds/grpc/xds_metadata_parser.h +35 -0
  1885. data/src/core/xds/grpc/xds_route_config.cc +282 -0
  1886. data/src/core/{ext/xds → xds/grpc}/xds_route_config.h +13 -46
  1887. data/src/core/{ext/xds/xds_route_config.cc → xds/grpc/xds_route_config_parser.cc} +77 -313
  1888. data/src/core/xds/grpc/xds_route_config_parser.h +77 -0
  1889. data/src/core/{ext/xds → xds/grpc}/xds_routing.cc +64 -31
  1890. data/src/core/{ext/xds → xds/grpc}/xds_routing.h +16 -10
  1891. data/src/core/xds/grpc/xds_server_grpc.cc +160 -0
  1892. data/src/core/xds/grpc/xds_server_grpc.h +63 -0
  1893. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.cc +112 -69
  1894. data/src/core/{ext/xds → xds/grpc}/xds_transport_grpc.h +37 -27
  1895. data/src/core/xds/xds_client/lrs_client.cc +1292 -0
  1896. data/src/core/xds/xds_client/lrs_client.h +394 -0
  1897. data/src/core/{ext/xds → xds/xds_client}/xds_api.cc +39 -258
  1898. data/src/core/{ext/xds → xds/xds_client}/xds_api.h +15 -38
  1899. data/src/core/xds/xds_client/xds_backend_metric_propagation.cc +63 -0
  1900. data/src/core/xds/xds_client/xds_backend_metric_propagation.h +59 -0
  1901. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.cc +4 -5
  1902. data/src/core/{ext/xds → xds/xds_client}/xds_bootstrap.h +4 -4
  1903. data/src/core/{ext/xds → xds/xds_client}/xds_channel_args.h +3 -3
  1904. data/src/core/{ext/xds → xds/xds_client}/xds_client.cc +190 -804
  1905. data/src/core/{ext/xds → xds/xds_client}/xds_client.h +39 -96
  1906. data/src/core/xds/xds_client/xds_locality.h +102 -0
  1907. data/src/core/{ext/xds → xds/xds_client}/xds_metrics.h +5 -3
  1908. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type.h +5 -6
  1909. data/src/core/{ext/xds → xds/xds_client}/xds_resource_type_impl.h +6 -7
  1910. data/src/core/{ext/xds → xds/xds_client}/xds_transport.h +33 -18
  1911. data/src/ruby/bin/math_pb.rb +1 -22
  1912. data/src/ruby/ext/grpc/extconf.rb +1 -1
  1913. data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -3
  1914. data/src/ruby/ext/grpc/rb_call.c +15 -8
  1915. data/src/ruby/ext/grpc/rb_call_credentials.c +39 -32
  1916. data/src/ruby/ext/grpc/rb_call_credentials.h +1 -0
  1917. data/src/ruby/ext/grpc/rb_channel.c +42 -36
  1918. data/src/ruby/ext/grpc/rb_channel_args.c +4 -4
  1919. data/src/ruby/ext/grpc/rb_channel_credentials.c +5 -5
  1920. data/src/ruby/ext/grpc/rb_channel_credentials.h +1 -2
  1921. data/src/ruby/ext/grpc/rb_completion_queue.c +18 -36
  1922. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  1923. data/src/ruby/ext/grpc/rb_compression_options.c +9 -10
  1924. data/src/ruby/ext/grpc/rb_event_thread.c +9 -9
  1925. data/src/ruby/ext/grpc/rb_grpc.c +16 -16
  1926. data/src/ruby/ext/grpc/rb_grpc.h +8 -1
  1927. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +136 -144
  1928. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +205 -216
  1929. data/src/ruby/ext/grpc/rb_server.c +47 -27
  1930. data/src/ruby/ext/grpc/rb_server_credentials.c +4 -3
  1931. data/src/ruby/ext/grpc/rb_server_credentials.h +2 -2
  1932. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +5 -5
  1933. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +1 -2
  1934. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +5 -4
  1935. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +2 -2
  1936. data/src/ruby/lib/grpc/generic/active_call.rb +8 -5
  1937. data/src/ruby/lib/grpc/logconfig.rb +13 -0
  1938. data/src/ruby/lib/grpc/version.rb +1 -1
  1939. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  1940. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  1941. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  1942. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  1943. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  1944. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  1945. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  1946. data/src/ruby/spec/call_spec.rb +53 -40
  1947. data/src/ruby/spec/channel_spec.rb +4 -2
  1948. data/src/ruby/spec/client_server_spec.rb +148 -507
  1949. data/src/ruby/spec/generic/active_call_spec.rb +64 -86
  1950. data/src/ruby/spec/generic/client_stub_spec.rb +20 -20
  1951. data/src/ruby/spec/logconfig_spec.rb +30 -0
  1952. data/src/ruby/spec/support/services.rb +3 -0
  1953. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -18
  1954. data/third_party/abseil-cpp/absl/base/attributes.h +84 -0
  1955. data/third_party/abseil-cpp/absl/base/config.h +32 -51
  1956. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +0 -16
  1957. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +3 -1
  1958. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +13 -3
  1959. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -12
  1960. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +4 -4
  1961. data/third_party/abseil-cpp/absl/base/macros.h +48 -0
  1962. data/third_party/abseil-cpp/absl/base/no_destructor.h +35 -40
  1963. data/third_party/abseil-cpp/absl/base/nullability.h +33 -7
  1964. data/third_party/abseil-cpp/absl/base/optimization.h +11 -0
  1965. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1966. data/third_party/abseil-cpp/absl/base/prefetch.h +1 -1
  1967. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +68 -12
  1968. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +60 -6
  1969. data/third_party/abseil-cpp/absl/container/hash_container_defaults.h +45 -0
  1970. data/third_party/abseil-cpp/absl/container/inlined_vector.h +13 -0
  1971. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +20 -11
  1972. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +15 -16
  1973. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +34 -1
  1974. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +68 -1
  1975. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +50 -0
  1976. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +22 -7
  1977. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +26 -8
  1978. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +39 -35
  1979. data/third_party/abseil-cpp/absl/container/internal/layout.h +190 -74
  1980. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +8 -6
  1981. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +334 -71
  1982. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1299 -458
  1983. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +19 -17
  1984. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +4 -3
  1985. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +2 -1
  1986. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +12 -8
  1987. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +1 -1
  1988. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +11 -7
  1989. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +18 -17
  1990. data/third_party/abseil-cpp/absl/debugging/internal/bounded_utf8_length_sequence.h +126 -0
  1991. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +258 -0
  1992. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +55 -0
  1993. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1057 -86
  1994. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +3 -0
  1995. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +925 -0
  1996. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +42 -0
  1997. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +43 -16
  1998. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +8 -7
  1999. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +10 -7
  2000. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.cc +70 -0
  2001. data/third_party/abseil-cpp/absl/debugging/internal/utf8_for_code_point.h +47 -0
  2002. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +11 -0
  2003. data/third_party/abseil-cpp/absl/flags/flag.h +2 -0
  2004. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +117 -30
  2005. data/third_party/abseil-cpp/absl/flags/internal/flag.h +192 -30
  2006. data/third_party/abseil-cpp/absl/flags/reflection.cc +10 -0
  2007. data/third_party/abseil-cpp/absl/functional/any_invocable.h +13 -3
  2008. data/third_party/abseil-cpp/absl/functional/bind_front.h +3 -2
  2009. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +7 -7
  2010. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +9 -9
  2011. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -1
  2012. data/third_party/abseil-cpp/absl/hash/internal/hash.h +13 -3
  2013. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +60 -28
  2014. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +4 -0
  2015. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +3 -3
  2016. data/third_party/abseil-cpp/absl/log/check.h +209 -0
  2017. data/third_party/abseil-cpp/absl/log/globals.h +28 -15
  2018. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +150 -0
  2019. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +138 -0
  2020. data/third_party/abseil-cpp/absl/log/internal/check_op.h +462 -0
  2021. data/third_party/abseil-cpp/absl/log/internal/conditions.h +2 -2
  2022. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +23 -23
  2023. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +104 -47
  2024. data/third_party/abseil-cpp/absl/log/internal/log_message.h +23 -4
  2025. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -10
  2026. data/third_party/abseil-cpp/absl/log/internal/strip.h +36 -0
  2027. data/third_party/abseil-cpp/absl/log/log.h +5 -1
  2028. data/third_party/abseil-cpp/absl/log/log_sink.h +11 -4
  2029. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +3 -3
  2030. data/third_party/abseil-cpp/absl/meta/type_traits.h +138 -42
  2031. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -3
  2032. data/third_party/abseil-cpp/absl/numeric/int128.h +35 -5
  2033. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +14 -0
  2034. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +18 -0
  2035. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +6 -2
  2036. data/third_party/abseil-cpp/absl/random/beta_distribution.h +8 -8
  2037. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +9 -7
  2038. data/third_party/abseil-cpp/absl/random/distributions.h +11 -11
  2039. data/third_party/abseil-cpp/absl/random/seed_sequences.h +2 -0
  2040. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +61 -2
  2041. data/third_party/abseil-cpp/absl/status/status.cc +0 -4
  2042. data/third_party/abseil-cpp/absl/status/status.h +4 -4
  2043. data/third_party/abseil-cpp/absl/status/statusor.h +108 -142
  2044. data/third_party/abseil-cpp/absl/strings/ascii.cc +32 -71
  2045. data/third_party/abseil-cpp/absl/strings/cord.cc +20 -15
  2046. data/third_party/abseil-cpp/absl/strings/cord.h +68 -7
  2047. data/third_party/abseil-cpp/absl/strings/escaping.cc +96 -21
  2048. data/third_party/abseil-cpp/absl/strings/escaping.h +25 -8
  2049. data/third_party/abseil-cpp/absl/strings/has_absl_stringify.h +1 -0
  2050. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +10 -0
  2051. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +29 -9
  2052. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +2 -2
  2053. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +19 -13
  2054. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +23 -13
  2055. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +24 -24
  2056. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +12 -7
  2057. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +9 -4
  2058. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +5 -2
  2059. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +23 -2
  2060. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +5 -1
  2061. data/third_party/abseil-cpp/absl/strings/numbers.cc +107 -333
  2062. data/third_party/abseil-cpp/absl/strings/numbers.h +12 -151
  2063. data/third_party/abseil-cpp/absl/strings/str_cat.cc +49 -142
  2064. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -85
  2065. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -1
  2066. data/third_party/abseil-cpp/absl/strings/str_join.h +19 -5
  2067. data/third_party/abseil-cpp/absl/strings/str_split.h +2 -2
  2068. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  2069. data/third_party/abseil-cpp/absl/strings/substitute.cc +4 -0
  2070. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +11 -2
  2071. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +5 -0
  2072. data/third_party/abseil-cpp/absl/synchronization/mutex.h +5 -4
  2073. data/third_party/abseil-cpp/absl/time/civil_time.h +2 -2
  2074. data/third_party/abseil-cpp/absl/time/clock.cc +15 -1
  2075. data/third_party/abseil-cpp/absl/time/duration.cc +58 -53
  2076. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  2077. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  2078. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +0 -29
  2079. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +3 -3
  2080. data/third_party/abseil-cpp/absl/time/time.h +73 -29
  2081. data/third_party/abseil-cpp/absl/types/compare.h +505 -0
  2082. data/third_party/abseil-cpp/absl/types/internal/optional.h +2 -2
  2083. data/third_party/abseil-cpp/absl/types/internal/variant.h +55 -67
  2084. data/third_party/abseil-cpp/absl/types/optional.h +15 -18
  2085. data/third_party/abseil-cpp/absl/types/span.h +3 -2
  2086. data/third_party/abseil-cpp/absl/types/variant.h +19 -24
  2087. data/third_party/abseil-cpp/absl/utility/utility.h +3 -41
  2088. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  2089. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand/fork_detect.h → bcm_support.h} +53 -7
  2090. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +13 -18
  2091. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +25 -10
  2092. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -18
  2093. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +3 -2
  2094. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +1 -1
  2095. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +19 -15
  2096. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  2097. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c +48 -66
  2098. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +7 -3
  2099. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +20 -28
  2100. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +9 -4
  2101. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +43 -0
  2102. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +2 -2
  2103. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  2104. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  2105. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +71 -37
  2106. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +8 -62
  2107. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +7 -7
  2108. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
  2109. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  2110. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  2111. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +36 -20
  2112. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +3 -4
  2113. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  2114. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +160 -14
  2115. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +81 -60
  2116. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +41 -120
  2117. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +13 -13
  2118. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +7 -0
  2119. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh.c +137 -0
  2120. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dh_asn1.c +120 -0
  2121. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +30 -0
  2122. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +3 -4
  2123. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +30 -0
  2124. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +1 -4
  2125. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +30 -0
  2126. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +1 -4
  2127. data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +6 -7
  2128. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes.c → aes.c.inc} +21 -0
  2129. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +33 -7
  2130. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +84 -80
  2131. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +89 -0
  2132. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bytes.c → bytes.c.inc} +1 -1
  2133. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div.c → div.c.inc} +149 -182
  2134. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{div_extra.c → div_extra.c.inc} +1 -1
  2135. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{exponentiation.c → exponentiation.c.inc} +46 -2
  2136. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd_extra.c → gcd_extra.c.inc} +8 -5
  2137. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  2138. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery_inv.c → montgomery_inv.c.inc} +1 -1
  2139. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{mul.c → mul.c.inc} +2 -2
  2140. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{prime.c → prime.c.inc} +14 -7
  2141. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{random.c → random.c.inc} +8 -9
  2142. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{sqrt.c → sqrt.c.inc} +1 -1
  2143. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aes.c → e_aes.c.inc} +9 -8
  2144. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +0 -3
  2145. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_key.c → ec_key.c.inc} +22 -14
  2146. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-nistz.c → p256-nistz.c.inc} +104 -7
  2147. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +65 -8
  2148. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{scalar.c → scalar.c.inc} +5 -1
  2149. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/{ecdsa.c → ecdsa.c.inc} +52 -107
  2150. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +28 -11
  2151. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  2152. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -80
  2153. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{rand.c → rand.c.inc} +26 -40
  2154. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{padding.c → padding.c.inc} +2 -5
  2155. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa.c → rsa.c.inc} +11 -11
  2156. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{rsa_impl.c → rsa_impl.c.inc} +23 -9
  2157. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{fips.c → fips.c.inc} +6 -4
  2158. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/{self_check.c → self_check.c.inc} +9 -35
  2159. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +2 -2
  2160. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/{service_indicator.c → service_indicator.c.inc} +5 -8
  2161. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +78 -29
  2162. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha1.c → sha1.c.inc} +4 -4
  2163. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha256.c → sha256.c.inc} +3 -3
  2164. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/{sha512.c → sha512.c.inc} +10 -4
  2165. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/{kdf.c → kdf.c.inc} +7 -0
  2166. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +295 -2
  2167. data/third_party/boringssl-with-bazel/src/crypto/internal.h +131 -41
  2168. data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +1 -1
  2169. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +2 -1
  2170. data/third_party/boringssl-with-bazel/src/crypto/mem.c +25 -12
  2171. data/third_party/boringssl-with-bazel/src/crypto/mldsa/internal.h +73 -0
  2172. data/third_party/boringssl-with-bazel/src/crypto/mldsa/mldsa.c +1687 -0
  2173. data/third_party/boringssl-with-bazel/src/crypto/mlkem/internal.h +90 -0
  2174. data/third_party/boringssl-with-bazel/src/crypto/mlkem/mlkem.cc +1097 -0
  2175. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +4 -1
  2176. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +19 -19
  2177. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +43 -41
  2178. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +13 -12
  2179. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +1 -0
  2180. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +9 -1
  2181. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/fork_detect.c +26 -28
  2182. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +9 -1
  2183. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/ios.c +9 -1
  2184. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +19 -3
  2185. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +26 -23
  2186. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/sysrand_internal.h +37 -0
  2187. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/trusty.c +9 -1
  2188. data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/urandom.c +19 -19
  2189. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +8 -1
  2190. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +2 -0
  2191. data/third_party/boringssl-with-bazel/src/crypto/spx/spx.c +7 -6
  2192. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +26 -33
  2193. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +1 -1
  2194. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +4 -5
  2195. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
  2196. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_cpols.c +9 -4
  2197. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_crld.c +2 -2
  2198. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.c +1 -1
  2199. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_lib.c +2 -0
  2200. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  2201. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  2202. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +21 -25
  2203. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +8 -25
  2204. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +2 -2
  2205. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +1 -6
  2206. data/third_party/boringssl-with-bazel/{err_data.c → src/gen/crypto/err_data.c} +487 -485
  2207. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +14 -1
  2208. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -1
  2209. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +85 -42
  2210. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +14 -9
  2211. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +12 -4
  2212. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +10 -11
  2213. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +17 -1
  2214. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -3
  2215. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +13 -0
  2216. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +25 -14
  2217. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +1 -0
  2218. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +15 -3
  2219. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +129 -0
  2220. data/third_party/boringssl-with-bazel/src/include/openssl/{kyber.h → experimental/kyber.h} +10 -0
  2221. data/third_party/boringssl-with-bazel/src/{crypto/spx/internal.h → include/openssl/experimental/spx.h} +24 -13
  2222. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +8 -6
  2223. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +136 -0
  2224. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +246 -0
  2225. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +3 -0
  2226. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +2 -2
  2227. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +66 -57
  2228. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +19 -10
  2229. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +2 -2
  2230. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +48 -12
  2231. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +393 -107
  2232. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +10 -3
  2233. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +13 -10
  2234. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -2
  2235. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +2931 -2453
  2236. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +9 -12
  2237. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +6 -0
  2238. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +10 -5
  2239. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +14 -2
  2240. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +301 -66
  2241. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +3 -9
  2242. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +66 -58
  2243. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +1 -1
  2244. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +17 -7
  2245. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +138 -54
  2246. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -117
  2247. data/third_party/boringssl-with-bazel/src/ssl/internal.h +349 -202
  2248. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +45 -17
  2249. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
  2250. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -1
  2251. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +86 -1
  2252. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +7 -4
  2253. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +59 -385
  2254. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +21 -19
  2255. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +423 -0
  2256. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +2 -2
  2257. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +99 -4
  2258. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +139 -83
  2259. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +116 -93
  2260. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +6 -14
  2261. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -1
  2262. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +48 -116
  2263. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +21 -27
  2264. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +54 -7
  2265. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +96 -34
  2266. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +68 -23
  2267. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +4 -24
  2268. data/third_party/upb/upb/base/string_view.h +1 -1
  2269. data/third_party/upb/upb/json/decode.c +60 -13
  2270. data/third_party/upb/upb/json/decode.h +26 -3
  2271. data/third_party/upb/upb/json/encode.c +2 -2
  2272. data/third_party/upb/upb/lex/round_trip.c +10 -0
  2273. data/third_party/upb/upb/mem/arena.c +80 -4
  2274. data/third_party/upb/upb/mem/arena.h +20 -9
  2275. data/third_party/upb/upb/mem/arena.hpp +5 -1
  2276. data/third_party/upb/upb/mem/internal/arena.h +11 -8
  2277. data/third_party/upb/upb/message/accessors.c +6 -7
  2278. data/third_party/upb/upb/message/accessors.h +186 -376
  2279. data/third_party/upb/upb/message/array.c +26 -3
  2280. data/third_party/upb/upb/message/array.h +17 -9
  2281. data/third_party/upb/upb/message/compat.c +5 -5
  2282. data/third_party/upb/upb/message/compat.h +3 -3
  2283. data/third_party/upb/upb/message/copy.c +23 -20
  2284. data/third_party/upb/upb/message/internal/accessors.h +617 -55
  2285. data/third_party/upb/upb/message/internal/array.h +23 -15
  2286. data/third_party/upb/upb/message/internal/compare_unknown.c +289 -0
  2287. data/third_party/upb/upb/message/internal/compare_unknown.h +49 -0
  2288. data/third_party/upb/upb/message/internal/extension.c +12 -12
  2289. data/third_party/upb/upb/message/internal/extension.h +9 -12
  2290. data/third_party/upb/upb/message/internal/map.h +15 -0
  2291. data/third_party/upb/upb/message/internal/map_sorter.h +4 -5
  2292. data/third_party/upb/upb/message/internal/message.c +22 -6
  2293. data/third_party/upb/upb/message/internal/message.h +11 -0
  2294. data/third_party/upb/upb/message/internal/tagged_ptr.h +5 -5
  2295. data/third_party/upb/upb/message/internal/types.h +41 -1
  2296. data/third_party/upb/upb/message/map.c +25 -0
  2297. data/third_party/upb/upb/message/map.h +11 -7
  2298. data/third_party/upb/upb/message/merge.c +38 -0
  2299. data/third_party/upb/upb/message/merge.h +26 -0
  2300. data/third_party/upb/upb/message/message.c +83 -4
  2301. data/third_party/upb/upb/message/message.h +16 -1
  2302. data/third_party/upb/upb/message/tagged_ptr.h +4 -8
  2303. data/third_party/upb/upb/message/value.h +26 -0
  2304. data/third_party/upb/upb/mini_descriptor/build_enum.c +3 -3
  2305. data/third_party/upb/upb/mini_descriptor/build_enum.h +6 -14
  2306. data/third_party/upb/upb/mini_descriptor/decode.c +19 -3
  2307. data/third_party/upb/upb/mini_descriptor/link.c +23 -21
  2308. data/third_party/upb/upb/mini_table/enum.h +2 -4
  2309. data/third_party/upb/upb/mini_table/extension.h +4 -12
  2310. data/third_party/upb/upb/mini_table/extension_registry.c +18 -0
  2311. data/third_party/upb/upb/mini_table/extension_registry.h +17 -0
  2312. data/third_party/upb/upb/mini_table/field.h +12 -38
  2313. data/third_party/upb/upb/mini_table/file.h +6 -19
  2314. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  2315. data/third_party/upb/upb/mini_table/internal/extension.h +18 -9
  2316. data/third_party/upb/upb/mini_table/internal/field.h +23 -23
  2317. data/third_party/upb/upb/mini_table/internal/file.h +7 -7
  2318. data/third_party/upb/upb/mini_table/internal/message.c +21 -1
  2319. data/third_party/upb/upb/mini_table/internal/message.h +80 -36
  2320. data/third_party/upb/upb/mini_table/internal/sub.h +9 -4
  2321. data/third_party/upb/upb/mini_table/message.h +23 -22
  2322. data/third_party/upb/upb/mini_table/sub.h +4 -12
  2323. data/third_party/upb/upb/port/def.inc +108 -12
  2324. data/third_party/upb/upb/port/undef.inc +8 -1
  2325. data/third_party/upb/upb/reflection/common.h +1 -11
  2326. data/third_party/upb/upb/reflection/def.hpp +35 -0
  2327. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  2328. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +19 -0
  2329. data/third_party/upb/upb/reflection/enum_def.c +5 -1
  2330. data/third_party/upb/upb/reflection/enum_def.h +1 -0
  2331. data/third_party/upb/upb/reflection/enum_value_def.c +3 -8
  2332. data/third_party/upb/upb/reflection/field_def.c +72 -46
  2333. data/third_party/upb/upb/reflection/field_def.h +4 -0
  2334. data/third_party/upb/upb/reflection/file_def.c +30 -4
  2335. data/third_party/upb/upb/reflection/file_def.h +3 -0
  2336. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  2337. data/third_party/upb/upb/reflection/message.c +26 -9
  2338. data/third_party/upb/upb/reflection/message.h +2 -2
  2339. data/third_party/upb/upb/reflection/message_def.c +14 -9
  2340. data/third_party/upb/upb/reflection/method_def.h +8 -7
  2341. data/third_party/upb/upb/reflection/service_def.h +6 -5
  2342. data/third_party/upb/upb/text/encode.c +53 -389
  2343. data/third_party/upb/upb/text/encode.h +1 -11
  2344. data/third_party/upb/upb/text/internal/encode.c +180 -0
  2345. data/third_party/upb/upb/text/internal/encode.h +240 -0
  2346. data/third_party/upb/upb/text/options.h +22 -0
  2347. data/third_party/upb/upb/wire/decode.c +160 -94
  2348. data/third_party/upb/upb/wire/decode.h +15 -2
  2349. data/third_party/upb/upb/wire/encode.c +89 -48
  2350. data/third_party/upb/upb/wire/encode.h +12 -1
  2351. data/third_party/upb/upb/wire/eps_copy_input_stream.h +3 -3
  2352. data/third_party/upb/upb/wire/internal/decode_fast.c +28 -29
  2353. data/third_party/upb/upb/wire/internal/reader.h +3 -3
  2354. data/third_party/upb/upb/wire/reader.c +1 -2
  2355. data/third_party/upb/upb/wire/reader.h +4 -8
  2356. metadata +472 -383
  2357. data/src/core/client_channel/client_channel_channelz.cc +0 -93
  2358. data/src/core/client_channel/client_channel_channelz.h +0 -85
  2359. data/src/core/client_channel/config_selector.cc +0 -60
  2360. data/src/core/ext/filters/deadline/deadline_filter.cc +0 -407
  2361. data/src/core/ext/filters/deadline/deadline_filter.h +0 -85
  2362. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  2363. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  2364. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.cc +0 -44
  2365. data/src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h +0 -67
  2366. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  2367. data/src/core/ext/xds/xds_client_stats.cc +0 -173
  2368. data/src/core/ext/xds/xds_client_stats.h +0 -258
  2369. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  2370. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  2371. data/src/core/lib/channel/context.h +0 -77
  2372. data/src/core/lib/channel/metrics.cc +0 -396
  2373. data/src/core/lib/channel/metrics.h +0 -406
  2374. data/src/core/lib/event_engine/trace.cc +0 -25
  2375. data/src/core/lib/event_engine/trace.h +0 -49
  2376. data/src/core/lib/gpr/android/log.cc +0 -79
  2377. data/src/core/lib/gpr/linux/log.cc +0 -114
  2378. data/src/core/lib/gpr/log.cc +0 -166
  2379. data/src/core/lib/gpr/log_internal.h +0 -55
  2380. data/src/core/lib/gpr/posix/log.cc +0 -111
  2381. data/src/core/lib/gpr/windows/log.cc +0 -116
  2382. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  2383. data/src/core/lib/promise/trace.cc +0 -20
  2384. data/src/core/lib/promise/trace.h +0 -24
  2385. data/src/core/lib/resource_quota/trace.cc +0 -19
  2386. data/src/core/lib/resource_quota/trace.h +0 -24
  2387. data/src/core/lib/security/transport/tsi_error.cc +0 -31
  2388. data/src/core/lib/security/transport/tsi_error.h +0 -30
  2389. data/src/core/lib/slice/slice_refcount.cc +0 -20
  2390. data/src/core/lib/surface/api_trace.cc +0 -25
  2391. data/src/core/lib/surface/api_trace.h +0 -53
  2392. data/src/core/lib/surface/call_trace.h +0 -24
  2393. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  2394. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  2395. data/src/core/lib/transport/batch_builder.cc +0 -170
  2396. data/src/core/lib/transport/batch_builder.h +0 -476
  2397. data/src/core/lib/transport/call_size_estimator.cc +0 -41
  2398. data/src/core/lib/transport/call_size_estimator.h +0 -52
  2399. data/src/core/lib/transport/handshaker.cc +0 -229
  2400. data/src/core/resolver/binder/binder_resolver.cc +0 -154
  2401. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  2402. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +0 -44
  2403. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  2404. data/third_party/boringssl-with-bazel/src/include/openssl/pki/certificate.h +0 -83
  2405. data/third_party/boringssl-with-bazel/src/include/openssl/pki/signature_verify_cache.h +0 -41
  2406. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{aes_nohw.c → aes_nohw.c.inc} +0 -0
  2407. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{key_wrap.c → key_wrap.c.inc} +0 -0
  2408. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/{mode_wrappers.c → mode_wrappers.c.inc} +0 -0
  2409. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{add.c → add.c.inc} +0 -0
  2410. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/asm/{x86_64-gcc.c → x86_64-gcc.c.inc} +0 -0
  2411. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{bn.c → bn.c.inc} +0 -0
  2412. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{cmp.c → cmp.c.inc} +0 -0
  2413. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{ctx.c → ctx.c.inc} +0 -0
  2414. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{gcd.c → gcd.c.inc} +0 -0
  2415. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{generic.c → generic.c.inc} +0 -0
  2416. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{jacobi.c → jacobi.c.inc} +0 -0
  2417. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{montgomery.c → montgomery.c.inc} +0 -0
  2418. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{rsaz_exp.c → rsaz_exp.c.inc} +0 -0
  2419. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/{shift.c → shift.c.inc} +0 -0
  2420. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{aead.c → aead.c.inc} +0 -0
  2421. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{cipher.c → cipher.c.inc} +0 -0
  2422. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/{e_aesccm.c → e_aesccm.c.inc} +0 -0
  2423. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cmac/{cmac.c → cmac.c.inc} +0 -0
  2424. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{check.c → check.c.inc} +0 -0
  2425. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/{dh.c → dh.c.inc} +0 -0
  2426. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digest.c → digest.c.inc} +0 -0
  2427. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/{digests.c → digests.c.inc} +0 -0
  2428. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digestsign/{digestsign.c → digestsign.c.inc} +0 -0
  2429. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec.c → ec.c.inc} +0 -0
  2430. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{ec_montgomery.c → ec_montgomery.c.inc} +0 -0
  2431. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{felem.c → felem.c.inc} +0 -0
  2432. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{oct.c → oct.c.inc} +0 -0
  2433. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p224-64.c → p224-64.c.inc} +0 -0
  2434. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256.c → p256.c.inc} +0 -0
  2435. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple.c → simple.c.inc} +0 -0
  2436. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{simple_mul.c → simple_mul.c.inc} +0 -0
  2437. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{util.c → util.c.inc} +0 -0
  2438. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{wnaf.c → wnaf.c.inc} +0 -0
  2439. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/{ecdh.c → ecdh.c.inc} +0 -0
  2440. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/{hkdf.c → hkdf.c.inc} +0 -0
  2441. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/{hmac.c → hmac.c.inc} +0 -0
  2442. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/{md4.c → md4.c.inc} +0 -0
  2443. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/{md5.c → md5.c.inc} +0 -0
  2444. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cbc.c → cbc.c.inc} +0 -0
  2445. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{cfb.c → cfb.c.inc} +0 -0
  2446. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ctr.c → ctr.c.inc} +0 -0
  2447. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm.c → gcm.c.inc} +0 -0
  2448. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{gcm_nohw.c → gcm_nohw.c.inc} +0 -0
  2449. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{ofb.c → ofb.c.inc} +0 -0
  2450. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/{polyval.c → polyval.c.inc} +0 -0
  2451. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/{ctrdrbg.c → ctrdrbg.c.inc} +0 -0
  2452. /data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/{blinding.c → blinding.c.inc} +0 -0
  2453. /data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/rand → rand_extra}/getrandom_fillin.h +0 -0
@@ -18,18 +18,27 @@
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
20
  #include <cstdint>
21
+ #include <limits>
21
22
  #include <memory>
23
+ #include <ostream>
22
24
  #include <type_traits>
23
25
 
24
- #include "src/core/lib/gprpp/ref_counted.h"
25
- #include "src/core/lib/gprpp/ref_counted_ptr.h"
26
+ #include "absl/log/check.h"
27
+ #include "src/core/lib/promise/for_each.h"
28
+ #include "src/core/lib/promise/if.h"
26
29
  #include "src/core/lib/promise/latch.h"
27
30
  #include "src/core/lib/promise/map.h"
28
31
  #include "src/core/lib/promise/promise.h"
32
+ #include "src/core/lib/promise/seq.h"
29
33
  #include "src/core/lib/promise/status_flag.h"
34
+ #include "src/core/lib/promise/try_seq.h"
30
35
  #include "src/core/lib/transport/call_final_info.h"
36
+ #include "src/core/lib/transport/call_state.h"
31
37
  #include "src/core/lib/transport/message.h"
32
38
  #include "src/core/lib/transport/metadata.h"
39
+ #include "src/core/util/dump_args.h"
40
+ #include "src/core/util/ref_counted.h"
41
+ #include "src/core/util/ref_counted_ptr.h"
33
42
 
34
43
  // CallFilters tracks a list of filters that are attached to a call.
35
44
  // At a high level, a filter (for the purposes of this module) is a class
@@ -41,6 +50,7 @@
41
50
  // - OnServerInitialMetadata - $VALUE_TYPE = ServerMetadata
42
51
  // - OnServerToClientMessage - $VALUE_TYPE = Message
43
52
  // - OnClientToServerMessage - $VALUE_TYPE = Message
53
+ // - OnClientToServerHalfClose - no value
44
54
  // - OnServerTrailingMetadata - $VALUE_TYPE = ServerMetadata
45
55
  // - OnFinalize - special, see below
46
56
  // These members define an interception point for a particular event in
@@ -112,6 +122,108 @@ struct NoInterceptor {};
112
122
 
113
123
  namespace filters_detail {
114
124
 
125
+ // Flow control across pipe stages.
126
+ // This ends up being exceedingly subtle - essentially we need to ensure that
127
+ // across a series of pipes we have no more than one outstanding message at a
128
+ // time - but those pipes are for the most part independent.
129
+ // How we achieve this is that this NextMessage object holds both the message
130
+ // and a completion token - the last owning NextMessage instance will call
131
+ // the on_progress method on the referenced CallState - and at that point that
132
+ // CallState will allow the next message to be sent through it.
133
+ // Next, the ForEach promise combiner explicitly holds onto the wrapper object
134
+ // owning the result (this object) and extracts the message from it, but doesn't
135
+ // dispose that instance until the action promise for the ForEach iteration
136
+ // completes, ensuring most callers need do nothing special to have the
137
+ // flow control work correctly.
138
+ template <void (CallState::*on_progress)()>
139
+ class NextMessage {
140
+ public:
141
+ ~NextMessage() {
142
+ if (message_ != end_of_stream() && message_ != error() &&
143
+ message_ != taken()) {
144
+ delete message_;
145
+ }
146
+ if (call_state_ != nullptr) {
147
+ (call_state_->*on_progress)();
148
+ }
149
+ }
150
+
151
+ NextMessage() = default;
152
+ explicit NextMessage(Failure) : message_(error()), call_state_(nullptr) {}
153
+ NextMessage(MessageHandle message, CallState* call_state) {
154
+ DCHECK_NE(call_state, nullptr);
155
+ DCHECK_NE(message.get(), nullptr);
156
+ DCHECK(message.get_deleter().has_freelist());
157
+ message_ = message.release();
158
+ call_state_ = call_state;
159
+ }
160
+ NextMessage(const NextMessage& other) = delete;
161
+ NextMessage& operator=(const NextMessage& other) = delete;
162
+ NextMessage(NextMessage&& other) noexcept
163
+ : message_(std::exchange(other.message_, taken())),
164
+ call_state_(std::exchange(other.call_state_, nullptr)) {}
165
+ NextMessage& operator=(NextMessage&& other) noexcept {
166
+ if (message_ != end_of_stream() && message_ != error() &&
167
+ message_ != taken()) {
168
+ delete message_;
169
+ }
170
+ if (call_state_ != nullptr) {
171
+ (call_state_->*on_progress)();
172
+ }
173
+ message_ = std::exchange(other.message_, taken());
174
+ call_state_ = std::exchange(other.call_state_, nullptr);
175
+ return *this;
176
+ }
177
+
178
+ bool ok() const {
179
+ DCHECK_NE(message_, taken());
180
+ return message_ != error();
181
+ }
182
+ bool has_value() const {
183
+ DCHECK_NE(message_, taken());
184
+ DCHECK(ok());
185
+ return message_ != end_of_stream();
186
+ }
187
+ StatusFlag status() const { return StatusFlag(ok()); }
188
+ Message& value() {
189
+ DCHECK_NE(message_, taken());
190
+ DCHECK(ok());
191
+ DCHECK(has_value());
192
+ return *message_;
193
+ }
194
+ MessageHandle TakeValue() {
195
+ DCHECK_NE(message_, taken());
196
+ DCHECK(ok());
197
+ DCHECK(has_value());
198
+ return MessageHandle(std::exchange(message_, taken()),
199
+ Arena::PooledDeleter());
200
+ }
201
+ bool progressed() const { return call_state_ == nullptr; }
202
+ void Progress() {
203
+ DCHECK(!progressed());
204
+ (call_state_->*on_progress)();
205
+ call_state_ = nullptr;
206
+ }
207
+
208
+ private:
209
+ static Message* end_of_stream() { return nullptr; }
210
+ static Message* error() { return reinterpret_cast<Message*>(1); }
211
+ static Message* taken() { return reinterpret_cast<Message*>(2); }
212
+ Message* message_ = end_of_stream();
213
+ CallState* call_state_ = nullptr;
214
+ };
215
+
216
+ template <typename T>
217
+ struct ArgumentMustBeNextMessage;
218
+ template <void (CallState::*on_progress)()>
219
+ struct ArgumentMustBeNextMessage<NextMessage<on_progress>> {
220
+ static constexpr bool value() { return true; }
221
+ };
222
+
223
+ inline void* Offset(void* base, size_t amt) {
224
+ return static_cast<char*>(base) + amt;
225
+ }
226
+
115
227
  // One call filter constructor
116
228
  // Contains enough information to allocate and initialize the
117
229
  // call data for one filter.
@@ -155,16 +267,19 @@ struct CallConstructor<FilterType,
155
267
  // Only one pointer can be set.
156
268
  template <typename T>
157
269
  struct ResultOr {
270
+ ResultOr(T ok, ServerMetadataHandle error)
271
+ : ok(std::move(ok)), error(std::move(error)) {
272
+ CHECK((this->ok == nullptr) ^ (this->error == nullptr));
273
+ }
158
274
  T ok;
159
275
  ServerMetadataHandle error;
160
276
  };
161
277
 
162
278
  // One filter operation metadata
163
- // Given a value of type V, produces a promise of type R.
164
- template <typename R, typename V>
279
+ // Given a value of type T, produces a promise of type ResultOr<T>.
280
+ template <typename T>
165
281
  struct Operator {
166
- using Result = R;
167
- using Arg = V;
282
+ using Arg = T;
168
283
  // Pointer to corresponding channel data for this filter
169
284
  void* channel_data;
170
285
  // Offset of the call data for this filter within the call data memory
@@ -172,13 +287,13 @@ struct Operator {
172
287
  // Initialize the promise data for this filter, and poll once.
173
288
  // Return the result of the poll.
174
289
  // If the promise finishes, also destroy the promise data!
175
- Poll<R> (*promise_init)(void* promise_data, void* call_data,
176
- void* channel_data, V value);
290
+ Poll<ResultOr<T>> (*promise_init)(void* promise_data, void* call_data,
291
+ void* channel_data, T value);
177
292
  // Poll the promise data for this filter.
178
293
  // If the promise finishes, also destroy the promise data!
179
294
  // Note that if the promise always finishes on the first poll, then supplying
180
295
  // this method is unnecessary (as it will never be called).
181
- Poll<R> (*poll)(void* promise_data);
296
+ Poll<ResultOr<T>> (*poll)(void* promise_data);
182
297
  // Destroy the promise data for this filter for an in-progress operation
183
298
  // before the promise finishes.
184
299
  // Note that if the promise always finishes on the first poll, then supplying
@@ -186,22 +301,39 @@ struct Operator {
186
301
  void (*early_destroy)(void* promise_data);
187
302
  };
188
303
 
189
- // We divide operations into fallible and infallible.
190
- // Fallible operations can fail, and that failure terminates the call.
191
- // Infallible operations cannot fail.
192
- // Fallible operations are used for client initial, and server initial metadata,
193
- // and messages.
194
- // Infallible operations are used for server trailing metadata.
195
- // (This is because server trailing metadata occurs when the call is finished -
196
- // and so we couldn't possibly become more finished - and also because it's the
197
- // preferred representation of failure anyway!)
198
-
199
- // An operation that could fail: takes a T argument, produces a ResultOr<T>
200
- template <typename T>
201
- using FallibleOperator = Operator<ResultOr<T>, T>;
202
- // And one that cannot: takes a T argument, produces a T
203
- template <typename T>
204
- using InfallibleOperator = Operator<T, T>;
304
+ struct HalfCloseOperator {
305
+ // Pointer to corresponding channel data for this filter
306
+ void* channel_data;
307
+ // Offset of the call data for this filter within the call data memory
308
+ size_t call_offset;
309
+ void (*half_close)(void* call_data, void* channel_data);
310
+ };
311
+
312
+ struct ServerTrailingMetadataOperator {
313
+ // Pointer to corresponding channel data for this filter
314
+ void* channel_data;
315
+ // Offset of the call data for this filter within the call data memory
316
+ size_t call_offset;
317
+ ServerMetadataHandle (*server_trailing_metadata)(
318
+ void* call_data, void* channel_data, ServerMetadataHandle metadata);
319
+ };
320
+
321
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline void RunHalfClose(
322
+ absl::Span<const HalfCloseOperator> ops, void* call_data) {
323
+ for (const auto& op : ops) {
324
+ op.half_close(Offset(call_data, op.call_offset), op.channel_data);
325
+ }
326
+ }
327
+
328
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline ServerMetadataHandle
329
+ RunServerTrailingMetadata(absl::Span<const ServerTrailingMetadataOperator> ops,
330
+ void* call_data, ServerMetadataHandle md) {
331
+ for (auto& op : ops) {
332
+ md = op.server_trailing_metadata(Offset(call_data, op.call_offset),
333
+ op.channel_data, std::move(md));
334
+ }
335
+ return md;
336
+ }
205
337
 
206
338
  // One call finalizer
207
339
  struct Finalizer {
@@ -213,19 +345,20 @@ struct Finalizer {
213
345
 
214
346
  // A layout of operations for a given filter stack
215
347
  // This includes which operations, how much memory is required, what alignment.
216
- template <typename Op>
348
+ template <typename T>
217
349
  struct Layout {
218
350
  size_t promise_size = 0;
219
351
  size_t promise_alignment = 0;
220
- std::vector<Op> ops;
352
+ std::vector<Operator<T>> ops;
221
353
 
222
- void Add(size_t filter_promise_size, size_t filter_promise_alignment, Op op) {
354
+ void Add(size_t filter_promise_size, size_t filter_promise_alignment,
355
+ Operator<T> op) {
223
356
  promise_size = std::max(promise_size, filter_promise_size);
224
357
  promise_alignment = std::max(promise_alignment, filter_promise_alignment);
225
358
  ops.push_back(op);
226
359
  }
227
360
 
228
- void Reverse() { std::reverse(ops.begin(), ops.end()); }
361
+ void Reverse() { absl::c_reverse(ops); }
229
362
  };
230
363
 
231
364
  // AddOp and friends
@@ -245,27 +378,104 @@ struct AddOpImpl;
245
378
 
246
379
  template <typename FunctionImpl, FunctionImpl impl, typename FilterType,
247
380
  typename T>
248
- void AddOp(FilterType* channel_data, size_t call_offset,
249
- Layout<FallibleOperator<T>>& to) {
381
+ void AddOp(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
250
382
  AddOpImpl<FilterType, T, FunctionImpl, impl>::Add(channel_data, call_offset,
251
383
  to);
252
384
  }
253
385
 
254
- template <typename FunctionImpl, FunctionImpl impl, typename FilterType,
255
- typename T>
256
- void AddOp(FilterType* channel_data, size_t call_offset,
257
- Layout<InfallibleOperator<T>>& to) {
258
- AddOpImpl<FilterType, T, FunctionImpl, impl>::Add(channel_data, call_offset,
259
- to);
386
+ template <typename FilterType>
387
+ void AddHalfClose(FilterType* channel_data, size_t call_offset,
388
+ void (FilterType::Call::*)(),
389
+ std::vector<HalfCloseOperator>& to) {
390
+ to.push_back(
391
+ HalfCloseOperator{channel_data, call_offset, [](void* call_data, void*) {
392
+ static_cast<typename FilterType::Call*>(call_data)
393
+ ->OnClientToServerHalfClose();
394
+ }});
395
+ }
396
+
397
+ template <typename FilterType>
398
+ void AddHalfClose(FilterType* channel_data, size_t call_offset,
399
+ void (FilterType::Call::*)(FilterType*),
400
+ std::vector<HalfCloseOperator>& to) {
401
+ to.push_back(HalfCloseOperator{
402
+ channel_data, call_offset, [](void* call_data, void* channel_data) {
403
+ static_cast<typename FilterType::Call*>(call_data)
404
+ ->OnClientToServerHalfClose(static_cast<FilterType*>(channel_data));
405
+ }});
406
+ }
407
+
408
+ template <typename FilterType>
409
+ void AddHalfClose(FilterType*, size_t, const NoInterceptor*,
410
+ std::vector<HalfCloseOperator>&) {}
411
+
412
+ template <typename FilterType>
413
+ void AddServerTrailingMetadata(
414
+ FilterType* channel_data, size_t call_offset,
415
+ void (FilterType::Call::*)(ServerMetadata&),
416
+ std::vector<ServerTrailingMetadataOperator>& to) {
417
+ to.push_back(ServerTrailingMetadataOperator{
418
+ channel_data, call_offset,
419
+ [](void* call_data, void*, ServerMetadataHandle metadata) {
420
+ static_cast<typename FilterType::Call*>(call_data)
421
+ ->OnServerTrailingMetadata(*metadata);
422
+ return metadata;
423
+ }});
424
+ }
425
+
426
+ template <typename FilterType>
427
+ void AddServerTrailingMetadata(
428
+ FilterType* channel_data, size_t call_offset,
429
+ void (FilterType::Call::*)(ServerMetadata&, FilterType*),
430
+ std::vector<ServerTrailingMetadataOperator>& to) {
431
+ to.push_back(ServerTrailingMetadataOperator{
432
+ channel_data, call_offset,
433
+ [](void* call_data, void* channel_data, ServerMetadataHandle metadata) {
434
+ static_cast<typename FilterType::Call*>(call_data)
435
+ ->OnServerTrailingMetadata(*metadata,
436
+ static_cast<FilterType*>(channel_data));
437
+ return metadata;
438
+ }});
260
439
  }
261
440
 
441
+ template <typename FilterType>
442
+ void AddServerTrailingMetadata(
443
+ FilterType* channel_data, size_t call_offset,
444
+ absl::Status (FilterType::Call::*)(ServerMetadata&),
445
+ std::vector<ServerTrailingMetadataOperator>& to) {
446
+ to.push_back(ServerTrailingMetadataOperator{
447
+ channel_data, call_offset,
448
+ [](void* call_data, void*, ServerMetadataHandle metadata) {
449
+ auto r = static_cast<typename FilterType::Call*>(call_data)
450
+ ->OnServerTrailingMetadata(*metadata);
451
+ if (r.ok()) return metadata;
452
+ return CancelledServerMetadataFromStatus(r);
453
+ }});
454
+ }
455
+
456
+ template <typename FilterType>
457
+ void AddServerTrailingMetadata(
458
+ FilterType* channel_data, size_t call_offset,
459
+ ServerMetadataHandle (FilterType::Call::*)(ServerMetadataHandle),
460
+ std::vector<ServerTrailingMetadataOperator>& to) {
461
+ to.push_back(ServerTrailingMetadataOperator{
462
+ channel_data, call_offset,
463
+ [](void* call_data, void*, ServerMetadataHandle metadata) {
464
+ return static_cast<typename FilterType::Call*>(call_data)
465
+ ->OnServerTrailingMetadata(std::move(metadata));
466
+ }});
467
+ }
468
+
469
+ template <typename FilterType>
470
+ void AddServerTrailingMetadata(FilterType*, size_t, const NoInterceptor*,
471
+ std::vector<ServerTrailingMetadataOperator>&) {}
472
+
262
473
  // const NoInterceptor $EVENT
263
474
  // These do nothing, and specifically DO NOT add an operation to the layout.
264
475
  // Supported for fallible & infallible operations.
265
476
  template <typename FilterType, typename T, const NoInterceptor* which>
266
477
  struct AddOpImpl<FilterType, T, const NoInterceptor*, which> {
267
- static void Add(FilterType*, size_t, Layout<FallibleOperator<T>>&) {}
268
- static void Add(FilterType*, size_t, Layout<InfallibleOperator<T>>&) {}
478
+ static void Add(FilterType*, size_t, Layout<T>&) {}
269
479
  };
270
480
 
271
481
  // void $INTERCEPTOR_NAME($VALUE_TYPE&)
@@ -273,10 +483,9 @@ template <typename FilterType, typename T,
273
483
  void (FilterType::Call::*impl)(typename T::element_type&)>
274
484
  struct AddOpImpl<FilterType, T,
275
485
  void (FilterType::Call::*)(typename T::element_type&), impl> {
276
- static void Add(FilterType* channel_data, size_t call_offset,
277
- Layout<FallibleOperator<T>>& to) {
486
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
278
487
  to.Add(0, 0,
279
- FallibleOperator<T>{
488
+ Operator<T>{
280
489
  channel_data,
281
490
  call_offset,
282
491
  [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
@@ -288,16 +497,23 @@ struct AddOpImpl<FilterType, T,
288
497
  nullptr,
289
498
  });
290
499
  }
291
- static void Add(FilterType* channel_data, size_t call_offset,
292
- Layout<InfallibleOperator<T>>& to) {
500
+ };
501
+
502
+ // void $INTERCEPTOR_NAME(const $VALUE_TYPE&)
503
+ template <typename FilterType, typename T,
504
+ void (FilterType::Call::*impl)(const typename T::element_type&)>
505
+ struct AddOpImpl<FilterType, T,
506
+ void (FilterType::Call::*)(const typename T::element_type&),
507
+ impl> {
508
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
293
509
  to.Add(0, 0,
294
- InfallibleOperator<T>{
510
+ Operator<T>{
295
511
  channel_data,
296
512
  call_offset,
297
- [](void*, void* call_data, void*, T value) -> Poll<T> {
513
+ [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
298
514
  (static_cast<typename FilterType::Call*>(call_data)->*impl)(
299
515
  *value);
300
- return std::move(value);
516
+ return ResultOr<T>{std::move(value), nullptr};
301
517
  },
302
518
  nullptr,
303
519
  nullptr,
@@ -312,10 +528,9 @@ template <typename FilterType, typename T,
312
528
  struct AddOpImpl<
313
529
  FilterType, T,
314
530
  void (FilterType::Call::*)(typename T::element_type&, FilterType*), impl> {
315
- static void Add(FilterType* channel_data, size_t call_offset,
316
- Layout<FallibleOperator<T>>& to) {
531
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
317
532
  to.Add(0, 0,
318
- FallibleOperator<T>{
533
+ Operator<T>{
319
534
  channel_data,
320
535
  call_offset,
321
536
  [](void*, void* call_data, void* channel_data,
@@ -328,33 +543,16 @@ struct AddOpImpl<
328
543
  nullptr,
329
544
  });
330
545
  }
331
- static void Add(FilterType* channel_data, size_t call_offset,
332
- Layout<InfallibleOperator<T>>& to) {
333
- to.Add(
334
- 0, 0,
335
- InfallibleOperator<T>{
336
- channel_data,
337
- call_offset,
338
- [](void*, void* call_data, void* channel_data, T value) -> Poll<T> {
339
- (static_cast<typename FilterType::Call*>(call_data)->*impl)(
340
- *value, static_cast<FilterType*>(channel_data));
341
- return std::move(value);
342
- },
343
- nullptr,
344
- nullptr,
345
- });
346
- }
347
546
  };
348
547
 
349
548
  // $VALUE_HANDLE $INTERCEPTOR_NAME($VALUE_HANDLE, FilterType*)
350
549
  template <typename FilterType, typename T,
351
550
  T (FilterType::Call::*impl)(T, FilterType*)>
352
551
  struct AddOpImpl<FilterType, T, T (FilterType::Call::*)(T, FilterType*), impl> {
353
- static void Add(FilterType* channel_data, size_t call_offset,
354
- Layout<FallibleOperator<T>>& to) {
552
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
355
553
  to.Add(
356
554
  0, 0,
357
- FallibleOperator<T>{
555
+ Operator<T>{
358
556
  channel_data,
359
557
  call_offset,
360
558
  [](void*, void* call_data, void* channel_data,
@@ -368,24 +566,6 @@ struct AddOpImpl<FilterType, T, T (FilterType::Call::*)(T, FilterType*), impl> {
368
566
  nullptr,
369
567
  });
370
568
  }
371
- static void Add(FilterType* channel_data, size_t call_offset,
372
- Layout<InfallibleOperator<T>>& to) {
373
- to.Add(
374
- 0, 0,
375
- InfallibleOperator<T>{
376
- channel_data,
377
- call_offset,
378
- [](void*, void* call_data, void* channel_data, T value) -> Poll<T> {
379
- (static_cast<typename FilterType::Call*>(call_data)->*impl)(
380
- *value, static_cast<FilterType*>(channel_data));
381
- return (
382
- static_cast<typename FilterType::Call*>(call_data)->*impl)(
383
- std::move(value), static_cast<FilterType*>(channel_data));
384
- },
385
- nullptr,
386
- nullptr,
387
- });
388
- }
389
569
  };
390
570
 
391
571
  // absl::Status $INTERCEPTOR_NAME($VALUE_TYPE&)
@@ -394,11 +574,10 @@ template <typename FilterType, typename T,
394
574
  struct AddOpImpl<FilterType, T,
395
575
  absl::Status (FilterType::Call::*)(typename T::element_type&),
396
576
  impl> {
397
- static void Add(FilterType* channel_data, size_t call_offset,
398
- Layout<FallibleOperator<T>>& to) {
577
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
399
578
  to.Add(
400
579
  0, 0,
401
- FallibleOperator<T>{
580
+ Operator<T>{
402
581
  channel_data,
403
582
  call_offset,
404
583
  [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
@@ -413,24 +592,6 @@ struct AddOpImpl<FilterType, T,
413
592
  nullptr,
414
593
  });
415
594
  }
416
- static void Add(FilterType* channel_data, size_t call_offset,
417
- Layout<InfallibleOperator<T>>& to) {
418
- to.Add(
419
- 0, 0,
420
- InfallibleOperator<T>{
421
- channel_data,
422
- call_offset,
423
- [](void*, void* call_data, void*, T value) -> Poll<T> {
424
- auto r =
425
- (static_cast<typename FilterType::Call*>(call_data)->*impl)(
426
- *value);
427
- if (r.ok()) return std::move(value);
428
- return StatusCast<ServerMetadataHandle>(std::move(r));
429
- },
430
- nullptr,
431
- nullptr,
432
- });
433
- }
434
595
  };
435
596
 
436
597
  // absl::Status $INTERCEPTOR_NAME(const $VALUE_TYPE&)
@@ -440,11 +601,10 @@ template <typename FilterType, typename T,
440
601
  struct AddOpImpl<
441
602
  FilterType, T,
442
603
  absl::Status (FilterType::Call::*)(const typename T::element_type&), impl> {
443
- static void Add(FilterType* channel_data, size_t call_offset,
444
- Layout<FallibleOperator<T>>& to) {
604
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
445
605
  to.Add(
446
606
  0, 0,
447
- FallibleOperator<T>{
607
+ Operator<T>{
448
608
  channel_data,
449
609
  call_offset,
450
610
  [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
@@ -469,11 +629,10 @@ struct AddOpImpl<FilterType, T,
469
629
  absl::Status (FilterType::Call::*)(typename T::element_type&,
470
630
  FilterType*),
471
631
  impl> {
472
- static void Add(FilterType* channel_data, size_t call_offset,
473
- Layout<FallibleOperator<T>>& to) {
632
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
474
633
  to.Add(
475
634
  0, 0,
476
- FallibleOperator<T>{
635
+ Operator<T>{
477
636
  channel_data,
478
637
  call_offset,
479
638
  [](void*, void* call_data, void* channel_data,
@@ -499,11 +658,10 @@ struct AddOpImpl<FilterType, T,
499
658
  absl::Status (FilterType::Call::*)(
500
659
  const typename T::element_type&, FilterType*),
501
660
  impl> {
502
- static void Add(FilterType* channel_data, size_t call_offset,
503
- Layout<FallibleOperator<T>>& to) {
661
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
504
662
  to.Add(
505
663
  0, 0,
506
- FallibleOperator<T>{
664
+ Operator<T>{
507
665
  channel_data,
508
666
  call_offset,
509
667
  [](void*, void* call_data, void* channel_data,
@@ -527,11 +685,10 @@ template <typename FilterType, typename T,
527
685
  struct AddOpImpl<FilterType, T,
528
686
  absl::StatusOr<T> (FilterType::Call::*)(T, FilterType*),
529
687
  impl> {
530
- static void Add(FilterType* channel_data, size_t call_offset,
531
- Layout<FallibleOperator<T>>& to) {
688
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
532
689
  to.Add(
533
690
  0, 0,
534
- FallibleOperator<T>{
691
+ Operator<T>{
535
692
  channel_data,
536
693
  call_offset,
537
694
  [](void*, void* call_data, void* channel_data,
@@ -557,11 +714,10 @@ struct AddOpImpl<FilterType, T,
557
714
  ServerMetadataHandle (FilterType::Call::*)(
558
715
  typename T::element_type&),
559
716
  impl> {
560
- static void Add(FilterType* channel_data, size_t call_offset,
561
- Layout<FallibleOperator<T>>& to) {
717
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
562
718
  to.Add(
563
719
  0, 0,
564
- FallibleOperator<T>{
720
+ Operator<T>{
565
721
  channel_data,
566
722
  call_offset,
567
723
  [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
@@ -586,11 +742,10 @@ struct AddOpImpl<FilterType, T,
586
742
  ServerMetadataHandle (FilterType::Call::*)(
587
743
  const typename T::element_type&),
588
744
  impl> {
589
- static void Add(FilterType* channel_data, size_t call_offset,
590
- Layout<FallibleOperator<T>>& to) {
745
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
591
746
  to.Add(
592
747
  0, 0,
593
- FallibleOperator<T>{
748
+ Operator<T>{
594
749
  channel_data,
595
750
  call_offset,
596
751
  [](void*, void* call_data, void*, T value) -> Poll<ResultOr<T>> {
@@ -615,11 +770,10 @@ struct AddOpImpl<FilterType, T,
615
770
  ServerMetadataHandle (FilterType::Call::*)(
616
771
  typename T::element_type&, FilterType*),
617
772
  impl> {
618
- static void Add(FilterType* channel_data, size_t call_offset,
619
- Layout<FallibleOperator<T>>& to) {
773
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
620
774
  to.Add(
621
775
  0, 0,
622
- FallibleOperator<T>{
776
+ Operator<T>{
623
777
  channel_data,
624
778
  call_offset,
625
779
  [](void*, void* call_data, void* channel_data,
@@ -645,11 +799,10 @@ struct AddOpImpl<FilterType, T,
645
799
  ServerMetadataHandle (FilterType::Call::*)(
646
800
  const typename T::element_type&, FilterType*),
647
801
  impl> {
648
- static void Add(FilterType* channel_data, size_t call_offset,
649
- Layout<FallibleOperator<T>>& to) {
802
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
650
803
  to.Add(
651
804
  0, 0,
652
- FallibleOperator<T>{
805
+ Operator<T>{
653
806
  channel_data,
654
807
  call_offset,
655
808
  [](void*, void* call_data, void* channel_data,
@@ -673,8 +826,7 @@ template <typename FilterType, typename T, typename R,
673
826
  struct AddOpImpl<
674
827
  FilterType, T, R (FilterType::Call::*)(typename T::element_type&), impl,
675
828
  absl::enable_if_t<std::is_same<absl::Status, PromiseResult<R>>::value>> {
676
- static void Add(FilterType* channel_data, size_t call_offset,
677
- Layout<FallibleOperator<T>>& to) {
829
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
678
830
  class Promise {
679
831
  public:
680
832
  Promise(T value, typename FilterType::Call* call_data, FilterType*)
@@ -689,7 +841,7 @@ struct AddOpImpl<
689
841
  if (r->ok()) {
690
842
  return ResultOr<T>{std::move(value), nullptr};
691
843
  }
692
- return ResultOr<T>{nullptr, ServerMetadataFromStatus(*r)};
844
+ return ResultOr<T>{nullptr, CancelledServerMetadataFromStatus(*r)};
693
845
  }
694
846
 
695
847
  private:
@@ -697,7 +849,7 @@ struct AddOpImpl<
697
849
  GPR_NO_UNIQUE_ADDRESS R impl_;
698
850
  };
699
851
  to.Add(sizeof(Promise), alignof(Promise),
700
- FallibleOperator<T>{
852
+ Operator<T>{
701
853
  channel_data,
702
854
  call_offset,
703
855
  [](void* promise_data, void* call_data, void* channel_data,
@@ -726,8 +878,7 @@ struct AddOpImpl<
726
878
  R (FilterType::Call::*)(typename T::element_type&, FilterType*), impl,
727
879
  absl::enable_if_t<!std::is_same<R, absl::Status>::value &&
728
880
  std::is_same<absl::Status, PromiseResult<R>>::value>> {
729
- static void Add(FilterType* channel_data, size_t call_offset,
730
- Layout<FallibleOperator<T>>& to) {
881
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
731
882
  class Promise {
732
883
  public:
733
884
  Promise(T value, typename FilterType::Call* call_data,
@@ -744,7 +895,7 @@ struct AddOpImpl<
744
895
  if (r->ok()) {
745
896
  return ResultOr<T>{std::move(value), nullptr};
746
897
  }
747
- return ResultOr<T>{nullptr, ServerMetadataFromStatus(*r)};
898
+ return ResultOr<T>{nullptr, CancelledServerMetadataFromStatus(*r)};
748
899
  }
749
900
 
750
901
  private:
@@ -752,7 +903,7 @@ struct AddOpImpl<
752
903
  GPR_NO_UNIQUE_ADDRESS R impl_;
753
904
  };
754
905
  to.Add(sizeof(Promise), alignof(Promise),
755
- FallibleOperator<T>{
906
+ Operator<T>{
756
907
  channel_data,
757
908
  call_offset,
758
909
  [](void* promise_data, void* call_data, void* channel_data,
@@ -780,8 +931,7 @@ template <typename FilterType, typename T, typename R,
780
931
  struct AddOpImpl<FilterType, T, R (FilterType::Call::*)(T, FilterType*), impl,
781
932
  absl::enable_if_t<std::is_same<absl::StatusOr<T>,
782
933
  PromiseResult<R>>::value>> {
783
- static void Add(FilterType* channel_data, size_t call_offset,
784
- Layout<FallibleOperator<T>>& to) {
934
+ static void Add(FilterType* channel_data, size_t call_offset, Layout<T>& to) {
785
935
  class Promise {
786
936
  public:
787
937
  Promise(T value, typename FilterType::Call* call_data,
@@ -794,14 +944,15 @@ struct AddOpImpl<FilterType, T, R (FilterType::Call::*)(T, FilterType*), impl,
794
944
  if (r == nullptr) return Pending{};
795
945
  this->~Promise();
796
946
  if (r->ok()) return ResultOr<T>{std::move(**r), nullptr};
797
- return ResultOr<T>{nullptr, ServerMetadataFromStatus(r->status())};
947
+ return ResultOr<T>{nullptr,
948
+ CancelledServerMetadataFromStatus(r->status())};
798
949
  }
799
950
 
800
951
  private:
801
952
  GPR_NO_UNIQUE_ADDRESS R impl_;
802
953
  };
803
954
  to.Add(sizeof(Promise), alignof(Promise),
804
- FallibleOperator<T>{
955
+ Operator<T>{
805
956
  channel_data,
806
957
  call_offset,
807
958
  [](void* promise_data, void* call_data, void* channel_data,
@@ -843,11 +994,12 @@ struct StackData {
843
994
  // For each kind of operation, a layout of the operations for this call.
844
995
  // (there's some duplicate data here, and that's ok: we want to avoid
845
996
  // pointer chasing as much as possible when executing a call)
846
- Layout<FallibleOperator<ClientMetadataHandle>> client_initial_metadata;
847
- Layout<FallibleOperator<ServerMetadataHandle>> server_initial_metadata;
848
- Layout<FallibleOperator<MessageHandle>> client_to_server_messages;
849
- Layout<FallibleOperator<MessageHandle>> server_to_client_messages;
850
- Layout<InfallibleOperator<ServerMetadataHandle>> server_trailing_metadata;
997
+ Layout<ClientMetadataHandle> client_initial_metadata;
998
+ Layout<ServerMetadataHandle> server_initial_metadata;
999
+ Layout<MessageHandle> client_to_server_messages;
1000
+ std::vector<HalfCloseOperator> client_to_server_half_close;
1001
+ Layout<MessageHandle> server_to_client_messages;
1002
+ std::vector<ServerTrailingMetadataOperator> server_trailing_metadata;
851
1003
  // A list of finalizers for this call.
852
1004
  // We use a bespoke data structure here because finalizers can never be
853
1005
  // asynchronous.
@@ -856,6 +1008,17 @@ struct StackData {
856
1008
  // (to capture ownership of channel data)
857
1009
  std::vector<ChannelDataDestructor> channel_data_destructors;
858
1010
 
1011
+ bool empty() const {
1012
+ return filter_constructor.empty() && filter_destructor.empty() &&
1013
+ client_initial_metadata.ops.empty() &&
1014
+ server_initial_metadata.ops.empty() &&
1015
+ client_to_server_messages.ops.empty() &&
1016
+ client_to_server_half_close.empty() &&
1017
+ server_to_client_messages.ops.empty() &&
1018
+ server_trailing_metadata.empty() && finalizers.empty() &&
1019
+ channel_data_destructors.empty();
1020
+ }
1021
+
859
1022
  // Add one filter to the list of filters, and update alignment.
860
1023
  // Returns the offset of the call data for this filter.
861
1024
  // Specifically does not update any of the layouts or finalizers.
@@ -922,7 +1085,7 @@ struct StackData {
922
1085
  filter_destructor.push_back(FilterDestructor{
923
1086
  call_offset,
924
1087
  [](void* call_data) {
925
- static_cast<typename FilterType::Call*>(call_data)->~Call();
1088
+ Destruct(static_cast<typename FilterType::Call*>(call_data));
926
1089
  },
927
1090
  });
928
1091
  }
@@ -966,6 +1129,14 @@ struct StackData {
966
1129
  channel_data, call_offset, client_to_server_messages);
967
1130
  }
968
1131
 
1132
+ template <typename FilterType>
1133
+ void AddClientToServerHalfClose(FilterType* channel_data,
1134
+ size_t call_offset) {
1135
+ AddHalfClose(channel_data, call_offset,
1136
+ &FilterType::Call::OnClientToServerHalfClose,
1137
+ client_to_server_half_close);
1138
+ }
1139
+
969
1140
  template <typename FilterType>
970
1141
  void AddServerToClientMessageOp(FilterType* channel_data,
971
1142
  size_t call_offset) {
@@ -977,22 +1148,22 @@ struct StackData {
977
1148
  template <typename FilterType>
978
1149
  void AddServerTrailingMetadataOp(FilterType* channel_data,
979
1150
  size_t call_offset) {
980
- AddOp<decltype(&FilterType::Call::OnServerTrailingMetadata),
981
- &FilterType::Call::OnServerTrailingMetadata>(
982
- channel_data, call_offset, server_trailing_metadata);
1151
+ AddServerTrailingMetadata(channel_data, call_offset,
1152
+ &FilterType::Call::OnServerTrailingMetadata,
1153
+ server_trailing_metadata);
983
1154
  }
984
1155
 
985
1156
  // Finalizer interception adders
986
1157
 
987
1158
  template <typename FilterType>
988
1159
  void AddFinalizer(FilterType*, size_t, const NoInterceptor* p) {
989
- GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize);
1160
+ DCHECK(p == &FilterType::Call::OnFinalize);
990
1161
  }
991
1162
 
992
1163
  template <typename FilterType>
993
1164
  void AddFinalizer(FilterType* channel_data, size_t call_offset,
994
1165
  void (FilterType::Call::*p)(const grpc_call_final_info*)) {
995
- GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize);
1166
+ DCHECK(p == &FilterType::Call::OnFinalize);
996
1167
  finalizers.push_back(Finalizer{
997
1168
  channel_data,
998
1169
  call_offset,
@@ -1007,7 +1178,7 @@ struct StackData {
1007
1178
  void AddFinalizer(FilterType* channel_data, size_t call_offset,
1008
1179
  void (FilterType::Call::*p)(const grpc_call_final_info*,
1009
1180
  FilterType*)) {
1010
- GPR_DEBUG_ASSERT(p == &FilterType::Call::OnFinalize);
1181
+ DCHECK(p == &FilterType::Call::OnFinalize);
1011
1182
  finalizers.push_back(Finalizer{
1012
1183
  channel_data,
1013
1184
  call_offset,
@@ -1037,11 +1208,11 @@ class OperationExecutor {
1037
1208
  OperationExecutor(OperationExecutor&& other) noexcept
1038
1209
  : ops_(other.ops_), end_ops_(other.end_ops_) {
1039
1210
  // Movable iff we're not running.
1040
- GPR_DEBUG_ASSERT(other.promise_data_ == nullptr);
1211
+ DCHECK_EQ(other.promise_data_, nullptr);
1041
1212
  }
1042
1213
  OperationExecutor& operator=(OperationExecutor&& other) noexcept {
1043
- GPR_DEBUG_ASSERT(other.promise_data_ == nullptr);
1044
- GPR_DEBUG_ASSERT(promise_data_ == nullptr);
1214
+ DCHECK_EQ(other.promise_data_, nullptr);
1215
+ DCHECK_EQ(promise_data_, nullptr);
1045
1216
  ops_ = other.ops_;
1046
1217
  end_ops_ = other.end_ops_;
1047
1218
  return *this;
@@ -1051,8 +1222,7 @@ class OperationExecutor {
1051
1222
  // Start executing a layout. May allocate space to store the relevant promise.
1052
1223
  // Returns the result of the first poll.
1053
1224
  // If the promise finishes, also destroy the promise data.
1054
- Poll<ResultOr<T>> Start(const Layout<FallibleOperator<T>>* layout, T input,
1055
- void* call_data);
1225
+ Poll<ResultOr<T>> Start(const Layout<T>* layout, T input, void* call_data);
1056
1226
  // Continue executing a layout. Returns the result of the next poll.
1057
1227
  // If the promise finishes, also destroy the promise data.
1058
1228
  Poll<ResultOr<T>> Step(void* call_data);
@@ -1074,134 +1244,79 @@ class OperationExecutor {
1074
1244
  Poll<ResultOr<T>> ContinueStep(void* call_data);
1075
1245
 
1076
1246
  void* promise_data_ = nullptr;
1077
- const FallibleOperator<T>* ops_;
1078
- const FallibleOperator<T>* end_ops_;
1247
+ const Operator<T>* ops_;
1248
+ const Operator<T>* end_ops_;
1079
1249
  };
1080
1250
 
1081
- // Per OperationExecutor, but for infallible operation sequences.
1082
1251
  template <typename T>
1083
- class InfallibleOperationExecutor {
1084
- public:
1085
- InfallibleOperationExecutor() = default;
1086
- ~InfallibleOperationExecutor();
1087
- InfallibleOperationExecutor(const InfallibleOperationExecutor&) = delete;
1088
- InfallibleOperationExecutor& operator=(const InfallibleOperationExecutor&) =
1089
- delete;
1090
- InfallibleOperationExecutor(InfallibleOperationExecutor&& other) noexcept
1091
- : ops_(other.ops_), end_ops_(other.end_ops_) {
1092
- // Movable iff we're not running.
1093
- GPR_DEBUG_ASSERT(other.promise_data_ == nullptr);
1094
- }
1095
- InfallibleOperationExecutor& operator=(
1096
- InfallibleOperationExecutor&& other) noexcept {
1097
- GPR_DEBUG_ASSERT(other.promise_data_ == nullptr);
1098
- GPR_DEBUG_ASSERT(promise_data_ == nullptr);
1099
- ops_ = other.ops_;
1100
- end_ops_ = other.end_ops_;
1101
- return *this;
1252
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline OperationExecutor<
1253
+ T>::~OperationExecutor() {
1254
+ if (promise_data_ != nullptr) {
1255
+ ops_->early_destroy(promise_data_);
1256
+ gpr_free_aligned(promise_data_);
1102
1257
  }
1258
+ }
1103
1259
 
1104
- // IsRunning() is true if we're currently executing a sequence of operations.
1105
- bool IsRunning() const { return promise_data_ != nullptr; }
1106
- // Start executing a layout. May allocate space to store the relevant promise.
1107
- // Returns the result of the first poll.
1108
- // If the promise finishes, also destroy the promise data.
1109
- Poll<T> Start(const Layout<InfallibleOperator<T>>* layout, T input,
1110
- void* call_data);
1111
- // Continue executing a layout. Returns the result of the next poll.
1112
- // If the promise finishes, also destroy the promise data.
1113
- Poll<T> Step(void* call_data);
1114
-
1115
- private:
1116
- // Start polling on the current step of the layout.
1117
- // `input` is the current value (either the input to the first step, or the
1118
- // so far transformed value)
1119
- // `call_data` is the call data for the filter stack.
1120
- // If this op finishes immediately then we iterative move to the next step.
1121
- // If we reach the end up the ops, we return the overall poll result,
1122
- // otherwise we return Pending.
1123
- Poll<T> InitStep(T input, void* call_data);
1124
- // Continue polling on the current step of the layout.
1125
- // Called on the next poll after InitStep returns pending.
1126
- // If the promise is still pending, returns this.
1127
- // If the promise completes we call into InitStep to continue execution
1128
- // through the filters.
1129
- Poll<T> ContinueStep(void* call_data);
1130
-
1131
- void* promise_data_ = nullptr;
1132
- const InfallibleOperator<T>* ops_;
1133
- const InfallibleOperator<T>* end_ops_;
1134
- };
1260
+ template <typename T>
1261
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
1262
+ OperationExecutor<T>::Start(const Layout<T>* layout, T input, void* call_data) {
1263
+ ops_ = layout->ops.data();
1264
+ end_ops_ = ops_ + layout->ops.size();
1265
+ if (layout->promise_size == 0) {
1266
+ // No call state ==> instantaneously ready
1267
+ auto r = InitStep(std::move(input), call_data);
1268
+ CHECK(r.ready());
1269
+ return r;
1270
+ }
1271
+ promise_data_ =
1272
+ gpr_malloc_aligned(layout->promise_size, layout->promise_alignment);
1273
+ return InitStep(std::move(input), call_data);
1274
+ }
1135
1275
 
1136
- // The current state of a pipe.
1137
- // CallFilters expose a set of pipe like objects for client & server initial
1138
- // metadata and for messages.
1139
- // This class tracks the state of one of those pipes.
1140
- // Size matters here: this state is kept for the lifetime of a call, and we keep
1141
- // multiple of them.
1142
- // This class encapsulates the untyped work of the state machine; there are
1143
- // typed wrappers around this class as private members of CallFilters that
1144
- // augment it to provide all the functionality that we must.
1145
- class PipeState {
1146
- public:
1147
- struct StartPushed {};
1148
- PipeState() = default;
1149
- explicit PipeState(StartPushed) : state_(ValueState::kQueued) {}
1150
- // Start the pipe: allows pulls to proceed
1151
- void Start();
1152
- // A push operation is beginning
1153
- void BeginPush();
1154
- // A previously started push operation has completed
1155
- void DropPush();
1156
- // Poll for push completion: occurs after the corresponding Pull()
1157
- Poll<StatusFlag> PollPush();
1158
- // Poll for pull completion; returns Failure{} if closed with error,
1159
- // true if a value is available, or false if the pipe was closed without
1160
- // error.
1161
- Poll<ValueOrFailure<bool>> PollPull();
1162
- // A pulled value has been consumed: we can unblock the push
1163
- void AckPull();
1164
- // A previously started pull operation has completed
1165
- void DropPull();
1166
- // Close sending
1167
- void CloseSending();
1168
- // Close sending with error
1169
- void CloseWithError();
1170
- // Poll for closedness - if true, closed with error
1171
- Poll<bool> PollClosed();
1172
-
1173
- bool holds_error() const { return state_ == ValueState::kError; }
1276
+ template <typename T>
1277
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
1278
+ OperationExecutor<T>::InitStep(T input, void* call_data) {
1279
+ CHECK(input != nullptr);
1280
+ while (true) {
1281
+ if (ops_ == end_ops_) {
1282
+ return ResultOr<T>{std::move(input), nullptr};
1283
+ }
1284
+ auto p =
1285
+ ops_->promise_init(promise_data_, Offset(call_data, ops_->call_offset),
1286
+ ops_->channel_data, std::move(input));
1287
+ if (auto* r = p.value_if_ready()) {
1288
+ if (r->ok == nullptr) return std::move(*r);
1289
+ input = std::move(r->ok);
1290
+ ++ops_;
1291
+ continue;
1292
+ }
1293
+ return Pending{};
1294
+ }
1295
+ }
1174
1296
 
1175
- std::string DebugString() const;
1297
+ template <typename T>
1298
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
1299
+ OperationExecutor<T>::Step(void* call_data) {
1300
+ DCHECK_NE(promise_data_, nullptr);
1301
+ auto p = ContinueStep(call_data);
1302
+ if (p.ready()) {
1303
+ gpr_free_aligned(promise_data_);
1304
+ promise_data_ = nullptr;
1305
+ }
1306
+ return p;
1307
+ }
1176
1308
 
1177
- private:
1178
- enum class ValueState : uint8_t {
1179
- // Nothing sending nor receiving
1180
- kIdle,
1181
- // Sent, but not yet received
1182
- kQueued,
1183
- // Trying to receive, but not yet sent
1184
- kWaiting,
1185
- // Ready to start processing, but not yet started
1186
- // (we have the value to send through the pipe, the reader is waiting,
1187
- // but it's not yet been polled)
1188
- kReady,
1189
- // Processing through filters
1190
- kProcessing,
1191
- // Closed sending
1192
- kClosed,
1193
- // Closed due to failure
1194
- kError
1195
- };
1196
- // Waiter for a promise blocked waiting to send.
1197
- IntraActivityWaiter wait_send_;
1198
- // Waiter for a promise blocked waiting to receive.
1199
- IntraActivityWaiter wait_recv_;
1200
- // Current state.
1201
- ValueState state_ = ValueState::kIdle;
1202
- // Has the pipe been started?
1203
- bool started_ = false;
1204
- };
1309
+ template <typename T>
1310
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline Poll<ResultOr<T>>
1311
+ OperationExecutor<T>::ContinueStep(void* call_data) {
1312
+ auto p = ops_->poll(promise_data_);
1313
+ if (auto* r = p.value_if_ready()) {
1314
+ if (r->ok == nullptr) return std::move(*r);
1315
+ ++ops_;
1316
+ return InitStep(std::move(r->ok), call_data);
1317
+ }
1318
+ return Pending{};
1319
+ }
1205
1320
 
1206
1321
  template <typename Fn>
1207
1322
  class ServerTrailingMetadataInterceptor {
@@ -1211,6 +1326,7 @@ class ServerTrailingMetadataInterceptor {
1211
1326
  static const NoInterceptor OnClientInitialMetadata;
1212
1327
  static const NoInterceptor OnServerInitialMetadata;
1213
1328
  static const NoInterceptor OnClientToServerMessage;
1329
+ static const NoInterceptor OnClientToServerHalfClose;
1214
1330
  static const NoInterceptor OnServerToClientMessage;
1215
1331
  static const NoInterceptor OnFinalize;
1216
1332
  void OnServerTrailingMetadata(ServerMetadata& md,
@@ -1234,13 +1350,130 @@ template <typename Fn>
1234
1350
  const NoInterceptor
1235
1351
  ServerTrailingMetadataInterceptor<Fn>::Call::OnClientToServerMessage;
1236
1352
  template <typename Fn>
1353
+ const NoInterceptor
1354
+ ServerTrailingMetadataInterceptor<Fn>::Call::OnClientToServerHalfClose;
1355
+ template <typename Fn>
1237
1356
  const NoInterceptor
1238
1357
  ServerTrailingMetadataInterceptor<Fn>::Call::OnServerToClientMessage;
1239
1358
  template <typename Fn>
1240
1359
  const NoInterceptor ServerTrailingMetadataInterceptor<Fn>::Call::OnFinalize;
1241
1360
 
1361
+ template <typename Fn>
1362
+ class ClientInitialMetadataInterceptor {
1363
+ public:
1364
+ class Call {
1365
+ public:
1366
+ auto OnClientInitialMetadata(ClientMetadata& md,
1367
+ ClientInitialMetadataInterceptor* filter) {
1368
+ return filter->fn_(md);
1369
+ }
1370
+ static const NoInterceptor OnServerInitialMetadata;
1371
+ static const NoInterceptor OnClientToServerMessage;
1372
+ static const NoInterceptor OnClientToServerHalfClose;
1373
+ static const NoInterceptor OnServerToClientMessage;
1374
+ static const NoInterceptor OnServerTrailingMetadata;
1375
+ static const NoInterceptor OnFinalize;
1376
+ };
1377
+
1378
+ explicit ClientInitialMetadataInterceptor(Fn fn) : fn_(std::move(fn)) {}
1379
+
1380
+ private:
1381
+ GPR_NO_UNIQUE_ADDRESS Fn fn_;
1382
+ };
1383
+ template <typename Fn>
1384
+ const NoInterceptor
1385
+ ClientInitialMetadataInterceptor<Fn>::Call::OnServerInitialMetadata;
1386
+ template <typename Fn>
1387
+ const NoInterceptor
1388
+ ClientInitialMetadataInterceptor<Fn>::Call::OnClientToServerMessage;
1389
+ template <typename Fn>
1390
+ const NoInterceptor
1391
+ ClientInitialMetadataInterceptor<Fn>::Call::OnClientToServerHalfClose;
1392
+ template <typename Fn>
1393
+ const NoInterceptor
1394
+ ClientInitialMetadataInterceptor<Fn>::Call::OnServerToClientMessage;
1395
+ template <typename Fn>
1396
+ const NoInterceptor
1397
+ ClientInitialMetadataInterceptor<Fn>::Call::OnServerTrailingMetadata;
1398
+ template <typename Fn>
1399
+ const NoInterceptor ClientInitialMetadataInterceptor<Fn>::Call::OnFinalize;
1400
+
1242
1401
  } // namespace filters_detail
1243
1402
 
1403
+ namespace for_each_detail {
1404
+ template <void (CallState::*on_progress)()>
1405
+ struct NextValueTraits<filters_detail::NextMessage<on_progress>> {
1406
+ using NextMsg = filters_detail::NextMessage<on_progress>;
1407
+ using Value = MessageHandle;
1408
+
1409
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static NextValueType Type(
1410
+ const NextMsg& t) {
1411
+ if (!t.ok()) return NextValueType::kError;
1412
+ if (t.has_value()) return NextValueType::kValue;
1413
+ return NextValueType::kEndOfStream;
1414
+ }
1415
+
1416
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static MessageHandle TakeValue(
1417
+ NextMsg& t) {
1418
+ return t.TakeValue();
1419
+ }
1420
+ };
1421
+ } // namespace for_each_detail
1422
+
1423
+ template <void (CallState::*on_progress)()>
1424
+ struct FailureStatusCastImpl<filters_detail::NextMessage<on_progress>,
1425
+ StatusFlag> {
1426
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static filters_detail::NextMessage<
1427
+ on_progress>
1428
+ Cast(StatusFlag flag) {
1429
+ DCHECK_EQ(flag, Failure{});
1430
+ return filters_detail::NextMessage<on_progress>(Failure{});
1431
+ }
1432
+ };
1433
+
1434
+ namespace promise_detail {
1435
+ template <void (CallState::*on_progress)()>
1436
+ struct TrySeqTraitsWithSfinae<filters_detail::NextMessage<on_progress>> {
1437
+ using UnwrappedType = MessageHandle;
1438
+ using WrappedType = filters_detail::NextMessage<on_progress>;
1439
+ template <typename Next>
1440
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static auto CallFactory(
1441
+ Next* next, WrappedType&& value) {
1442
+ return next->Make(value.TakeValue());
1443
+ }
1444
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static bool IsOk(
1445
+ const WrappedType& value) {
1446
+ return value.ok();
1447
+ }
1448
+ static const char* ErrorString(const WrappedType& status) {
1449
+ DCHECK(!status.ok());
1450
+ return "failed";
1451
+ }
1452
+ template <typename R>
1453
+ static R ReturnValue(WrappedType&& status) {
1454
+ DCHECK(!status.ok());
1455
+ return WrappedType(Failure{});
1456
+ }
1457
+ template <typename F, typename Elem>
1458
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static auto CallSeqFactory(
1459
+ F& f, Elem&& elem, WrappedType value)
1460
+ -> decltype(f(std::forward<Elem>(elem), std::declval<MessageHandle>())) {
1461
+ return f(std::forward<Elem>(elem), value.TakeValue());
1462
+ }
1463
+ template <typename Result, typename RunNext>
1464
+ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION static Poll<Result>
1465
+ CheckResultAndRunNext(WrappedType prior, RunNext run_next) {
1466
+ if (!prior.ok()) return WrappedType(prior.status());
1467
+ return run_next(std::move(prior));
1468
+ }
1469
+ };
1470
+ } // namespace promise_detail
1471
+
1472
+ using ServerToClientNextMessage =
1473
+ filters_detail::NextMessage<&CallState::FinishPullServerToClientMessage>;
1474
+ using ClientToServerNextMessage =
1475
+ filters_detail::NextMessage<&CallState::FinishPullClientToServerMessage>;
1476
+
1244
1477
  // Execution environment for a stack of filters.
1245
1478
  // This is a per-call object.
1246
1479
  class CallFilters {
@@ -1277,6 +1510,7 @@ class CallFilters {
1277
1510
  data_.AddClientInitialMetadataOp(filter, call_offset);
1278
1511
  data_.AddServerInitialMetadataOp(filter, call_offset);
1279
1512
  data_.AddClientToServerMessageOp(filter, call_offset);
1513
+ data_.AddClientToServerHalfClose(filter, call_offset);
1280
1514
  data_.AddServerToClientMessageOp(filter, call_offset);
1281
1515
  data_.AddServerTrailingMetadataOp(filter, call_offset);
1282
1516
  data_.AddFinalizer(filter, call_offset, &FilterType::Call::OnFinalize);
@@ -1296,6 +1530,14 @@ class CallFilters {
1296
1530
  AddOwnedObject([](void* p) { delete static_cast<T*>(p); }, p.release());
1297
1531
  }
1298
1532
 
1533
+ template <typename Fn>
1534
+ void AddOnClientInitialMetadata(Fn fn) {
1535
+ auto filter = std::make_unique<
1536
+ filters_detail::ClientInitialMetadataInterceptor<Fn>>(std::move(fn));
1537
+ Add(filter.get());
1538
+ AddOwnedObject(std::move(filter));
1539
+ }
1540
+
1299
1541
  template <typename Fn>
1300
1542
  void AddOnServerTrailingMetadata(Fn fn) {
1301
1543
  auto filter = std::make_unique<
@@ -1310,88 +1552,260 @@ class CallFilters {
1310
1552
  filters_detail::StackData data_;
1311
1553
  };
1312
1554
 
1313
- class NextMessage {
1314
- public:
1315
- NextMessage() : has_value_(false), cancelled_(false) {}
1316
- explicit NextMessage(MessageHandle value)
1317
- : has_value_(true), value_(std::move(value)) {}
1318
- explicit NextMessage(bool cancelled)
1319
- : has_value_(false), cancelled_(cancelled) {}
1320
- NextMessage(const NextMessage&) = delete;
1321
- NextMessage& operator=(const NextMessage&) = delete;
1322
- NextMessage(NextMessage&& other) noexcept = default;
1323
- NextMessage& operator=(NextMessage&& other) = default;
1324
-
1325
- using value_type = MessageHandle;
1326
-
1327
- void reset() {
1328
- has_value_ = false;
1329
- cancelled_ = false;
1330
- value_.reset();
1331
- }
1332
- bool has_value() const { return has_value_; }
1333
- const MessageHandle& value() const {
1334
- GPR_DEBUG_ASSERT(has_value_);
1335
- return value_;
1336
- }
1337
- MessageHandle& value() {
1338
- GPR_DEBUG_ASSERT(has_value_);
1339
- return value_;
1555
+ explicit CallFilters(ClientMetadataHandle client_initial_metadata)
1556
+ : call_data_(nullptr),
1557
+ push_client_initial_metadata_(std::move(client_initial_metadata)) {}
1558
+ ~CallFilters() {
1559
+ if (call_data_ != nullptr && call_data_ != &g_empty_call_data_) {
1560
+ for (const auto& stack : stacks_) {
1561
+ for (const auto& destructor : stack.stack->data_.filter_destructor) {
1562
+ destructor.call_destroy(filters_detail::Offset(
1563
+ call_data_, stack.call_data_offset + destructor.call_offset));
1564
+ }
1565
+ }
1566
+ gpr_free_aligned(call_data_);
1340
1567
  }
1341
- const MessageHandle& operator*() const { return value(); }
1342
- MessageHandle& operator*() { return value(); }
1343
- bool cancelled() const { return !has_value_ && cancelled_; }
1344
-
1345
- private:
1346
- bool has_value_;
1347
- bool cancelled_;
1348
- MessageHandle value_;
1349
1568
  };
1350
1569
 
1351
- explicit CallFilters(ClientMetadataHandle client_initial_metadata);
1352
- ~CallFilters();
1353
-
1354
1570
  CallFilters(const CallFilters&) = delete;
1355
1571
  CallFilters& operator=(const CallFilters&) = delete;
1356
1572
  CallFilters(CallFilters&&) = delete;
1357
1573
  CallFilters& operator=(CallFilters&&) = delete;
1358
1574
 
1359
- void SetStack(RefCountedPtr<Stack> stack);
1575
+ void AddStack(RefCountedPtr<Stack> stack) {
1576
+ if (stack->data_.empty()) return;
1577
+ stacks_.emplace_back(std::move(stack));
1578
+ }
1579
+ void Start();
1360
1580
 
1361
1581
  // Access client initial metadata before it's processed
1362
1582
  ClientMetadata* unprocessed_client_initial_metadata() {
1363
- return client_initial_metadata_.get();
1583
+ return push_client_initial_metadata_.get();
1364
1584
  }
1365
1585
 
1586
+ private:
1587
+ template <typename Output, typename Input,
1588
+ Input(CallFilters::* input_location),
1589
+ filters_detail::Layout<Input>(filters_detail::StackData::* layout),
1590
+ void (CallState::*on_done)(), typename StackIterator>
1591
+ class MetadataExecutor {
1592
+ public:
1593
+ MetadataExecutor(CallFilters* filters, StackIterator stack_begin,
1594
+ StackIterator stack_end)
1595
+ : stack_current_(stack_begin),
1596
+ stack_end_(stack_end),
1597
+ filters_(filters) {
1598
+ DCHECK_NE((filters_->*input_location).get(), nullptr);
1599
+ }
1600
+
1601
+ Poll<ValueOrFailure<Output>> operator()() {
1602
+ if ((filters_->*input_location) != nullptr) {
1603
+ if (stack_current_ == stack_end_) {
1604
+ DCHECK_NE((filters_->*input_location).get(), nullptr);
1605
+ (filters_->call_state_.*on_done)();
1606
+ return Output(std::move(filters_->*input_location));
1607
+ }
1608
+ return FinishStep(executor_.Start(
1609
+ &(stack_current_->stack->data_.*layout),
1610
+ std::move(filters_->*input_location), filters_->call_data_));
1611
+ } else {
1612
+ return FinishStep(executor_.Step(filters_->call_data_));
1613
+ }
1614
+ }
1615
+
1616
+ private:
1617
+ Poll<ValueOrFailure<Output>> FinishStep(
1618
+ Poll<filters_detail::ResultOr<Input>> p) {
1619
+ auto* r = p.value_if_ready();
1620
+ if (r == nullptr) return Pending{};
1621
+ if (r->ok != nullptr) {
1622
+ ++stack_current_;
1623
+ if (stack_current_ == stack_end_) {
1624
+ (filters_->call_state_.*on_done)();
1625
+ return ValueOrFailure<Output>{std::move(r->ok)};
1626
+ }
1627
+ return FinishStep(
1628
+ executor_.Start(&(stack_current_->stack->data_.*layout),
1629
+ std::move(r->ok), filters_->call_data_));
1630
+ }
1631
+ (filters_->call_state_.*on_done)();
1632
+ filters_->PushServerTrailingMetadata(std::move(r->error));
1633
+ return Failure{};
1634
+ }
1635
+
1636
+ StackIterator stack_current_;
1637
+ StackIterator stack_end_;
1638
+ CallFilters* filters_;
1639
+ filters_detail::OperationExecutor<Input> executor_;
1640
+ };
1641
+
1642
+ template <MessageHandle(CallFilters::* input_location),
1643
+ filters_detail::Layout<MessageHandle>(
1644
+ filters_detail::StackData::* layout),
1645
+ void (CallState::*on_done)(), typename StackIterator>
1646
+ class MessageExecutor {
1647
+ public:
1648
+ using NextMsg = filters_detail::NextMessage<on_done>;
1649
+
1650
+ MessageExecutor(CallFilters* filters, StackIterator stack_begin,
1651
+ StackIterator stack_end)
1652
+ : stack_current_(stack_begin),
1653
+ stack_end_(stack_end),
1654
+ filters_(filters) {
1655
+ DCHECK_NE((filters_->*input_location).get(), nullptr);
1656
+ }
1657
+
1658
+ Poll<NextMsg> operator()() {
1659
+ if ((filters_->*input_location) != nullptr) {
1660
+ if (stack_current_ == stack_end_) {
1661
+ DCHECK_NE((filters_->*input_location).get(), nullptr);
1662
+ return NextMsg(std::move(filters_->*input_location),
1663
+ &filters_->call_state_);
1664
+ }
1665
+ return FinishStep(executor_.Start(
1666
+ &(stack_current_->stack->data_.*layout),
1667
+ std::move(filters_->*input_location), filters_->call_data_));
1668
+ } else {
1669
+ return FinishStep(executor_.Step(filters_->call_data_));
1670
+ }
1671
+ }
1672
+
1673
+ private:
1674
+ Poll<NextMsg> FinishStep(Poll<filters_detail::ResultOr<MessageHandle>> p) {
1675
+ auto* r = p.value_if_ready();
1676
+ if (r == nullptr) return Pending{};
1677
+ if (r->ok != nullptr) {
1678
+ ++stack_current_;
1679
+ if (stack_current_ == stack_end_) {
1680
+ return NextMsg{std::move(r->ok), &filters_->call_state_};
1681
+ }
1682
+ return FinishStep(
1683
+ executor_.Start(&(stack_current_->stack->data_.*layout),
1684
+ std::move(r->ok), filters_->call_data_));
1685
+ }
1686
+ (filters_->call_state_.*on_done)();
1687
+ filters_->PushServerTrailingMetadata(std::move(r->error));
1688
+ return Failure{};
1689
+ }
1690
+
1691
+ StackIterator stack_current_;
1692
+ StackIterator stack_end_;
1693
+ CallFilters* filters_;
1694
+ filters_detail::OperationExecutor<MessageHandle> executor_;
1695
+ };
1696
+
1697
+ public:
1366
1698
  // Client: Fetch client initial metadata
1367
1699
  // Returns a promise that resolves to ValueOrFailure<ClientMetadataHandle>
1368
- GRPC_MUST_USE_RESULT auto PullClientInitialMetadata();
1369
- // Server: Indicate that no server initial metadata will be sent
1370
- void NoServerInitialMetadata() {
1371
- server_initial_metadata_state_.CloseSending();
1700
+ GRPC_MUST_USE_RESULT auto PullClientInitialMetadata() {
1701
+ call_state_.BeginPullClientInitialMetadata();
1702
+ return MetadataExecutor<ClientMetadataHandle, ClientMetadataHandle,
1703
+ &CallFilters::push_client_initial_metadata_,
1704
+ &filters_detail::StackData::client_initial_metadata,
1705
+ &CallState::FinishPullClientInitialMetadata,
1706
+ StacksVector::const_iterator>(
1707
+ this, stacks_.cbegin(), stacks_.cend());
1372
1708
  }
1373
1709
  // Server: Push server initial metadata
1374
1710
  // Returns a promise that resolves to a StatusFlag indicating success
1375
- GRPC_MUST_USE_RESULT auto PushServerInitialMetadata(ServerMetadataHandle md);
1711
+ StatusFlag PushServerInitialMetadata(ServerMetadataHandle md) {
1712
+ push_server_initial_metadata_ = std::move(md);
1713
+ return call_state_.PushServerInitialMetadata();
1714
+ }
1376
1715
  // Client: Fetch server initial metadata
1377
1716
  // Returns a promise that resolves to ValueOrFailure<ServerMetadataHandle>
1378
- GRPC_MUST_USE_RESULT auto PullServerInitialMetadata();
1717
+ GRPC_MUST_USE_RESULT auto PullServerInitialMetadata() {
1718
+ return Seq(
1719
+ [this]() {
1720
+ return call_state_.PollPullServerInitialMetadataAvailable();
1721
+ },
1722
+ [this](bool has_server_initial_metadata) {
1723
+ return If(
1724
+ has_server_initial_metadata,
1725
+ [this]() {
1726
+ return Map(
1727
+ MetadataExecutor<
1728
+ absl::optional<ServerMetadataHandle>,
1729
+ ServerMetadataHandle,
1730
+ &CallFilters::push_server_initial_metadata_,
1731
+ &filters_detail::StackData::server_initial_metadata,
1732
+ &CallState::FinishPullServerInitialMetadata,
1733
+ StacksVector::const_reverse_iterator>(
1734
+ this, stacks_.crbegin(), stacks_.crend()),
1735
+ [](ValueOrFailure<absl::optional<ServerMetadataHandle>> r) {
1736
+ if (r.ok()) return std::move(*r);
1737
+ return absl::optional<ServerMetadataHandle>{};
1738
+ });
1739
+ },
1740
+ []() {
1741
+ return Immediate(absl::optional<ServerMetadataHandle>{});
1742
+ });
1743
+ });
1744
+ }
1379
1745
  // Client: Push client to server message
1380
1746
  // Returns a promise that resolves to a StatusFlag indicating success
1381
- GRPC_MUST_USE_RESULT auto PushClientToServerMessage(MessageHandle message);
1382
- // Client: Indicate that no more messages will be sent
1383
- void FinishClientToServerSends() {
1384
- client_to_server_message_state_.CloseSending();
1747
+ GRPC_MUST_USE_RESULT auto PushClientToServerMessage(MessageHandle message) {
1748
+ call_state_.BeginPushClientToServerMessage();
1749
+ DCHECK_NE(message.get(), nullptr);
1750
+ DCHECK_EQ(push_client_to_server_message_.get(), nullptr);
1751
+ push_client_to_server_message_ = std::move(message);
1752
+ return [this]() { return call_state_.PollPushClientToServerMessage(); };
1385
1753
  }
1754
+ // Client: Indicate that no more messages will be sent
1755
+ void FinishClientToServerSends() { call_state_.ClientToServerHalfClose(); }
1386
1756
  // Server: Fetch client to server message
1387
- // Returns a promise that resolves to ValueOrFailure<MessageHandle>
1388
- GRPC_MUST_USE_RESULT auto PullClientToServerMessage();
1757
+ // Returns a promise that resolves to ClientToServerNextMessage
1758
+ GRPC_MUST_USE_RESULT auto PullClientToServerMessage() {
1759
+ return TrySeq(
1760
+ [this]() {
1761
+ return call_state_.PollPullClientToServerMessageAvailable();
1762
+ },
1763
+ [this](bool message_available) {
1764
+ return If(
1765
+ message_available,
1766
+ [this]() {
1767
+ return MessageExecutor<
1768
+ &CallFilters::push_client_to_server_message_,
1769
+ &filters_detail::StackData::client_to_server_messages,
1770
+ &CallState::FinishPullClientToServerMessage,
1771
+ StacksVector::const_iterator>(this, stacks_.cbegin(),
1772
+ stacks_.cend());
1773
+ },
1774
+ []() -> ClientToServerNextMessage {
1775
+ return ClientToServerNextMessage();
1776
+ });
1777
+ });
1778
+ }
1389
1779
  // Server: Push server to client message
1390
1780
  // Returns a promise that resolves to a StatusFlag indicating success
1391
- GRPC_MUST_USE_RESULT auto PushServerToClientMessage(MessageHandle message);
1781
+ GRPC_MUST_USE_RESULT auto PushServerToClientMessage(MessageHandle message) {
1782
+ call_state_.BeginPushServerToClientMessage();
1783
+ push_server_to_client_message_ = std::move(message);
1784
+ return [this]() { return call_state_.PollPushServerToClientMessage(); };
1785
+ }
1392
1786
  // Server: Fetch server to client message
1393
- // Returns a promise that resolves to ValueOrFailure<MessageHandle>
1394
- GRPC_MUST_USE_RESULT auto PullServerToClientMessage();
1787
+ // Returns a promise that resolves to ServerToClientNextMessage
1788
+ GRPC_MUST_USE_RESULT auto PullServerToClientMessage() {
1789
+ return TrySeq(
1790
+ [this]() {
1791
+ return call_state_.PollPullServerToClientMessageAvailable();
1792
+ },
1793
+ [this](bool message_available) {
1794
+ return If(
1795
+ message_available,
1796
+ [this]() {
1797
+ return MessageExecutor<
1798
+ &CallFilters::push_server_to_client_message_,
1799
+ &filters_detail::StackData::server_to_client_messages,
1800
+ &CallState::FinishPullServerToClientMessage,
1801
+ StacksVector::const_reverse_iterator>(
1802
+ this, stacks_.crbegin(), stacks_.crend());
1803
+ },
1804
+ []() -> ServerToClientNextMessage {
1805
+ return ServerToClientNextMessage();
1806
+ });
1807
+ });
1808
+ }
1395
1809
  // Server: Indicate end of response
1396
1810
  // Closes the request entirely - no messages can be sent/received
1397
1811
  // If no server initial metadata has been sent, implies
@@ -1399,400 +1813,86 @@ class CallFilters {
1399
1813
  void PushServerTrailingMetadata(ServerMetadataHandle md);
1400
1814
  // Client: Fetch server trailing metadata
1401
1815
  // Returns a promise that resolves to ServerMetadataHandle
1402
- GRPC_MUST_USE_RESULT auto PullServerTrailingMetadata();
1816
+ GRPC_MUST_USE_RESULT auto PullServerTrailingMetadata() {
1817
+ return Map(
1818
+ [this]() { return call_state_.PollServerTrailingMetadataAvailable(); },
1819
+ [this](Empty) {
1820
+ auto value = std::move(push_server_trailing_metadata_);
1821
+ if (call_data_ != nullptr) {
1822
+ for (auto it = stacks_.crbegin(); it != stacks_.crend(); ++it) {
1823
+ value = filters_detail::RunServerTrailingMetadata(
1824
+ it->stack->data_.server_trailing_metadata,
1825
+ filters_detail::Offset(call_data_, it->call_data_offset),
1826
+ std::move(value));
1827
+ }
1828
+ }
1829
+ return value;
1830
+ });
1831
+ }
1403
1832
  // Server: Wait for server trailing metadata to have been sent
1404
1833
  // Returns a promise that resolves to a StatusFlag indicating whether the
1405
1834
  // request was cancelled or not -- failure to send trailing metadata is
1406
1835
  // considered a cancellation, as is actual cancellation -- but not application
1407
1836
  // errors.
1408
- GRPC_MUST_USE_RESULT auto WasCancelled();
1837
+ GRPC_MUST_USE_RESULT auto WasCancelled() {
1838
+ return [this]() { return call_state_.PollWasCancelled(); };
1839
+ }
1840
+ // Client & server: returns true if server trailing metadata has been pushed
1841
+ // *and* contained a cancellation, false otherwise.
1842
+ GRPC_MUST_USE_RESULT bool WasCancelledPushed() const {
1843
+ return call_state_.WasCancelledPushed();
1844
+ }
1845
+
1846
+ // Returns true if server trailing metadata has been pulled
1847
+ bool WasServerTrailingMetadataPulled() const {
1848
+ return call_state_.WasServerTrailingMetadataPulled();
1849
+ }
1850
+
1409
1851
  // Client & server: fill in final_info with the final status of the call.
1410
1852
  void Finalize(const grpc_call_final_info* final_info);
1411
1853
 
1412
1854
  std::string DebugString() const;
1413
1855
 
1414
1856
  private:
1415
- template <filters_detail::PipeState(CallFilters::*state_ptr),
1416
- void*(CallFilters::*push_ptr), typename T,
1417
- filters_detail::Layout<filters_detail::FallibleOperator<T>>(
1418
- filters_detail::StackData::*layout_ptr)>
1419
- class PipePromise {
1420
- public:
1421
- class Push {
1422
- public:
1423
- Push(CallFilters* filters, T x)
1424
- : filters_(filters), value_(std::move(x)) {
1425
- state().BeginPush();
1426
- push_slot() = this;
1427
- }
1428
- ~Push() {
1429
- if (filters_ != nullptr) {
1430
- state().DropPush();
1431
- push_slot() = nullptr;
1432
- }
1433
- }
1434
-
1435
- Push(const Push&) = delete;
1436
- Push& operator=(const Push&) = delete;
1437
- Push(Push&& other) noexcept
1438
- : filters_(std::exchange(other.filters_, nullptr)),
1439
- value_(std::move(other.value_)) {
1440
- if (filters_ != nullptr) {
1441
- GPR_DEBUG_ASSERT(push_slot() == &other);
1442
- push_slot() = this;
1443
- }
1444
- }
1445
-
1446
- Push& operator=(Push&&) = delete;
1447
-
1448
- Poll<StatusFlag> operator()() { return state().PollPush(); }
1449
-
1450
- T TakeValue() { return std::move(value_); }
1451
-
1452
- absl::string_view DebugString() const {
1453
- return value_ != nullptr ? " (not pulled)" : "";
1454
- }
1455
-
1456
- private:
1457
- filters_detail::PipeState& state() { return filters_->*state_ptr; }
1458
- void*& push_slot() { return filters_->*push_ptr; }
1459
-
1460
- CallFilters* filters_;
1461
- T value_;
1462
- };
1463
-
1464
- static std::string DebugString(absl::string_view name,
1465
- const CallFilters* filters) {
1466
- auto* push = static_cast<Push*>(filters->*push_ptr);
1467
- return absl::StrCat(name, ":", (filters->*state_ptr).DebugString(),
1468
- push == nullptr ? "" : push->DebugString());
1469
- }
1470
-
1471
- class PullMaybe {
1472
- public:
1473
- explicit PullMaybe(CallFilters* filters) : filters_(filters) {}
1474
- ~PullMaybe() {
1475
- if (filters_ != nullptr) {
1476
- state().DropPull();
1477
- }
1478
- }
1479
-
1480
- PullMaybe(const PullMaybe&) = delete;
1481
- PullMaybe& operator=(const PullMaybe&) = delete;
1482
- PullMaybe(PullMaybe&& other) noexcept
1483
- : filters_(std::exchange(other.filters_, nullptr)),
1484
- executor_(std::move(other.executor_)) {}
1485
- PullMaybe& operator=(PullMaybe&&) = delete;
1486
-
1487
- Poll<ValueOrFailure<absl::optional<T>>> operator()() {
1488
- if (executor_.IsRunning()) {
1489
- auto c = state().PollClosed();
1490
- if (c.ready() && c.value()) {
1491
- filters_->CancelDueToFailedPipeOperation();
1492
- return Failure{};
1493
- }
1494
- return FinishOperationExecutor(executor_.Step(filters_->call_data_));
1495
- }
1496
- auto p = state().PollPull();
1497
- auto* r = p.value_if_ready();
1498
- if (r == nullptr) return Pending{};
1499
- if (!r->ok()) {
1500
- filters_->CancelDueToFailedPipeOperation();
1501
- return Failure{};
1502
- }
1503
- if (!**r) return absl::nullopt;
1504
- return FinishOperationExecutor(executor_.Start(
1505
- layout(), push()->TakeValue(), filters_->call_data_));
1506
- }
1507
-
1508
- private:
1509
- filters_detail::PipeState& state() { return filters_->*state_ptr; }
1510
- Push* push() { return static_cast<Push*>(filters_->*push_ptr); }
1511
- const filters_detail::Layout<filters_detail::FallibleOperator<T>>*
1512
- layout() {
1513
- return &(filters_->stack_->data_.*layout_ptr);
1514
- }
1515
-
1516
- Poll<ValueOrFailure<absl::optional<T>>> FinishOperationExecutor(
1517
- Poll<filters_detail::ResultOr<T>> p) {
1518
- auto* r = p.value_if_ready();
1519
- if (r == nullptr) return Pending{};
1520
- GPR_DEBUG_ASSERT(!executor_.IsRunning());
1521
- state().AckPull();
1522
- if (r->ok != nullptr) return std::move(r->ok);
1523
- filters_->PushServerTrailingMetadata(std::move(r->error));
1524
- return Failure{};
1525
- }
1526
-
1527
- CallFilters* filters_;
1528
- filters_detail::OperationExecutor<T> executor_;
1529
- };
1530
-
1531
- class PullMessage {
1532
- public:
1533
- explicit PullMessage(CallFilters* filters) : filters_(filters) {}
1534
- ~PullMessage() {
1535
- if (filters_ != nullptr) {
1536
- state().DropPull();
1537
- }
1538
- }
1539
-
1540
- PullMessage(const PullMessage&) = delete;
1541
- PullMessage& operator=(const PullMessage&) = delete;
1542
- PullMessage(PullMessage&& other) noexcept
1543
- : filters_(std::exchange(other.filters_, nullptr)),
1544
- executor_(std::move(other.executor_)) {}
1545
- PullMessage& operator=(PullMessage&&) = delete;
1546
-
1547
- Poll<NextMessage> operator()() {
1548
- if (executor_.IsRunning()) {
1549
- auto c = state().PollClosed();
1550
- if (c.ready() && c.value()) {
1551
- filters_->CancelDueToFailedPipeOperation();
1552
- return NextMessage(true);
1553
- }
1554
- return FinishOperationExecutor(executor_.Step(filters_->call_data_));
1555
- }
1556
- auto p = state().PollPull();
1557
- auto* r = p.value_if_ready();
1558
- if (r == nullptr) return Pending{};
1559
- if (!r->ok()) {
1560
- filters_->CancelDueToFailedPipeOperation();
1561
- return NextMessage(true);
1562
- }
1563
- if (!**r) return NextMessage(false);
1564
- return FinishOperationExecutor(executor_.Start(
1565
- layout(), push()->TakeValue(), filters_->call_data_));
1566
- }
1567
-
1568
- private:
1569
- filters_detail::PipeState& state() { return filters_->*state_ptr; }
1570
- Push* push() { return static_cast<Push*>(filters_->*push_ptr); }
1571
- const filters_detail::Layout<filters_detail::FallibleOperator<T>>*
1572
- layout() {
1573
- return &(filters_->stack_->data_.*layout_ptr);
1574
- }
1575
-
1576
- Poll<NextMessage> FinishOperationExecutor(
1577
- Poll<filters_detail::ResultOr<T>> p) {
1578
- auto* r = p.value_if_ready();
1579
- if (r == nullptr) return Pending{};
1580
- GPR_DEBUG_ASSERT(!executor_.IsRunning());
1581
- state().AckPull();
1582
- if (r->ok != nullptr) return NextMessage(std::move(r->ok));
1583
- filters_->PushServerTrailingMetadata(std::move(r->error));
1584
- return NextMessage(true);
1585
- }
1586
-
1587
- CallFilters* filters_;
1588
- filters_detail::OperationExecutor<T> executor_;
1589
- };
1590
- };
1591
-
1592
- class PullClientInitialMetadataPromise {
1593
- public:
1594
- explicit PullClientInitialMetadataPromise(CallFilters* filters)
1595
- : filters_(filters) {}
1596
-
1597
- PullClientInitialMetadataPromise(const PullClientInitialMetadataPromise&) =
1598
- delete;
1599
- PullClientInitialMetadataPromise& operator=(
1600
- const PullClientInitialMetadataPromise&) = delete;
1601
- PullClientInitialMetadataPromise(
1602
- PullClientInitialMetadataPromise&& other) noexcept
1603
- : filters_(std::exchange(other.filters_, nullptr)),
1604
- executor_(std::move(other.executor_)) {}
1605
- PullClientInitialMetadataPromise& operator=(
1606
- PullClientInitialMetadataPromise&&) = delete;
1607
-
1608
- Poll<ValueOrFailure<ClientMetadataHandle>> operator()() {
1609
- if (executor_.IsRunning()) {
1610
- return FinishOperationExecutor(executor_.Step(filters_->call_data_));
1611
- }
1612
- auto p = state().PollPull();
1613
- auto* r = p.value_if_ready();
1614
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) {
1615
- gpr_log(GPR_INFO, "%s",
1616
- r == nullptr
1617
- ? "PENDING"
1618
- : (r->ok() ? (r->value() ? "TRUE" : "FALSE") : "FAILURE"));
1619
- }
1620
- if (r == nullptr) return Pending{};
1621
- if (!r->ok()) {
1622
- filters_->CancelDueToFailedPipeOperation();
1623
- return Failure{};
1624
- }
1625
- GPR_ASSERT(filters_->client_initial_metadata_ != nullptr);
1626
- return FinishOperationExecutor(executor_.Start(
1627
- &filters_->stack_->data_.client_initial_metadata,
1628
- std::move(filters_->client_initial_metadata_), filters_->call_data_));
1629
- }
1630
-
1631
- private:
1632
- filters_detail::PipeState& state() {
1633
- return filters_->client_initial_metadata_state_;
1634
- }
1635
-
1636
- Poll<ValueOrFailure<ClientMetadataHandle>> FinishOperationExecutor(
1637
- Poll<filters_detail::ResultOr<ClientMetadataHandle>> p) {
1638
- auto* r = p.value_if_ready();
1639
- if (r == nullptr) return Pending{};
1640
- GPR_DEBUG_ASSERT(!executor_.IsRunning());
1641
- state().AckPull();
1642
- if (r->ok != nullptr) return std::move(r->ok);
1643
- filters_->PushServerTrailingMetadata(std::move(r->error));
1644
- return Failure{};
1645
- }
1646
-
1647
- CallFilters* filters_;
1648
- filters_detail::OperationExecutor<ClientMetadataHandle> executor_;
1649
- };
1650
-
1651
- class PullServerTrailingMetadataPromise {
1652
- public:
1653
- explicit PullServerTrailingMetadataPromise(CallFilters* filters)
1654
- : filters_(filters) {}
1655
-
1656
- PullServerTrailingMetadataPromise(
1657
- const PullServerTrailingMetadataPromise&) = delete;
1658
- PullServerTrailingMetadataPromise& operator=(
1659
- const PullServerTrailingMetadataPromise&) = delete;
1660
- PullServerTrailingMetadataPromise(
1661
- PullServerTrailingMetadataPromise&& other) noexcept
1662
- : filters_(std::exchange(other.filters_, nullptr)),
1663
- executor_(std::move(other.executor_)) {}
1664
- PullServerTrailingMetadataPromise& operator=(
1665
- PullServerTrailingMetadataPromise&&) = delete;
1666
-
1667
- Poll<ServerMetadataHandle> operator()() {
1668
- if (executor_.IsRunning()) {
1669
- auto r = executor_.Step(filters_->call_data_);
1670
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) {
1671
- if (r.pending()) {
1672
- gpr_log(GPR_INFO,
1673
- "%s PullServerTrailingMetadata[%p]: Pending(but executing)",
1674
- GetContext<Activity>()->DebugTag().c_str(), filters_);
1675
- } else {
1676
- gpr_log(GPR_INFO, "%s PullServerTrailingMetadata[%p]: Ready: %s",
1677
- GetContext<Activity>()->DebugTag().c_str(), filters_,
1678
- r.value()->DebugString().c_str());
1679
- }
1680
- }
1681
- return r;
1682
- }
1683
- if (filters_->server_trailing_metadata_ == nullptr) {
1684
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) {
1685
- gpr_log(GPR_INFO,
1686
- "%s PullServerTrailingMetadata[%p]: Pending(not pushed)",
1687
- GetContext<Activity>()->DebugTag().c_str(), filters_);
1688
- }
1689
- return filters_->server_trailing_metadata_waiter_.pending();
1690
- }
1691
- // If no stack has been set, we can just return the result of the call
1692
- if (filters_->stack_ == nullptr) {
1693
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_promise_primitives)) {
1694
- gpr_log(GPR_INFO,
1695
- "%s PullServerTrailingMetadata[%p]: Ready(no-stack): %s",
1696
- GetContext<Activity>()->DebugTag().c_str(), filters_,
1697
- filters_->server_trailing_metadata_->DebugString().c_str());
1698
- }
1699
- return std::move(filters_->server_trailing_metadata_);
1700
- }
1701
- // Otherwise we need to process it through all the filters.
1702
- return executor_.Start(&filters_->stack_->data_.server_trailing_metadata,
1703
- std::move(filters_->server_trailing_metadata_),
1704
- filters_->call_data_);
1705
- }
1857
+ void CancelDueToFailedPipeOperation(SourceLocation but_where = {});
1706
1858
 
1707
- private:
1708
- CallFilters* filters_;
1709
- filters_detail::InfallibleOperationExecutor<ServerMetadataHandle> executor_;
1859
+ struct AddedStack {
1860
+ explicit AddedStack(RefCountedPtr<Stack> stack)
1861
+ : call_data_offset(std::numeric_limits<size_t>::max()),
1862
+ stack(std::move(stack)) {}
1863
+ size_t call_data_offset;
1864
+ RefCountedPtr<Stack> stack;
1710
1865
  };
1711
1866
 
1712
- void CancelDueToFailedPipeOperation(SourceLocation but_where = {});
1867
+ using StacksVector = absl::InlinedVector<AddedStack, 2>;
1713
1868
 
1714
- RefCountedPtr<Stack> stack_;
1869
+ StacksVector stacks_;
1715
1870
 
1716
- filters_detail::PipeState client_initial_metadata_state_{
1717
- filters_detail::PipeState::StartPushed{}};
1718
- filters_detail::PipeState server_initial_metadata_state_;
1719
- filters_detail::PipeState client_to_server_message_state_;
1720
- filters_detail::PipeState server_to_client_message_state_;
1721
- IntraActivityWaiter server_trailing_metadata_waiter_;
1722
- Latch<bool> cancelled_;
1871
+ CallState call_state_;
1723
1872
 
1724
1873
  void* call_data_;
1725
- ClientMetadataHandle client_initial_metadata_;
1726
-
1727
- // The following void*'s are pointers to a `Push` object (from above).
1728
- // They are used to track the current push operation for each pipe.
1729
- // It would be lovely for them to be typed pointers, but that would require
1730
- // a recursive type definition since the location of this field needs to be
1731
- // a template argument to the `Push` object itself.
1732
- void* server_initial_metadata_push_ = nullptr;
1733
- void* client_to_server_message_push_ = nullptr;
1734
- void* server_to_client_message_push_ = nullptr;
1735
-
1736
- ServerMetadataHandle server_trailing_metadata_;
1737
-
1738
- using ServerInitialMetadataPromises =
1739
- PipePromise<&CallFilters::server_initial_metadata_state_,
1740
- &CallFilters::server_initial_metadata_push_,
1741
- ServerMetadataHandle,
1742
- &filters_detail::StackData::server_initial_metadata>;
1743
- using ClientToServerMessagePromises =
1744
- PipePromise<&CallFilters::client_to_server_message_state_,
1745
- &CallFilters::client_to_server_message_push_, MessageHandle,
1746
- &filters_detail::StackData::client_to_server_messages>;
1747
- using ServerToClientMessagePromises =
1748
- PipePromise<&CallFilters::server_to_client_message_state_,
1749
- &CallFilters::server_to_client_message_push_, MessageHandle,
1750
- &filters_detail::StackData::server_to_client_messages>;
1751
- };
1752
-
1753
- inline auto CallFilters::PullClientInitialMetadata() {
1754
- return PullClientInitialMetadataPromise(this);
1755
- }
1756
-
1757
- inline auto CallFilters::PushServerInitialMetadata(ServerMetadataHandle md) {
1758
- GPR_ASSERT(md != nullptr);
1759
- return [p = ServerInitialMetadataPromises::Push{
1760
- this, std::move(md)}]() mutable { return p(); };
1761
- }
1874
+ ClientMetadataHandle push_client_initial_metadata_;
1875
+ ServerMetadataHandle push_server_initial_metadata_;
1876
+ MessageHandle push_client_to_server_message_;
1877
+ MessageHandle push_server_to_client_message_;
1878
+ ServerMetadataHandle push_server_trailing_metadata_;
1762
1879
 
1763
- inline auto CallFilters::PullServerInitialMetadata() {
1764
- return ServerInitialMetadataPromises::PullMaybe{this};
1765
- }
1766
-
1767
- inline auto CallFilters::PushClientToServerMessage(MessageHandle message) {
1768
- GPR_ASSERT(message != nullptr);
1769
- return [p = ClientToServerMessagePromises::Push{
1770
- this, std::move(message)}]() mutable { return p(); };
1771
- }
1772
-
1773
- inline auto CallFilters::PullClientToServerMessage() {
1774
- return ClientToServerMessagePromises::PullMessage{this};
1775
- }
1776
-
1777
- inline auto CallFilters::PushServerToClientMessage(MessageHandle message) {
1778
- GPR_ASSERT(message != nullptr);
1779
- return [p = ServerToClientMessagePromises::Push{
1780
- this, std::move(message)}]() mutable { return p(); };
1781
- }
1782
-
1783
- inline auto CallFilters::PullServerToClientMessage() {
1784
- return ServerToClientMessagePromises::PullMessage{this};
1785
- }
1786
-
1787
- inline auto CallFilters::PullServerTrailingMetadata() {
1788
- return Map(PullServerTrailingMetadataPromise(this),
1789
- [this](ServerMetadataHandle h) {
1790
- cancelled_.Set(h->get(GrpcCallWasCancelled()).value_or(false));
1791
- return h;
1792
- });
1793
- }
1880
+ static char g_empty_call_data_;
1881
+ };
1794
1882
 
1795
- inline auto CallFilters::WasCancelled() { return cancelled_.Wait(); }
1883
+ static_assert(
1884
+ filters_detail::ArgumentMustBeNextMessage<
1885
+ absl::remove_cvref_t<decltype(std::declval<CallFilters*>()
1886
+ ->PullServerToClientMessage()()
1887
+ .value())>>::value(),
1888
+ "PullServerToClientMessage must return a NextMessage");
1889
+
1890
+ static_assert(
1891
+ filters_detail::ArgumentMustBeNextMessage<
1892
+ absl::remove_cvref_t<decltype(std::declval<CallFilters*>()
1893
+ ->PullClientToServerMessage()()
1894
+ .value())>>::value(),
1895
+ "PullServerToClientMessage must return a NextMessage");
1796
1896
 
1797
1897
  } // namespace grpc_core
1798
1898