grpc 1.72.0 → 1.73.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 (1034) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +23 -6
  3. data/include/grpc/event_engine/event_engine.h +125 -8
  4. data/include/grpc/event_engine/internal/write_event.h +34 -0
  5. data/include/grpc/impl/channel_arg_names.h +17 -9
  6. data/include/grpc/impl/compression_types.h +3 -2
  7. data/include/grpc/impl/slice_type.h +1 -1
  8. data/include/grpc/support/json.h +3 -21
  9. data/include/grpc/support/port_platform.h +8 -5
  10. data/src/core/call/call_filters.h +28 -19
  11. data/src/core/call/call_spine.h +2 -0
  12. data/src/core/call/metadata.h +17 -0
  13. data/src/core/channelz/channel_trace.cc +50 -42
  14. data/src/core/channelz/channel_trace.h +35 -4
  15. data/src/core/channelz/channelz.cc +338 -125
  16. data/src/core/channelz/channelz.h +276 -34
  17. data/src/core/channelz/channelz_registry.cc +322 -117
  18. data/src/core/channelz/channelz_registry.h +179 -21
  19. data/src/core/channelz/ztrace_collector.h +315 -0
  20. data/src/core/client_channel/client_channel.cc +30 -29
  21. data/src/core/client_channel/client_channel_filter.cc +21 -20
  22. data/src/core/client_channel/client_channel_filter.h +0 -2
  23. data/src/core/client_channel/connector.h +0 -3
  24. data/src/core/client_channel/global_subchannel_pool.cc +68 -7
  25. data/src/core/client_channel/global_subchannel_pool.h +37 -4
  26. data/src/core/client_channel/subchannel.cc +7 -9
  27. data/src/core/client_channel/subchannel.h +2 -8
  28. data/src/core/client_channel/subchannel_pool_interface.cc +5 -6
  29. data/src/core/client_channel/subchannel_pool_interface.h +11 -1
  30. data/src/core/config/config_vars.cc +11 -1
  31. data/src/core/config/config_vars.h +8 -0
  32. data/src/core/config/core_configuration.cc +50 -11
  33. data/src/core/config/core_configuration.h +89 -7
  34. data/src/core/credentials/call/external/aws_request_signer.cc +3 -2
  35. data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -2
  36. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +1 -1
  37. data/src/core/credentials/call/jwt/jwt_verifier.cc +4 -4
  38. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +4 -2
  39. data/src/core/credentials/transport/alts/alts_security_connector.cc +9 -8
  40. data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
  41. data/src/core/credentials/transport/ssl/ssl_credentials.cc +2 -2
  42. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +41 -11
  43. data/src/core/credentials/transport/ssl/ssl_security_connector.h +2 -1
  44. data/src/core/credentials/transport/tls/ssl_utils.cc +18 -0
  45. data/src/core/credentials/transport/tls/ssl_utils.h +5 -0
  46. data/src/core/credentials/transport/tls/tls_security_connector.cc +2 -1
  47. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +6 -3
  48. data/src/core/ext/filters/http/message_compress/compression_filter.h +34 -4
  49. data/src/core/ext/filters/http/server/http_server_filter.cc +1 -1
  50. data/src/core/ext/filters/http/server/http_server_filter.h +14 -3
  51. data/src/core/ext/transport/chttp2/chttp2_plugin.cc +40 -0
  52. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +11 -112
  53. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +3 -0
  54. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +33 -962
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -1
  56. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -47
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +18 -0
  59. data/src/core/ext/transport/chttp2/transport/frame.cc +213 -105
  60. data/src/core/ext/transport/chttp2/transport/frame.h +78 -6
  61. data/src/core/ext/transport/chttp2/transport/frame_data.cc +10 -0
  62. data/src/core/ext/transport/chttp2/transport/frame_data.h +2 -0
  63. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -3
  64. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -3
  65. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  66. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +11 -4
  67. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -1
  68. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -0
  70. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +7 -0
  71. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -0
  72. data/src/core/ext/transport/chttp2/transport/http2_settings.h +26 -0
  73. data/src/core/ext/transport/chttp2/transport/http2_status.h +358 -1
  74. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +252 -0
  75. data/src/core/ext/transport/chttp2/transport/internal.h +29 -5
  76. data/src/core/ext/transport/chttp2/transport/internal_channel_arg_names.h +24 -0
  77. data/src/core/ext/transport/chttp2/transport/parsing.cc +36 -21
  78. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +10 -9
  79. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +6 -0
  80. data/src/core/ext/transport/chttp2/transport/writing.cc +60 -49
  81. data/src/core/ext/transport/inproc/inproc_transport.cc +7 -2
  82. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +6 -2
  83. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +4 -0
  84. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +12 -0
  85. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +12 -22
  86. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +12 -22
  87. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +28 -22
  88. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +12 -0
  89. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +24 -67
  90. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +4 -0
  91. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +4 -0
  92. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +29 -31
  93. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +2 -2
  94. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +12 -0
  95. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +4 -0
  96. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +8 -0
  97. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +4 -0
  98. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +4 -0
  99. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +0 -23
  100. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +8 -0
  101. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +8 -0
  102. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +12 -0
  103. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +20 -0
  104. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +12 -0
  105. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +8 -22
  106. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +0 -23
  107. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +64 -66
  108. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +4 -0
  109. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +12 -0
  110. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +4 -0
  111. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +4 -0
  112. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +4 -95
  113. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +8 -0
  114. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
  115. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +4 -0
  116. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +28 -0
  117. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +4 -0
  118. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +4 -0
  119. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +4 -0
  120. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +12 -0
  121. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +8 -0
  122. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +8 -36
  123. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +4 -0
  124. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +4 -0
  125. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +4 -0
  126. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +4 -0
  127. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +4 -0
  128. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +4 -0
  129. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +4 -0
  130. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +4 -0
  131. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +4 -0
  132. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +8 -0
  133. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +8 -0
  134. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +4 -0
  135. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +4 -0
  136. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +4 -0
  137. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +8 -44
  138. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +12 -40
  139. data/src/core/ext/upb-gen/google/api/http.upb.h +4 -0
  140. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +193 -20
  141. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +59 -21
  142. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +4 -0
  143. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +4 -22
  144. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +0 -18
  145. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +113 -53
  146. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +20 -14
  147. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +154 -0
  148. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +40 -2
  149. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +4 -0
  150. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +8 -0
  151. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +0 -18
  152. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +0 -36
  153. data/src/core/ext/upb-gen/validate/validate.upb.h +12 -0
  154. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +4 -0
  155. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +0 -18
  156. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +8 -0
  157. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +0 -54
  158. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +20 -22
  159. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +4 -0
  160. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +4 -0
  161. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +4 -0
  162. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.c +123 -62
  163. data/src/core/ext/upbdefs-gen/envoy/admin/v3/certs.upbdefs.h +5 -1
  164. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.c +200 -101
  165. data/src/core/ext/upbdefs-gen/envoy/admin/v3/clusters.upbdefs.h +5 -1
  166. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.c +152 -77
  167. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump.upbdefs.h +5 -1
  168. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.c +524 -255
  169. data/src/core/ext/upbdefs-gen/envoy/admin/v3/config_dump_shared.upbdefs.h +5 -1
  170. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.c +44 -23
  171. data/src/core/ext/upbdefs-gen/envoy/admin/v3/init_dump.upbdefs.h +5 -1
  172. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.c +66 -34
  173. data/src/core/ext/upbdefs-gen/envoy/admin/v3/listeners.upbdefs.h +5 -1
  174. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.c +54 -28
  175. data/src/core/ext/upbdefs-gen/envoy/admin/v3/memory.upbdefs.h +5 -1
  176. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.c +46 -25
  177. data/src/core/ext/upbdefs-gen/envoy/admin/v3/metrics.upbdefs.h +5 -1
  178. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.c +47 -25
  179. data/src/core/ext/upbdefs-gen/envoy/admin/v3/mutex_stats.upbdefs.h +5 -1
  180. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.c +256 -126
  181. data/src/core/ext/upbdefs-gen/envoy/admin/v3/server_info.upbdefs.h +5 -1
  182. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.c +50 -28
  183. data/src/core/ext/upbdefs-gen/envoy/admin/v3/tap.upbdefs.h +5 -1
  184. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.c +55 -28
  185. data/src/core/ext/upbdefs-gen/envoy/annotations/deprecation.upbdefs.h +5 -1
  186. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.c +34 -18
  187. data/src/core/ext/upbdefs-gen/envoy/annotations/resource.upbdefs.h +5 -1
  188. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.c +414 -206
  189. data/src/core/ext/upbdefs-gen/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -1
  190. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +831 -413
  191. data/src/core/ext/upbdefs-gen/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -1
  192. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +143 -73
  193. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +5 -1
  194. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.c +1132 -557
  195. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/cluster.upbdefs.h +5 -1
  196. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.c +63 -34
  197. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/filter.upbdefs.h +5 -1
  198. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.c +255 -127
  199. data/src/core/ext/upbdefs-gen/envoy/config/cluster/v3/outlier_detection.upbdefs.h +5 -1
  200. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.c +363 -178
  201. data/src/core/ext/upbdefs-gen/envoy/config/common/matcher/v3/matcher.upbdefs.h +5 -1
  202. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.c +227 -114
  203. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/address.upbdefs.h +5 -1
  204. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.c +57 -31
  205. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/backoff.upbdefs.h +5 -1
  206. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.c +596 -295
  207. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/base.upbdefs.h +5 -1
  208. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.c +271 -137
  209. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/config_source.upbdefs.h +5 -1
  210. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.c +56 -30
  211. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/event_service_config.upbdefs.h +5 -1
  212. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.c +45 -25
  213. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/extension.upbdefs.h +5 -1
  214. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.c +59 -31
  215. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_method_list.upbdefs.h +5 -1
  216. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.c +438 -217
  217. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/grpc_service.upbdefs.h +5 -1
  218. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.c +441 -221
  219. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/health_check.upbdefs.h +5 -1
  220. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.c +55 -30
  221. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_service.upbdefs.h +5 -1
  222. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.c +57 -31
  223. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/http_uri.upbdefs.h +5 -1
  224. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.c +619 -303
  225. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/protocol.upbdefs.h +5 -1
  226. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.c +70 -36
  227. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -1
  228. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.c +62 -33
  229. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/resolver.upbdefs.h +5 -1
  230. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.c +47 -25
  231. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_cmsg_headers.upbdefs.h +5 -1
  232. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.c +97 -49
  233. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/socket_option.upbdefs.h +5 -1
  234. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.c +97 -51
  235. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/substitution_format_string.upbdefs.h +5 -1
  236. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.c +51 -27
  237. data/src/core/ext/upbdefs-gen/envoy/config/core/v3/udp_socket_config.upbdefs.h +5 -1
  238. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.c +147 -76
  239. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint.upbdefs.h +5 -1
  240. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +230 -116
  241. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +5 -1
  242. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.c +277 -138
  243. data/src/core/ext/upbdefs-gen/envoy/config/endpoint/v3/load_report.upbdefs.h +5 -1
  244. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.c +48 -26
  245. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/api_listener.upbdefs.h +5 -1
  246. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.c +388 -197
  247. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener.upbdefs.h +5 -1
  248. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.c +304 -153
  249. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/listener_components.upbdefs.h +5 -1
  250. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.c +173 -90
  251. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/quic_config.upbdefs.h +5 -1
  252. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.c +90 -47
  253. data/src/core/ext/upbdefs-gen/envoy/config/listener/v3/udp_listener_config.upbdefs.h +5 -1
  254. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.c +98 -51
  255. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/metrics_service.upbdefs.h +5 -1
  256. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.c +196 -99
  257. data/src/core/ext/upbdefs-gen/envoy/config/metrics/v3/stats.upbdefs.h +5 -1
  258. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.c +237 -118
  259. data/src/core/ext/upbdefs-gen/envoy/config/overload/v3/overload.upbdefs.h +5 -1
  260. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.c +418 -210
  261. data/src/core/ext/upbdefs-gen/envoy/config/rbac/v3/rbac.upbdefs.h +5 -1
  262. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.c +194 -99
  263. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route.upbdefs.h +5 -1
  264. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.c +2003 -973
  265. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/route_components.upbdefs.h +5 -1
  266. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.c +101 -53
  267. data/src/core/ext/upbdefs-gen/envoy/config/route/v3/scoped_route.upbdefs.h +5 -1
  268. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.c +352 -176
  269. data/src/core/ext/upbdefs-gen/envoy/config/tap/v3/common.upbdefs.h +5 -1
  270. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.c +79 -42
  271. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/datadog.upbdefs.h +5 -1
  272. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.c +67 -37
  273. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/dynamic_ot.upbdefs.h +5 -1
  274. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.c +63 -34
  275. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/http_tracer.upbdefs.h +5 -1
  276. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.c +88 -47
  277. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/lightstep.upbdefs.h +5 -1
  278. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.c +80 -43
  279. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/opentelemetry.upbdefs.h +5 -1
  280. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.c +53 -29
  281. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/service.upbdefs.h +5 -1
  282. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.c +86 -46
  283. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/skywalking.upbdefs.h +5 -1
  284. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.c +55 -32
  285. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/trace.upbdefs.h +5 -1
  286. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.c +91 -49
  287. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/xray.upbdefs.h +5 -1
  288. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.c +105 -55
  289. data/src/core/ext/upbdefs-gen/envoy/config/trace/v3/zipkin.upbdefs.h +5 -1
  290. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.c +775 -379
  291. data/src/core/ext/upbdefs-gen/envoy/data/accesslog/v3/accesslog.upbdefs.h +5 -1
  292. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +52 -28
  293. data/src/core/ext/upbdefs-gen/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +5 -1
  294. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +134 -68
  295. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +5 -1
  296. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +189 -96
  297. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +5 -1
  298. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.c +116 -61
  299. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upbdefs.h +5 -1
  300. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +112 -58
  301. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +5 -1
  302. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.c +160 -82
  303. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -1
  304. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +75 -39
  305. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +5 -1
  306. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +1161 -570
  307. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -1
  308. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +52 -28
  309. data/src/core/ext/upbdefs-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +5 -1
  310. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.c +55 -29
  311. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upbdefs.h +5 -1
  312. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -26
  313. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +5 -1
  314. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +390 -194
  315. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +5 -1
  316. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +126 -65
  317. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +5 -1
  318. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +498 -246
  319. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +5 -1
  320. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +74 -38
  321. data/src/core/ext/upbdefs-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +5 -1
  322. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +221 -110
  323. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +5 -1
  324. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.c +68 -36
  325. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/ads.upbdefs.h +5 -1
  326. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.c +378 -187
  327. data/src/core/ext/upbdefs-gen/envoy/service/discovery/v3/discovery.upbdefs.h +5 -1
  328. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.c +100 -52
  329. data/src/core/ext/upbdefs-gen/envoy/service/load_stats/v3/lrs.upbdefs.h +5 -1
  330. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.c +257 -129
  331. data/src/core/ext/upbdefs-gen/envoy/service/status/v3/csds.upbdefs.h +5 -1
  332. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.c +44 -24
  333. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/cookie.upbdefs.h +5 -1
  334. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.c +68 -35
  335. data/src/core/ext/upbdefs-gen/envoy/type/http/v3/path_transformation.upbdefs.h +5 -1
  336. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.c +38 -20
  337. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/address.upbdefs.h +5 -1
  338. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.c +59 -32
  339. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/filter_state.upbdefs.h +5 -1
  340. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.c +65 -34
  341. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  342. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.c +72 -38
  343. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/metadata.upbdefs.h +5 -1
  344. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.c +57 -31
  345. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/node.upbdefs.h +5 -1
  346. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.c +52 -29
  347. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/number.upbdefs.h +5 -1
  348. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.c +51 -28
  349. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/path.upbdefs.h +5 -1
  350. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.c +89 -47
  351. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/regex.upbdefs.h +5 -1
  352. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.c +37 -20
  353. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/status_code_input.upbdefs.h +5 -1
  354. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.c +89 -47
  355. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/string.upbdefs.h +5 -1
  356. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.c +67 -35
  357. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/struct.upbdefs.h +5 -1
  358. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.c +112 -58
  359. data/src/core/ext/upbdefs-gen/envoy/type/matcher/v3/value.upbdefs.h +5 -1
  360. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.c +110 -56
  361. data/src/core/ext/upbdefs-gen/envoy/type/metadata/v3/metadata.upbdefs.h +5 -1
  362. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.c +123 -62
  363. data/src/core/ext/upbdefs-gen/envoy/type/tracing/v3/custom_tag.upbdefs.h +5 -1
  364. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.c +59 -31
  365. data/src/core/ext/upbdefs-gen/envoy/type/v3/hash_policy.upbdefs.h +5 -1
  366. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.c +30 -16
  367. data/src/core/ext/upbdefs-gen/envoy/type/v3/http.upbdefs.h +5 -1
  368. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.c +143 -72
  369. data/src/core/ext/upbdefs-gen/envoy/type/v3/http_status.upbdefs.h +5 -1
  370. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.c +61 -32
  371. data/src/core/ext/upbdefs-gen/envoy/type/v3/percent.upbdefs.h +5 -1
  372. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.c +51 -27
  373. data/src/core/ext/upbdefs-gen/envoy/type/v3/range.upbdefs.h +5 -1
  374. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.c +85 -45
  375. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_strategy.upbdefs.h +5 -1
  376. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.c +35 -19
  377. data/src/core/ext/upbdefs-gen/envoy/type/v3/ratelimit_unit.upbdefs.h +5 -1
  378. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.c +44 -23
  379. data/src/core/ext/upbdefs-gen/envoy/type/v3/semantic_version.upbdefs.h +5 -1
  380. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.c +61 -33
  381. data/src/core/ext/upbdefs-gen/envoy/type/v3/token_bucket.upbdefs.h +5 -1
  382. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.c +35 -19
  383. data/src/core/ext/upbdefs-gen/google/api/annotations.upbdefs.h +5 -1
  384. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.c +272 -133
  385. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/checked.upbdefs.h +5 -1
  386. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.c +315 -154
  387. data/src/core/ext/upbdefs-gen/google/api/expr/v1alpha1/syntax.upbdefs.h +5 -1
  388. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.c +64 -33
  389. data/src/core/ext/upbdefs-gen/google/api/http.upbdefs.h +5 -1
  390. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.c +35 -19
  391. data/src/core/ext/upbdefs-gen/google/api/httpbody.upbdefs.h +5 -1
  392. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.c +26 -15
  393. data/src/core/ext/upbdefs-gen/google/protobuf/any.upbdefs.h +5 -1
  394. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +1106 -508
  395. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.h +10 -1
  396. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.c +28 -16
  397. data/src/core/ext/upbdefs-gen/google/protobuf/duration.upbdefs.h +5 -1
  398. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.c +23 -13
  399. data/src/core/ext/upbdefs-gen/google/protobuf/empty.upbdefs.h +5 -1
  400. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.c +69 -35
  401. data/src/core/ext/upbdefs-gen/google/protobuf/struct.upbdefs.h +5 -1
  402. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c +29 -16
  403. data/src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.h +5 -1
  404. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c +51 -26
  405. data/src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.h +5 -1
  406. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c +32 -17
  407. data/src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.h +5 -1
  408. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +161 -79
  409. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +5 -1
  410. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c +84 -42
  411. data/src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.h +5 -1
  412. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c +48 -26
  413. data/src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.h +5 -1
  414. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.c +26 -14
  415. data/src/core/ext/upbdefs-gen/udpa/annotations/sensitive.upbdefs.h +5 -1
  416. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.c +50 -26
  417. data/src/core/ext/upbdefs-gen/udpa/annotations/status.upbdefs.h +5 -1
  418. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.c +36 -19
  419. data/src/core/ext/upbdefs-gen/udpa/annotations/versioning.upbdefs.h +5 -1
  420. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.c +538 -261
  421. data/src/core/ext/upbdefs-gen/validate/validate.upbdefs.h +5 -1
  422. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.c +86 -43
  423. data/src/core/ext/upbdefs-gen/xds/annotations/v3/migrate.upbdefs.h +5 -1
  424. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.c +49 -26
  425. data/src/core/ext/upbdefs-gen/xds/annotations/v3/security.upbdefs.h +5 -1
  426. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.c +27 -15
  427. data/src/core/ext/upbdefs-gen/xds/annotations/v3/sensitive.upbdefs.h +5 -1
  428. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.c +87 -44
  429. data/src/core/ext/upbdefs-gen/xds/annotations/v3/status.upbdefs.h +5 -1
  430. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.c +37 -20
  431. data/src/core/ext/upbdefs-gen/xds/annotations/v3/versioning.upbdefs.h +5 -1
  432. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.c +30 -17
  433. data/src/core/ext/upbdefs-gen/xds/core/v3/authority.upbdefs.h +5 -1
  434. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.c +41 -23
  435. data/src/core/ext/upbdefs-gen/xds/core/v3/cidr.upbdefs.h +5 -1
  436. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.c +62 -33
  437. data/src/core/ext/upbdefs-gen/xds/core/v3/collection_entry.upbdefs.h +5 -1
  438. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.c +36 -19
  439. data/src/core/ext/upbdefs-gen/xds/core/v3/context_params.upbdefs.h +5 -1
  440. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.c +36 -20
  441. data/src/core/ext/upbdefs-gen/xds/core/v3/extension.upbdefs.h +5 -1
  442. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.c +42 -23
  443. data/src/core/ext/upbdefs-gen/xds/core/v3/resource.upbdefs.h +5 -1
  444. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.c +76 -39
  445. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_locator.upbdefs.h +5 -1
  446. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.c +45 -24
  447. data/src/core/ext/upbdefs-gen/xds/core/v3/resource_name.upbdefs.h +5 -1
  448. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.c +41 -23
  449. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/cel.upbdefs.h +5 -1
  450. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.c +53 -29
  451. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/domain.upbdefs.h +5 -1
  452. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.c +29 -16
  453. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/http_inputs.upbdefs.h +5 -1
  454. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.c +58 -32
  455. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/ip.upbdefs.h +5 -1
  456. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.c +207 -103
  457. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/matcher.upbdefs.h +5 -1
  458. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.c +95 -49
  459. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/range.upbdefs.h +5 -1
  460. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.c +38 -20
  461. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/regex.upbdefs.h +5 -1
  462. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.c +60 -31
  463. data/src/core/ext/upbdefs-gen/xds/type/matcher/v3/string.upbdefs.h +5 -1
  464. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.c +67 -36
  465. data/src/core/ext/upbdefs-gen/xds/type/v3/cel.upbdefs.h +5 -1
  466. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.c +31 -17
  467. data/src/core/ext/upbdefs-gen/xds/type/v3/range.upbdefs.h +5 -1
  468. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.c +31 -17
  469. data/src/core/ext/upbdefs-gen/xds/type/v3/typed_struct.upbdefs.h +5 -1
  470. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +7 -22
  471. data/src/core/handshaker/security/legacy_secure_endpoint.cc +596 -0
  472. data/src/core/handshaker/security/secure_endpoint.cc +769 -312
  473. data/src/core/handshaker/security/secure_endpoint.h +17 -0
  474. data/src/core/handshaker/security/security_handshaker.cc +3 -3
  475. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -5
  476. data/src/core/lib/channel/channel_args.h +4 -0
  477. data/src/core/lib/channel/channel_stack.cc +29 -0
  478. data/src/core/lib/channel/channel_stack.h +9 -0
  479. data/src/core/lib/channel/promise_based_filter.h +707 -299
  480. data/src/core/lib/debug/trace_flags.cc +2 -2
  481. data/src/core/lib/debug/trace_flags.h +1 -1
  482. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +6 -2
  483. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +4 -4
  484. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
  485. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
  486. data/src/core/lib/event_engine/extensions/blocking_dns.h +46 -0
  487. data/src/core/lib/event_engine/extensions/channelz.h +62 -0
  488. data/src/core/lib/event_engine/extensions/tcp_trace.h +2 -2
  489. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +4 -7
  490. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +3 -0
  491. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +6 -7
  492. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +28 -22
  493. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +22 -0
  494. data/src/core/lib/event_engine/posix_engine/posix_engine.h +15 -15
  495. data/src/core/lib/event_engine/query_extensions.h +10 -21
  496. data/src/core/lib/event_engine/tcp_socket_utils.cc +10 -9
  497. data/src/core/lib/event_engine/utils.cc +34 -0
  498. data/src/core/lib/event_engine/utils.h +3 -0
  499. data/src/core/lib/event_engine/windows/windows_endpoint.cc +2 -2
  500. data/src/core/lib/event_engine/windows/windows_endpoint.h +9 -2
  501. data/src/core/lib/experiments/experiments.cc +198 -51
  502. data/src/core/lib/experiments/experiments.h +78 -35
  503. data/src/core/lib/iomgr/combiner.cc +3 -2
  504. data/src/core/lib/iomgr/ev_poll_posix.cc +4 -0
  505. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +11 -8
  506. data/src/core/lib/iomgr/fork_posix.cc +0 -7
  507. data/src/core/lib/iomgr/iomgr.cc +0 -3
  508. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +3 -0
  509. data/src/core/lib/iomgr/resolve_address_posix.cc +37 -47
  510. data/src/core/lib/iomgr/resolve_address_posix.h +15 -0
  511. data/src/core/lib/iomgr/resolve_address_windows.cc +22 -45
  512. data/src/core/lib/iomgr/resolve_address_windows.h +15 -2
  513. data/src/core/lib/iomgr/tcp_client_posix.cc +14 -6
  514. data/src/core/lib/iomgr/tcp_posix.cc +14 -12
  515. data/src/core/lib/iomgr/tcp_server_windows.cc +14 -2
  516. data/src/core/lib/promise/detail/promise_like.h +24 -0
  517. data/src/core/lib/promise/detail/seq_state.h +741 -0
  518. data/src/core/lib/promise/map.h +22 -5
  519. data/src/core/lib/promise/promise.h +2 -0
  520. data/src/core/lib/promise/seq.h +2 -0
  521. data/src/core/lib/promise/sleep.cc +6 -3
  522. data/src/core/lib/promise/try_seq.h +2 -0
  523. data/src/core/lib/resource_quota/memory_quota.cc +9 -0
  524. data/src/core/lib/resource_quota/memory_quota.h +1 -3
  525. data/src/core/lib/slice/slice_buffer.h +6 -0
  526. data/src/core/lib/surface/call.cc +4 -0
  527. data/src/core/lib/surface/channel_create.cc +61 -1
  528. data/src/core/lib/surface/init.cc +2 -2
  529. data/src/core/lib/surface/version.cc +2 -2
  530. data/src/core/lib/transport/status_conversion.cc +7 -34
  531. data/src/core/lib/transport/transport.cc +2 -2
  532. data/src/core/lib/transport/transport.h +3 -0
  533. data/src/core/load_balancing/backend_metric_parser.cc +12 -18
  534. data/src/core/load_balancing/grpclb/grpclb.cc +2 -2
  535. data/src/core/load_balancing/health_check_client.cc +2 -4
  536. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  537. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +4 -3
  538. data/src/core/load_balancing/pick_first/pick_first.cc +3 -3
  539. data/src/core/load_balancing/rls/rls.cc +6 -5
  540. data/src/core/load_balancing/round_robin/round_robin.cc +2 -3
  541. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +4 -4
  542. data/src/core/load_balancing/weighted_target/weighted_target.cc +3 -9
  543. data/src/core/load_balancing/xds/xds_override_host.cc +55 -34
  544. data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
  545. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +2 -1
  546. data/src/core/resolver/xds/xds_resolver.cc +2 -1
  547. data/src/core/server/add_port.cc +87 -0
  548. data/src/core/server/server.cc +48 -53
  549. data/src/core/server/server.h +3 -5
  550. data/src/core/telemetry/call_tracer.cc +2 -2
  551. data/src/core/telemetry/call_tracer.h +1 -1
  552. data/src/core/{ext/transport/chttp2/transport → telemetry}/context_list_entry.h +3 -3
  553. data/src/core/telemetry/default_tcp_tracer.cc +26 -0
  554. data/src/core/telemetry/default_tcp_tracer.h +44 -0
  555. data/src/core/telemetry/stats.h +0 -5
  556. data/src/core/telemetry/stats_data.cc +376 -334
  557. data/src/core/telemetry/stats_data.h +260 -166
  558. data/src/core/telemetry/tcp_tracer.cc +38 -0
  559. data/src/core/telemetry/tcp_tracer.h +14 -16
  560. data/src/core/transport/auth_context.cc +0 -1
  561. data/src/core/transport/auth_context.h +0 -1
  562. data/src/core/transport/endpoint_transport.h +90 -0
  563. data/src/core/transport/endpoint_transport_client_channel_factory.cc +61 -0
  564. data/src/core/transport/endpoint_transport_client_channel_factory.h +57 -0
  565. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +33 -1
  566. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +3 -1
  567. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +76 -22
  568. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +8 -2
  569. data/src/core/tsi/ssl_transport_security.cc +189 -71
  570. data/src/core/tsi/ssl_transport_security.h +6 -1
  571. data/src/core/tsi/transport_security.h +3 -0
  572. data/src/core/tsi/transport_security_grpc.h +7 -3
  573. data/src/core/tsi/transport_security_interface.h +30 -25
  574. data/src/core/util/backoff.cc +7 -14
  575. data/src/core/util/backoff.h +0 -1
  576. data/src/core/util/dual_ref_counted.h +48 -0
  577. data/src/core/util/function_signature.h +66 -0
  578. data/src/core/util/gcp_metadata_query.cc +3 -2
  579. data/src/core/util/http_client/httpcli_security_connector.cc +2 -1
  580. data/src/core/util/json/json_object_loader.h +3 -3
  581. data/src/core/util/latent_see.cc +28 -2
  582. data/src/core/util/latent_see.h +11 -23
  583. data/src/core/util/linux/env.cc +3 -1
  584. data/src/core/util/ref_counted_ptr.h +26 -0
  585. data/src/core/util/shared_bit_gen.cc +21 -0
  586. data/src/core/util/shared_bit_gen.h +44 -0
  587. data/src/core/util/single_set_ptr.h +35 -4
  588. data/src/core/util/uri.cc +75 -17
  589. data/src/core/util/uri.h +13 -8
  590. data/src/core/xds/grpc/xds_common_types_parser.cc +1 -9
  591. data/src/core/xds/grpc/xds_http_filter_registry.cc +1 -3
  592. data/src/core/xds/grpc/xds_http_rbac_filter.cc +10 -17
  593. data/src/core/xds/grpc/xds_metadata_parser.cc +40 -64
  594. data/src/core/xds/grpc/xds_metadata_parser.h +0 -2
  595. data/src/core/xds/grpc/xds_route_config_parser.cc +55 -77
  596. data/src/core/xds/xds_client/xds_client.cc +1 -1
  597. data/src/ruby/ext/grpc/extconf.rb +1 -1
  598. data/src/ruby/lib/grpc/version.rb +1 -1
  599. data/src/ruby/spec/generic/client_stub_spec.rb +2 -6
  600. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  601. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +2 -2
  602. data/third_party/abseil-cpp/absl/algorithm/container.h +79 -48
  603. data/third_party/abseil-cpp/absl/base/attributes.h +66 -16
  604. data/third_party/abseil-cpp/absl/base/call_once.h +8 -5
  605. data/third_party/abseil-cpp/absl/base/config.h +4 -4
  606. data/third_party/abseil-cpp/absl/base/internal/nullability_impl.h +17 -56
  607. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +1 -1
  608. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -0
  609. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +5 -1
  610. data/third_party/abseil-cpp/absl/base/internal/tracing.cc +39 -0
  611. data/third_party/abseil-cpp/absl/base/internal/tracing.h +81 -0
  612. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +0 -10
  613. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -0
  614. data/third_party/abseil-cpp/absl/base/macros.h +35 -4
  615. data/third_party/abseil-cpp/absl/base/nullability.h +72 -16
  616. data/third_party/abseil-cpp/absl/base/optimization.h +8 -12
  617. data/third_party/abseil-cpp/absl/base/options.h +5 -2
  618. data/third_party/abseil-cpp/absl/base/policy_checks.h +2 -0
  619. data/third_party/abseil-cpp/absl/container/btree_map.h +889 -0
  620. data/third_party/abseil-cpp/absl/container/btree_set.h +824 -0
  621. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -1
  622. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +17 -3
  623. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +17 -3
  624. data/third_party/abseil-cpp/absl/container/inlined_vector.h +2 -1
  625. data/third_party/abseil-cpp/absl/container/internal/btree.h +3046 -0
  626. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +763 -0
  627. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +9 -0
  628. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +1 -0
  629. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +4 -2
  630. data/third_party/abseil-cpp/absl/container/internal/layout.h +1 -1
  631. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +142 -114
  632. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +397 -231
  633. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +56 -0
  634. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +21 -7
  635. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +4 -2
  636. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +1 -1
  637. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +17 -1
  638. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +7 -0
  639. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +9 -6
  640. data/third_party/abseil-cpp/absl/debugging/leak_check.cc +73 -0
  641. data/third_party/abseil-cpp/absl/debugging/leak_check.h +150 -0
  642. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +3 -2
  643. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +48 -9
  644. data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +1 -0
  645. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +7 -0
  646. data/third_party/abseil-cpp/absl/flags/flag.h +14 -12
  647. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +12 -4
  648. data/third_party/abseil-cpp/absl/flags/internal/flag.h +16 -5
  649. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +4 -0
  650. data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +3 -0
  651. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +13 -12
  652. data/third_party/abseil-cpp/absl/flags/usage_config.cc +9 -4
  653. data/third_party/abseil-cpp/absl/hash/hash.h +26 -2
  654. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +17 -17
  655. data/third_party/abseil-cpp/absl/hash/internal/hash.h +196 -91
  656. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +2 -4
  657. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +2 -0
  658. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +27 -22
  659. data/third_party/abseil-cpp/absl/log/internal/check_op.h +102 -80
  660. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +90 -38
  661. data/third_party/abseil-cpp/absl/log/internal/log_message.h +80 -48
  662. data/third_party/abseil-cpp/absl/log/internal/proto.cc +0 -3
  663. data/third_party/abseil-cpp/absl/log/internal/proto.h +25 -15
  664. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +115 -0
  665. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +107 -0
  666. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +8 -1
  667. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +5 -2
  668. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +2 -0
  669. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -6
  670. data/third_party/abseil-cpp/absl/numeric/int128.h +15 -3
  671. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +6 -4
  672. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +6 -3
  673. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +3 -1
  674. data/third_party/abseil-cpp/absl/random/beta_distribution.h +3 -1
  675. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +2 -1
  676. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +10 -0
  677. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +4 -2
  678. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -0
  679. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +2 -1
  680. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -1
  681. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +5 -2
  682. data/third_party/abseil-cpp/absl/random/internal/platform.h +12 -12
  683. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +56 -5
  684. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -1
  685. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +2 -2
  686. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +0 -1
  687. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +1 -4
  688. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +4 -3
  689. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +2 -3
  690. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -2
  691. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -1
  692. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +2 -0
  693. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +5 -4
  694. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +8 -4
  695. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +1 -1
  696. data/third_party/abseil-cpp/absl/status/status.h +1 -1
  697. data/third_party/abseil-cpp/absl/strings/ascii.cc +41 -26
  698. data/third_party/abseil-cpp/absl/strings/ascii.h +48 -8
  699. data/third_party/abseil-cpp/absl/strings/charconv.cc +4 -7
  700. data/third_party/abseil-cpp/absl/strings/charset.h +3 -4
  701. data/third_party/abseil-cpp/absl/strings/cord.h +5 -19
  702. data/third_party/abseil-cpp/absl/strings/escaping.cc +56 -48
  703. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +1 -1
  704. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +48 -15
  705. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +3 -2
  706. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -0
  707. data/third_party/abseil-cpp/absl/strings/match.h +21 -11
  708. data/third_party/abseil-cpp/absl/strings/numbers.cc +2 -1
  709. data/third_party/abseil-cpp/absl/strings/str_cat.h +11 -0
  710. data/third_party/abseil-cpp/absl/strings/str_split.h +18 -1
  711. data/third_party/abseil-cpp/absl/strings/string_view.h +20 -19
  712. data/third_party/abseil-cpp/absl/strings/strip.h +11 -8
  713. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +16 -10
  714. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +6 -0
  715. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +5 -1
  716. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +38 -12
  717. data/third_party/abseil-cpp/absl/synchronization/notification.cc +10 -2
  718. data/third_party/abseil-cpp/absl/synchronization/notification.h +11 -1
  719. data/third_party/abseil-cpp/absl/time/duration.cc +6 -51
  720. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  721. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  722. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +3 -3
  723. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +2 -2
  724. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +2 -2
  725. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +3 -3
  726. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +2 -2
  727. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +1 -1
  728. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +1 -1
  729. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +3 -2
  730. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +1 -1
  731. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -4
  732. data/third_party/abseil-cpp/absl/time/time.h +84 -23
  733. data/third_party/abseil-cpp/absl/types/internal/span.h +3 -2
  734. data/third_party/abseil-cpp/absl/types/optional.h +4 -2
  735. data/third_party/abseil-cpp/absl/types/span.h +85 -43
  736. data/third_party/boringssl-with-bazel/src/crypto/aes/aes.cc +41 -0
  737. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.cc +16 -0
  738. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.cc +15 -0
  739. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +19 -3
  740. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.cc +79 -48
  741. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.cc +11 -19
  742. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.cc +3 -7
  743. data/third_party/boringssl-with-bazel/src/crypto/bcm_support.h +0 -35
  744. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.cc +0 -2
  745. data/third_party/boringssl-with-bazel/src/crypto/bio/internal.h +3 -5
  746. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.cc +0 -3
  747. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.cc +0 -2
  748. data/third_party/boringssl-with-bazel/src/crypto/bn/convert.cc +31 -47
  749. data/third_party/boringssl-with-bazel/src/crypto/bn/div.cc +100 -0
  750. data/third_party/boringssl-with-bazel/src/crypto/bn/exponentiation.cc +166 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/bn/sqrt.cc +93 -0
  752. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.cc +14 -8
  753. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.cc +1 -1
  754. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +3 -3
  755. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +4 -4
  756. data/third_party/boringssl-with-bazel/src/crypto/cipher/derive_key.cc +13 -15
  757. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aeseax.cc +289 -0
  758. data/third_party/boringssl-with-bazel/src/crypto/cipher/e_aesgcmsiv.cc +179 -102
  759. data/third_party/boringssl-with-bazel/src/crypto/cipher/internal.h +3 -3
  760. data/third_party/boringssl-with-bazel/src/crypto/cms/cms.cc +172 -0
  761. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.cc +28 -5
  762. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.h +11 -9
  763. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.cc +0 -6
  764. data/third_party/boringssl-with-bazel/src/crypto/crypto.cc +1 -1
  765. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +3 -3
  766. data/third_party/boringssl-with-bazel/src/crypto/des/internal.h +3 -3
  767. data/third_party/boringssl-with-bazel/src/crypto/dh/dh_asn1.cc +13 -14
  768. data/third_party/boringssl-with-bazel/src/crypto/dh/params.cc +27 -61
  769. data/third_party/boringssl-with-bazel/src/crypto/digest/digest_extra.cc +16 -8
  770. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.cc +112 -122
  771. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.cc +23 -35
  772. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
  773. data/third_party/boringssl-with-bazel/src/crypto/ec/ec_asn1.cc +47 -63
  774. data/third_party/boringssl-with-bazel/src/crypto/ec/hash_to_curve.cc +60 -68
  775. data/third_party/boringssl-with-bazel/src/crypto/ec/internal.h +3 -3
  776. data/third_party/boringssl-with-bazel/src/crypto/ecdsa/ecdsa_asn1.cc +11 -17
  777. data/third_party/boringssl-with-bazel/src/crypto/err/err.cc +0 -2
  778. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.cc +10 -11
  779. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.cc +10 -11
  780. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +3 -3
  781. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.cc +6 -6
  782. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.cc +6 -6
  783. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.cc +6 -6
  784. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.cc +6 -6
  785. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.cc +6 -6
  786. data/third_party/boringssl-with-bazel/src/crypto/evp/sign.cc +23 -42
  787. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.cc.inc +29 -18
  788. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/gcm.cc.inc +10 -10
  789. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +16 -45
  790. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -4
  791. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.cc.inc +15 -6
  792. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.cc +3 -3
  793. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm_interface.h +101 -5
  794. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.cc.inc +96 -187
  795. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.cc.inc +24 -512
  796. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.cc.inc +58 -80
  797. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.cc.inc +29 -45
  798. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +27 -25
  799. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/jacobi.cc.inc +7 -16
  800. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.cc.inc +27 -48
  801. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.cc.inc +34 -34
  802. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.cc.inc +102 -154
  803. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +3 -3
  804. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.cc.inc +3 -8
  805. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.cc.inc +1 -78
  806. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.cc.inc +10 -17
  807. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +3 -3
  808. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +15 -8
  809. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.cc.inc +40 -53
  810. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.cc.inc +57 -76
  811. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.cc.inc +4 -10
  812. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/internal.h +3 -3
  813. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +3 -3
  814. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.cc.inc +37 -52
  815. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.cc.inc +13 -20
  816. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +3 -3
  817. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.cc.inc +28 -39
  818. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.h +3 -3
  819. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.cc.inc +6 -11
  820. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/keccak/internal.h +3 -3
  821. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/fips_known_values.inc +1345 -0
  822. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mldsa/mldsa.cc.inc +335 -28
  823. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/fips_known_values.inc +411 -0
  824. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/mlkem/mlkem.cc.inc +265 -33
  825. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +3 -3
  826. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.cc.inc +1 -1
  827. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +3 -3
  828. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.cc.inc +19 -26
  829. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.cc.inc +7 -7
  830. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.cc.inc +121 -138
  831. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.cc.inc +96 -83
  832. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +3 -3
  833. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +8 -20
  834. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/fips_known_values.inc +674 -0
  835. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +235 -60
  836. data/third_party/boringssl-with-bazel/src/crypto/fuzzer_mode.cc +30 -0
  837. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +3 -3
  838. data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -30
  839. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +3 -3
  840. data/third_party/boringssl-with-bazel/src/crypto/md5/internal.h +3 -3
  841. data/third_party/boringssl-with-bazel/src/crypto/mem.cc +0 -2
  842. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.cc +2 -8
  843. data/third_party/boringssl-with-bazel/src/crypto/pem/internal.h +3 -3
  844. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.cc +8 -13
  845. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +22 -8
  846. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.cc +19 -17
  847. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.cc +134 -136
  848. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +14 -8
  849. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.cc +25 -21
  850. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.cc +36 -52
  851. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.cc +97 -79
  852. data/third_party/boringssl-with-bazel/src/crypto/poly1305/internal.h +3 -3
  853. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +3 -3
  854. data/third_party/boringssl-with-bazel/src/crypto/rand/deterministic.cc +1 -1
  855. data/third_party/boringssl-with-bazel/src/crypto/rand/fork_detect.cc +2 -2
  856. data/third_party/boringssl-with-bazel/src/crypto/rand/getentropy.cc +1 -1
  857. data/third_party/boringssl-with-bazel/src/crypto/rand/{sysrand_internal.h → internal.h} +22 -4
  858. data/third_party/boringssl-with-bazel/src/crypto/rand/ios.cc +1 -1
  859. data/third_party/boringssl-with-bazel/src/crypto/rand/trusty.cc +1 -1
  860. data/third_party/boringssl-with-bazel/src/crypto/rand/urandom.cc +1 -1
  861. data/third_party/boringssl-with-bazel/src/crypto/rand/windows.cc +1 -5
  862. data/third_party/boringssl-with-bazel/src/crypto/rsa/internal.h +3 -3
  863. data/third_party/boringssl-with-bazel/src/crypto/rsa/rsa_crypt.cc +14 -22
  864. data/third_party/boringssl-with-bazel/src/crypto/spake2plus/internal.h +3 -3
  865. data/third_party/boringssl-with-bazel/src/crypto/thread_win.cc +0 -2
  866. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +3 -3
  867. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.cc +3 -5
  868. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.cc +8 -12
  869. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +15 -3
  870. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_conf.cc +16 -24
  871. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_info.cc +18 -21
  872. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.cc +10 -3
  873. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.cc +9 -0
  874. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.cc +10 -1
  875. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.cc +64 -85
  876. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.cc +16 -32
  877. data/third_party/boringssl-with-bazel/src/gen/crypto/err_data.cc +576 -567
  878. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +16 -8
  879. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +1 -1
  880. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -54
  881. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +1 -1
  882. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +8 -4
  883. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +1 -1
  884. data/third_party/boringssl-with-bazel/src/include/openssl/bcm_public.h +1 -1
  885. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +1 -1
  886. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -1
  887. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +1 -1
  888. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1 -1
  889. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +1 -1
  890. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +7 -1
  891. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +1 -1
  892. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  893. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +1 -1
  894. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +1 -1
  895. data/third_party/boringssl-with-bazel/src/include/openssl/cms.h +146 -0
  896. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +1 -1
  897. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +23 -3
  898. data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +1 -1
  899. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +1 -1
  900. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +1 -1
  901. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +1 -1
  902. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +19 -7
  903. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +1 -1
  904. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +1 -1
  905. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +1 -1
  906. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +1 -1
  907. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +1 -1
  908. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -1
  909. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +1 -1
  910. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -1
  911. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -1
  912. data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
  913. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +1 -1
  914. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +1 -1
  915. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +1 -1
  916. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +4 -4
  917. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +1 -1
  918. data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +1 -1
  919. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +1 -1
  920. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +1 -1
  921. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +1 -1
  922. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +1 -1
  923. data/third_party/boringssl-with-bazel/src/include/openssl/mldsa.h +1 -1
  924. data/third_party/boringssl-with-bazel/src/include/openssl/mlkem.h +1 -1
  925. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +1 -1
  926. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +1 -1
  927. data/third_party/boringssl-with-bazel/src/include/openssl/obj_mac.h +1 -1
  928. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +10 -4
  929. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +1 -1
  930. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +19 -6
  931. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +1 -1
  932. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +1 -1
  933. data/third_party/boringssl-with-bazel/src/include/openssl/posix_time.h +1 -1
  934. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  935. data/third_party/boringssl-with-bazel/src/include/openssl/rc4.h +1 -1
  936. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +1 -1
  937. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +2 -2
  938. data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +1 -1
  939. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +1 -1
  940. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +1 -1
  941. data/third_party/boringssl-with-bazel/src/include/openssl/slhdsa.h +1 -1
  942. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +1 -1
  943. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +291 -40
  944. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +1 -1
  945. data/third_party/boringssl-with-bazel/src/include/openssl/target.h +0 -5
  946. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -1
  947. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +9 -1
  948. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -1
  949. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +1 -1
  950. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +7 -4
  951. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +2 -0
  952. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +32 -26
  953. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +49 -49
  954. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +253 -50
  955. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +12 -12
  956. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +7 -5
  957. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -1
  958. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +24 -32
  959. data/third_party/boringssl-with-bazel/src/ssl/internal.h +93 -4
  960. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +6 -12
  961. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +18 -4
  962. data/third_party/boringssl-with-bazel/src/ssl/ssl_credential.cc +83 -7
  963. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -1
  964. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +173 -19
  965. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +5 -18
  966. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +28 -15
  967. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +1 -1
  968. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +31 -7
  969. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +13 -1
  970. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +7 -11
  971. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +13 -11
  972. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +2 -5
  973. data/third_party/upb/upb/hash/common.c +310 -189
  974. data/third_party/upb/upb/hash/common.h +44 -43
  975. data/third_party/upb/upb/hash/int_table.h +29 -5
  976. data/third_party/upb/upb/hash/str_table.h +6 -0
  977. data/third_party/upb/upb/mem/arena.c +180 -57
  978. data/third_party/upb/upb/mem/arena.h +10 -0
  979. data/third_party/upb/upb/mem/internal/arena.h +62 -24
  980. data/third_party/upb/upb/message/accessors.c +1 -5
  981. data/third_party/upb/upb/message/array.c +7 -6
  982. data/third_party/upb/upb/message/array.h +4 -4
  983. data/third_party/upb/upb/message/internal/accessors.h +3 -3
  984. data/third_party/upb/upb/message/internal/extension.c +0 -12
  985. data/third_party/upb/upb/message/internal/extension.h +0 -4
  986. data/third_party/upb/upb/message/internal/iterator.h +3 -3
  987. data/third_party/upb/upb/message/internal/map.h +75 -20
  988. data/third_party/upb/upb/message/internal/map_sorter.h +10 -2
  989. data/third_party/upb/upb/message/internal/message.h +53 -5
  990. data/third_party/upb/upb/message/map.c +68 -20
  991. data/third_party/upb/upb/message/map.h +8 -1
  992. data/third_party/upb/upb/message/map_gencode_util.h +3 -45
  993. data/third_party/upb/upb/message/map_sorter.c +32 -8
  994. data/third_party/upb/upb/message/merge.h +3 -3
  995. data/third_party/upb/upb/message/message.c +120 -14
  996. data/third_party/upb/upb/message/message.h +17 -8
  997. data/third_party/upb/upb/mini_descriptor/build_enum.c +15 -5
  998. data/third_party/upb/upb/mini_descriptor/decode.c +18 -2
  999. data/third_party/upb/upb/mini_descriptor/link.c +4 -0
  1000. data/third_party/upb/upb/mini_table/extension.h +8 -1
  1001. data/third_party/upb/upb/mini_table/extension_registry.c +1 -1
  1002. data/third_party/upb/upb/mini_table/internal/enum.h +1 -1
  1003. data/third_party/upb/upb/mini_table/internal/extension.h +24 -1
  1004. data/third_party/upb/upb/mini_table/internal/field.h +4 -4
  1005. data/third_party/upb/upb/mini_table/internal/message.h +1 -1
  1006. data/third_party/upb/upb/port/def.inc +32 -16
  1007. data/third_party/upb/upb/port/undef.inc +1 -0
  1008. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  1009. data/third_party/upb/upb/reflection/descriptor_bootstrap.h +3 -3
  1010. data/third_party/upb/upb/reflection/enum_def.c +4 -4
  1011. data/third_party/upb/upb/reflection/enum_reserved_range.c +1 -1
  1012. data/third_party/upb/upb/reflection/enum_value_def.c +9 -8
  1013. data/third_party/upb/upb/reflection/extension_range.c +1 -2
  1014. data/third_party/upb/upb/reflection/field_def.c +3 -5
  1015. data/third_party/upb/upb/reflection/field_def.h +1 -1
  1016. data/third_party/upb/upb/reflection/file_def.c +4 -5
  1017. data/third_party/upb/upb/reflection/internal/def_builder.h +35 -10
  1018. data/third_party/upb/upb/reflection/internal/enum_value_def.h +1 -1
  1019. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  1020. data/third_party/upb/upb/reflection/message_def.c +4 -7
  1021. data/third_party/upb/upb/reflection/message_reserved_range.c +1 -1
  1022. data/third_party/upb/upb/reflection/method_def.c +1 -1
  1023. data/third_party/upb/upb/reflection/oneof_def.c +3 -3
  1024. data/third_party/upb/upb/reflection/service_def.c +2 -5
  1025. data/third_party/upb/upb/text/encode.c +16 -0
  1026. data/third_party/upb/upb/text/internal/encode.h +2 -1
  1027. data/third_party/upb/upb/wire/decode.c +104 -72
  1028. data/third_party/upb/upb/wire/encode.c +37 -13
  1029. data/third_party/upb/upb/wire/internal/decode_fast.c +2 -2
  1030. data/third_party/upb/upb/wire/internal/decode_fast.h +4 -0
  1031. metadata +43 -7
  1032. data/src/core/lib/iomgr/executor.cc +0 -441
  1033. data/src/core/lib/iomgr/executor.h +0 -119
  1034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/polyval.cc.inc +0 -89
@@ -42,6 +42,8 @@
42
42
  #include "absl/strings/string_view.h"
43
43
  #include "src/core/call/call_filters.h"
44
44
  #include "src/core/call/call_finalization.h"
45
+ #include "src/core/call/message.h"
46
+ #include "src/core/call/metadata.h"
45
47
  #include "src/core/call/metadata_batch.h"
46
48
  #include "src/core/filter/blackboard.h"
47
49
  #include "src/core/filter/filter_args.h"
@@ -59,6 +61,7 @@
59
61
  #include "src/core/lib/promise/arena_promise.h"
60
62
  #include "src/core/lib/promise/cancel_callback.h"
61
63
  #include "src/core/lib/promise/context.h"
64
+ #include "src/core/lib/promise/detail/promise_like.h"
62
65
  #include "src/core/lib/promise/pipe.h"
63
66
  #include "src/core/lib/promise/poll.h"
64
67
  #include "src/core/lib/promise/promise.h"
@@ -108,55 +111,93 @@ namespace promise_filter_detail {
108
111
  // the promise. If so, we need to allocate a latch for the generated promise for
109
112
  // the original promise stack polyfill code that's generated.
110
113
 
111
- inline constexpr bool HasAsyncErrorInterceptor() { return false; }
114
+ template <typename T>
115
+ using EnableIfPromise = std::enable_if_t<std::is_invocable_v<T>, void>;
112
116
 
113
- inline constexpr bool HasAsyncErrorInterceptor(const NoInterceptor*) {
114
- return false;
115
- }
117
+ template <typename R, typename Ignored = void>
118
+ struct HasAsyncErrorInterceptor;
119
+
120
+ template <>
121
+ struct HasAsyncErrorInterceptor<void> {
122
+ static constexpr bool value = false;
123
+ };
124
+
125
+ template <>
126
+ struct HasAsyncErrorInterceptor<const NoInterceptor*> {
127
+ static constexpr bool value = false;
128
+ };
116
129
 
117
130
  template <typename T, typename A0, typename... As>
118
- inline constexpr bool HasAsyncErrorInterceptor(A0 (T::*)(A0, As...)) {
119
- return false;
120
- }
131
+ struct HasAsyncErrorInterceptor<A0 (T::*)(A0, As...)> {
132
+ static constexpr bool value = false;
133
+ };
121
134
 
122
135
  template <typename T, typename... A>
123
- inline constexpr bool HasAsyncErrorInterceptor(absl::Status (T::*)(A...)) {
124
- return true;
125
- }
136
+ struct HasAsyncErrorInterceptor<absl::Status (T::*)(A...)> {
137
+ static constexpr bool value = true;
138
+ };
126
139
 
127
140
  template <typename R, typename T, typename... A>
128
- inline constexpr bool HasAsyncErrorInterceptor(absl::StatusOr<R> (T::*)(A...)) {
129
- return true;
130
- }
141
+ struct HasAsyncErrorInterceptor<absl::StatusOr<R> (T::*)(A...)> {
142
+ static constexpr bool value = true;
143
+ };
131
144
 
132
145
  template <typename T, typename... A>
133
- inline constexpr bool HasAsyncErrorInterceptor(
134
- ServerMetadataHandle (T::*)(A...)) {
135
- return true;
136
- }
146
+ struct HasAsyncErrorInterceptor<ServerMetadataHandle (T::*)(A...)> {
147
+ static constexpr bool value = true;
148
+ };
137
149
 
138
150
  template <typename T, typename... A>
139
- inline constexpr bool HasAsyncErrorInterceptor(void (T::*)(A...)) {
140
- return false;
141
- }
151
+ struct HasAsyncErrorInterceptor<void (T::*)(A...)> {
152
+ static constexpr bool value = false;
153
+ };
154
+
155
+ template <typename T, typename Promise, typename... A>
156
+ struct HasAsyncErrorInterceptor<Promise (T::*)(A...),
157
+ EnableIfPromise<Promise>> {
158
+ // TODO(vigneshbabu): - For fused filters, this should be the OR of
159
+ // HasAsyncErrorInterceptor of all constituent filters.
160
+ static constexpr bool value = true;
161
+ };
142
162
 
143
163
  // For the list case we do two interceptors to avoid amiguities with the single
144
164
  // argument forms above.
145
- template <typename I1, typename I2, typename... Interceptors>
146
- inline constexpr bool HasAsyncErrorInterceptor(I1 i1, I2 i2,
147
- Interceptors... interceptors) {
148
- return HasAsyncErrorInterceptor(i1) || HasAsyncErrorInterceptor(i2) ||
149
- HasAsyncErrorInterceptor(interceptors...);
165
+ template <typename... Interceptors>
166
+ inline constexpr bool HasAnyAsyncErrorInterceptor(Interceptors...) {
167
+ return (HasAsyncErrorInterceptor<Interceptors>::value || ...);
150
168
  }
151
169
 
170
+ // value is true if Derived has a member called IsFused.
171
+ template <typename Derived>
172
+ struct IsFusedFilter {
173
+ template <typename V>
174
+ static std::true_type test(decltype(&V::IsFused)); // SFINAE context
175
+ template <typename V>
176
+ static std::false_type test(...);
177
+
178
+ using type = decltype(test<Derived>(nullptr));
179
+ static constexpr bool value = std::is_same_v<type, std::true_type>;
180
+ };
181
+
182
+ template <typename Derived, typename Ignored = void>
183
+ struct CallHasAsyncErrorInterceptor;
184
+
152
185
  // Composite for a given channel type to determine if any of its interceptors
153
186
  // fall into this category: later code should use this.
154
187
  template <typename Derived>
155
- inline constexpr bool CallHasAsyncErrorInterceptor() {
156
- return HasAsyncErrorInterceptor(&Derived::Call::OnClientToServerMessage,
188
+ struct CallHasAsyncErrorInterceptor<
189
+ Derived, std::enable_if_t<!IsFusedFilter<Derived>::value>> {
190
+ static constexpr bool value =
191
+ HasAnyAsyncErrorInterceptor(&Derived::Call::OnClientToServerMessage,
157
192
  &Derived::Call::OnServerInitialMetadata,
158
193
  &Derived::Call::OnServerToClientMessage);
159
- }
194
+ };
195
+
196
+ template <typename Derived>
197
+ struct CallHasAsyncErrorInterceptor<
198
+ Derived, std::enable_if_t<IsFusedFilter<Derived>::value>> {
199
+ static constexpr bool value = Derived::FusedFilterHasAsyncErrorInterceptor();
200
+ };
160
201
 
161
202
  // Given a boolean X export a type:
162
203
  // either T if X is true
@@ -196,7 +237,7 @@ struct RaceAsyncCompletion<false> {
196
237
  template <>
197
238
  struct RaceAsyncCompletion<true> {
198
239
  template <typename Promise>
199
- static Promise Run(Promise x, Latch<ServerMetadataHandle>* latch) {
240
+ static auto Run(Promise x, Latch<ServerMetadataHandle>* latch) {
200
241
  return Race(latch->Wait(), std::move(x));
201
242
  }
202
243
  };
@@ -228,7 +269,7 @@ struct FilterCallData {
228
269
  GPR_NO_UNIQUE_ADDRESS CallWrapper<Derived> call;
229
270
  GPR_NO_UNIQUE_ADDRESS
230
271
  typename TypeIfNeeded<Latch<ServerMetadataHandle>,
231
- CallHasAsyncErrorInterceptor<Derived>()>::Type
272
+ CallHasAsyncErrorInterceptor<Derived>::value>::Type
232
273
  error_latch;
233
274
  GPR_NO_UNIQUE_ADDRESS
234
275
  typename TypeIfNeeded<
@@ -296,6 +337,61 @@ auto MapResult(void (Derived::Call::*fn)(ServerMetadata&, Derived*), Promise x,
296
337
  });
297
338
  }
298
339
 
340
+ // For fused filters whose OnServerTrailingMetadata takes pointer to the
341
+ // channel.
342
+ template <typename P, typename Call, typename Derived,
343
+ typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
344
+ auto MapResult(void (Call::*fn)(ServerMetadata&, Derived*), P x,
345
+ FilterCallData<Derived>* call_data) {
346
+ DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
347
+ return OnCancel(
348
+ Map(std::move(x),
349
+ [call_data](ServerMetadataHandle md) {
350
+ call_data->call.OnServerTrailingMetadata(*md, call_data->channel);
351
+ return md;
352
+ }),
353
+ [call_data]() {
354
+ grpc_metadata_batch b;
355
+ b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
356
+ b.Set(GrpcCallWasCancelled(), true);
357
+ call_data->call.OnServerTrailingMetadata(b, call_data->channel);
358
+ });
359
+ }
360
+
361
+ // For fused filters whose OnServerTrailingMetadata does not take pointer to the
362
+ // channel.
363
+ template <typename P, typename Call, typename Derived,
364
+ typename = std::enable_if_t<IsFusedFilter<Derived>::value>>
365
+ auto MapResult(void (Call::*fn)(ServerMetadata&), P x,
366
+ FilterCallData<Derived>* call_data) {
367
+ DCHECK(fn == &Derived::Call::OnServerTrailingMetadata);
368
+ return OnCancel(Map(std::move(x),
369
+ [call_data](ServerMetadataHandle md) {
370
+ call_data->call.OnServerTrailingMetadata(*md);
371
+ return md;
372
+ }),
373
+ [call_data]() {
374
+ grpc_metadata_batch b;
375
+ b.Set(GrpcStatusMetadata(), GRPC_STATUS_CANCELLED);
376
+ b.Set(GrpcCallWasCancelled(), true);
377
+ call_data->call.OnServerTrailingMetadata(b);
378
+ });
379
+ }
380
+
381
+ template <typename T, typename A>
382
+ constexpr bool IsSameExcludingCVRef =
383
+ std::is_same<promise_detail::RemoveCVRef<A>, T>::value;
384
+
385
+ template <typename T, typename A>
386
+ using EnableIfSameExcludingCVRef =
387
+ std::enable_if_t<std::is_same<promise_detail::RemoveCVRef<A>, T>::value,
388
+ void>;
389
+
390
+ template <typename T, typename A>
391
+ using EnableIfNotSameExcludingCVRef =
392
+ std::enable_if_t<!std::is_same<promise_detail::RemoveCVRef<A>, T>::value,
393
+ void>;
394
+
299
395
  template <typename Interceptor, typename Derived, typename SfinaeVoid = void>
300
396
  struct RunCallImpl;
301
397
 
@@ -307,8 +403,9 @@ struct RunCallImpl<const NoInterceptor*, Derived> {
307
403
  }
308
404
  };
309
405
 
310
- template <typename Derived>
311
- struct RunCallImpl<void (Derived::Call::*)(ClientMetadata& md), Derived> {
406
+ template <typename Derived, typename A>
407
+ struct RunCallImpl<void (Derived::Call::*)(A md), Derived,
408
+ EnableIfSameExcludingCVRef<ClientMetadata, A>> {
312
409
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
313
410
  FilterCallData<Derived>* call_data) {
314
411
  call_data->call.OnClientInitialMetadata(*call_args.client_initial_metadata);
@@ -316,9 +413,9 @@ struct RunCallImpl<void (Derived::Call::*)(ClientMetadata& md), Derived> {
316
413
  }
317
414
  };
318
415
 
319
- template <typename Derived>
320
- struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(ClientMetadata& md),
321
- Derived> {
416
+ template <typename Derived, typename A>
417
+ struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(A md), Derived,
418
+ EnableIfSameExcludingCVRef<ClientMetadata, A>> {
322
419
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
323
420
  FilterCallData<Derived>* call_data)
324
421
  -> ArenaPromise<ServerMetadataHandle> {
@@ -329,10 +426,10 @@ struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(ClientMetadata& md),
329
426
  }
330
427
  };
331
428
 
332
- template <typename Derived>
333
- struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(ClientMetadata& md,
429
+ template <typename Derived, typename A>
430
+ struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(A md,
334
431
  Derived* channel),
335
- Derived> {
432
+ Derived, EnableIfSameExcludingCVRef<ClientMetadata, A>> {
336
433
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
337
434
  FilterCallData<Derived>* call_data)
338
435
  -> ArenaPromise<ServerMetadataHandle> {
@@ -343,9 +440,9 @@ struct RunCallImpl<ServerMetadataHandle (Derived::Call::*)(ClientMetadata& md,
343
440
  }
344
441
  };
345
442
 
346
- template <typename Derived>
347
- struct RunCallImpl<absl::Status (Derived::Call::*)(ClientMetadata& md),
348
- Derived> {
443
+ template <typename Derived, typename A>
444
+ struct RunCallImpl<absl::Status (Derived::Call::*)(A md), Derived,
445
+ EnableIfSameExcludingCVRef<ClientMetadata, A>> {
349
446
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
350
447
  FilterCallData<Derived>* call_data)
351
448
  -> ArenaPromise<ServerMetadataHandle> {
@@ -356,10 +453,9 @@ struct RunCallImpl<absl::Status (Derived::Call::*)(ClientMetadata& md),
356
453
  }
357
454
  };
358
455
 
359
- template <typename Derived>
360
- struct RunCallImpl<absl::Status (Derived::Call::*)(ClientMetadata& md,
361
- Derived* channel),
362
- Derived> {
456
+ template <typename Derived, typename A>
457
+ struct RunCallImpl<absl::Status (Derived::Call::*)(A md, Derived* channel),
458
+ Derived, EnableIfSameExcludingCVRef<ClientMetadata, A>> {
363
459
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
364
460
  FilterCallData<Derived>* call_data)
365
461
  -> ArenaPromise<ServerMetadataHandle> {
@@ -370,9 +466,9 @@ struct RunCallImpl<absl::Status (Derived::Call::*)(ClientMetadata& md,
370
466
  }
371
467
  };
372
468
 
373
- template <typename Derived>
374
- struct RunCallImpl<
375
- void (Derived::Call::*)(ClientMetadata& md, Derived* channel), Derived> {
469
+ template <typename Derived, typename A>
470
+ struct RunCallImpl<void (Derived::Call::*)(A md, Derived* channel), Derived,
471
+ EnableIfSameExcludingCVRef<ClientMetadata, A>> {
376
472
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
377
473
  FilterCallData<Derived>* call_data) {
378
474
  call_data->call.OnClientInitialMetadata(*call_args.client_initial_metadata,
@@ -381,11 +477,22 @@ struct RunCallImpl<
381
477
  }
382
478
  };
383
479
 
384
- template <typename Derived, typename Promise>
385
- struct RunCallImpl<
386
- Promise (Derived::Call::*)(ClientMetadata& md, Derived* channel), Derived,
387
- absl::void_t<decltype(StatusCast<ServerMetadataHandle>(
388
- std::declval<PromiseResult<Promise>>))>> {
480
+ template <typename T, typename AnyType = void>
481
+ struct StatusCastExistsToServerMetadataHandle {
482
+ static constexpr bool value = false;
483
+ };
484
+ template <typename T>
485
+ struct StatusCastExistsToServerMetadataHandle<
486
+ T,
487
+ absl::void_t<decltype(StatusCast<ServerMetadataHandle>(std::declval<T>))>> {
488
+ static constexpr bool value = true;
489
+ };
490
+
491
+ template <typename Derived, typename A, typename Promise>
492
+ struct RunCallImpl<Promise (Derived::Call::*)(A, Derived* channel), Derived,
493
+ std::enable_if_t<StatusCastExistsToServerMetadataHandle<
494
+ PromiseResult<Promise>>::value &&
495
+ IsSameExcludingCVRef<ClientMetadata, A>>> {
389
496
  static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
390
497
  FilterCallData<Derived>* call_data) {
391
498
  ClientMetadata& md_ref = *call_args.client_initial_metadata;
@@ -418,6 +525,26 @@ struct RunCallImpl<
418
525
  }
419
526
  };
420
527
 
528
+ template <typename Derived, typename Call, typename Promise>
529
+ struct RunCallImpl<
530
+ Promise (Call::*)(ClientMetadataHandle md, Derived* channel), Derived,
531
+ std::enable_if_t<std::is_same_v<PromiseResult<Promise>,
532
+ ServerMetadataOrHandle<ClientMetadata>>,
533
+ void>> {
534
+ static auto Run(CallArgs call_args, NextPromiseFactory next_promise_factory,
535
+ FilterCallData<Derived>* call_data) {
536
+ ClientMetadataHandle md = std::move(call_args.client_initial_metadata);
537
+ return TrySeq(call_data->call.OnClientInitialMetadata(std::move(md),
538
+ call_data->channel),
539
+ [call_args = std::move(call_args),
540
+ next_promise_factory = std::move(next_promise_factory)](
541
+ ClientMetadataHandle md) mutable {
542
+ call_args.client_initial_metadata = std::move(md);
543
+ return next_promise_factory(std::move(call_args));
544
+ });
545
+ }
546
+ };
547
+
421
548
  template <typename Interceptor, typename Derived>
422
549
  auto RunCall(Interceptor interceptor, CallArgs call_args,
423
550
  NextPromiseFactory next_promise_factory,
@@ -427,279 +554,553 @@ auto RunCall(Interceptor interceptor, CallArgs call_args,
427
554
  std::move(call_args), std::move(next_promise_factory), call_data);
428
555
  }
429
556
 
430
- template <typename Derived>
431
- inline auto InterceptClientToServerMessageHandler(
432
- void (Derived::Call::*fn)(const Message&),
433
- FilterCallData<Derived>* call_data, const CallArgs&) {
434
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
435
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
436
- call_data->call.OnClientToServerMessage(*msg);
437
- return std::move(msg);
438
- };
439
- }
557
+ template <typename Derived, typename MethodType, typename Ignored = void>
558
+ class InterceptClientToServerMessageHandler;
440
559
 
441
560
  template <typename Derived>
442
- inline auto InterceptClientToServerMessageHandler(
443
- ServerMetadataHandle (Derived::Call::*fn)(const Message&),
444
- FilterCallData<Derived>* call_data, const CallArgs&) {
445
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
446
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
447
- auto return_md = call_data->call.OnClientToServerMessage(*msg);
448
- if (return_md == nullptr) return std::move(msg);
449
- if (call_data->error_latch.is_set()) return std::nullopt;
450
- call_data->error_latch.Set(std::move(return_md));
451
- return std::nullopt;
452
- };
453
- }
561
+ class InterceptClientToServerMessageHandler<Derived, const NoInterceptor*> {
562
+ public:
563
+ explicit InterceptClientToServerMessageHandler(FilterCallData<Derived>*,
564
+ const CallArgs&) {}
565
+ auto operator()() {
566
+ return [](MessageHandle msg) -> std::optional<MessageHandle> {
567
+ return std::move(msg);
568
+ };
569
+ }
570
+ };
454
571
 
455
- template <typename Derived>
456
- inline auto InterceptClientToServerMessageHandler(
457
- ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
458
- FilterCallData<Derived>* call_data, const CallArgs&) {
459
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
460
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
461
- auto return_md =
462
- call_data->call.OnClientToServerMessage(*msg, call_data->channel);
463
- if (return_md == nullptr) return std::move(msg);
464
- if (call_data->error_latch.is_set()) return std::nullopt;
465
- call_data->error_latch.Set(std::move(return_md));
466
- return std::nullopt;
467
- };
468
- }
572
+ template <typename Derived, typename MessageType>
573
+ class InterceptClientToServerMessageHandler<
574
+ Derived, void (Derived::Call::*)(MessageType),
575
+ EnableIfSameExcludingCVRef<Message, MessageType>> {
576
+ public:
577
+ explicit InterceptClientToServerMessageHandler(
578
+ FilterCallData<Derived>* call_data, const CallArgs&)
579
+ : call_data_(call_data) {}
580
+ auto operator()() {
581
+ return [call_data =
582
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
583
+ call_data->call.OnClientToServerMessage(*msg);
584
+ return std::move(msg);
585
+ };
586
+ }
469
587
 
470
- template <typename Derived>
471
- inline auto InterceptClientToServerMessageHandler(
472
- void (Derived::Call::*fn)(const Message&, Derived*),
473
- FilterCallData<Derived>* call_data, const CallArgs&) {
474
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
475
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
476
- call_data->call.OnClientToServerMessage(*msg, call_data->channel);
477
- return std::move(msg);
478
- };
479
- }
588
+ private:
589
+ FilterCallData<Derived>* call_data_;
590
+ };
480
591
 
481
- template <typename Derived>
482
- inline auto InterceptClientToServerMessageHandler(
483
- MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
484
- FilterCallData<Derived>* call_data, const CallArgs&) {
485
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
486
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
487
- return call_data->call.OnClientToServerMessage(std::move(msg),
488
- call_data->channel);
489
- };
490
- }
592
+ template <typename Derived, typename MessageType>
593
+ class InterceptClientToServerMessageHandler<
594
+ Derived, ServerMetadataHandle (Derived::Call::*)(MessageType),
595
+ EnableIfSameExcludingCVRef<Message, MessageType>> {
596
+ public:
597
+ explicit InterceptClientToServerMessageHandler(
598
+ FilterCallData<Derived>* call_data, const CallArgs&)
599
+ : call_data_(call_data) {}
600
+
601
+ auto operator()() {
602
+ return [call_data =
603
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
604
+ auto return_md = call_data->call.OnClientToServerMessage(*msg);
605
+ if (return_md == nullptr) return std::move(msg);
606
+ if (call_data->error_latch.is_set()) return std::nullopt;
607
+ call_data->error_latch.Set(std::move(return_md));
608
+ return std::nullopt;
609
+ };
610
+ }
611
+
612
+ private:
613
+ FilterCallData<Derived>* call_data_;
614
+ };
615
+
616
+ template <typename Derived, typename MessageType>
617
+ class InterceptClientToServerMessageHandler<
618
+ Derived, ServerMetadataHandle (Derived::Call::*)(MessageType, Derived*),
619
+ EnableIfSameExcludingCVRef<Message, MessageType>> {
620
+ public:
621
+ explicit InterceptClientToServerMessageHandler(
622
+ FilterCallData<Derived>* call_data, const CallArgs&)
623
+ : call_data_(call_data) {}
624
+
625
+ auto operator()() {
626
+ return [call_data =
627
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
628
+ auto return_md =
629
+ call_data->call.OnClientToServerMessage(*msg, call_data->channel);
630
+ if (return_md == nullptr) return std::move(msg);
631
+ if (call_data->error_latch.is_set()) return std::nullopt;
632
+ call_data->error_latch.Set(std::move(return_md));
633
+ return std::nullopt;
634
+ };
635
+ }
636
+
637
+ private:
638
+ FilterCallData<Derived>* call_data_;
639
+ };
640
+
641
+ template <typename Derived, typename MessageType>
642
+ class InterceptClientToServerMessageHandler<
643
+ Derived, void (Derived::Call::*)(MessageType, Derived*),
644
+ EnableIfSameExcludingCVRef<Message, MessageType>> {
645
+ public:
646
+ explicit InterceptClientToServerMessageHandler(
647
+ FilterCallData<Derived>* call_data, const CallArgs&)
648
+ : call_data_(call_data) {}
649
+
650
+ auto operator()() {
651
+ return [call_data =
652
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
653
+ call_data->call.OnClientToServerMessage(*msg, call_data->channel);
654
+ return std::move(msg);
655
+ };
656
+ }
657
+
658
+ private:
659
+ FilterCallData<Derived>* call_data_;
660
+ };
491
661
 
492
662
  template <typename Derived>
493
- inline auto InterceptClientToServerMessageHandler(
494
- absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
495
- FilterCallData<Derived>* call_data, const CallArgs&) {
496
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
497
- return [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
498
- auto r = call_data->call.OnClientToServerMessage(std::move(msg),
663
+ class InterceptClientToServerMessageHandler<
664
+ Derived, MessageHandle (Derived::Call::*)(MessageHandle, Derived*)> {
665
+ public:
666
+ explicit InterceptClientToServerMessageHandler(
667
+ FilterCallData<Derived>* call_data, const CallArgs&)
668
+ : call_data_(call_data) {}
669
+
670
+ auto operator()() {
671
+ return [call_data =
672
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
673
+ return call_data->call.OnClientToServerMessage(std::move(msg),
499
674
  call_data->channel);
500
- if (r.ok()) return std::move(*r);
501
- if (call_data->error_latch.is_set()) return std::nullopt;
502
- call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
503
- return std::nullopt;
504
- };
505
- }
675
+ };
676
+ }
506
677
 
507
- template <typename Derived, typename HookFunction>
508
- inline void InterceptClientToServerMessage(HookFunction hook,
509
- const NoInterceptor*,
510
- FilterCallData<Derived>* call_data,
511
- const CallArgs& call_args) {
512
- call_args.client_to_server_messages->InterceptAndMap(
513
- InterceptClientToServerMessageHandler(hook, call_data, call_args));
514
- }
678
+ private:
679
+ FilterCallData<Derived>* call_data_;
680
+ };
515
681
 
516
- template <typename Derived, typename HookFunction>
517
- inline void InterceptClientToServerMessage(HookFunction hook,
518
- void (Derived::Call::*)(),
519
- FilterCallData<Derived>* call_data,
520
- const CallArgs& call_args) {
521
- call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
522
- InterceptClientToServerMessageHandler(hook, call_data, call_args),
523
- [call_data]() { call_data->call.OnClientToServerHalfClose(); });
524
- }
682
+ template <typename Derived>
683
+ class InterceptClientToServerMessageHandler<
684
+ Derived,
685
+ absl::StatusOr<MessageHandle> (Derived::Call::*)(MessageHandle, Derived*)> {
686
+ public:
687
+ explicit InterceptClientToServerMessageHandler(
688
+ FilterCallData<Derived>* call_data, const CallArgs&)
689
+ : call_data_(call_data) {}
690
+
691
+ auto operator()() {
692
+ return [call_data =
693
+ call_data_](MessageHandle msg) -> std::optional<MessageHandle> {
694
+ auto r = call_data->call.OnClientToServerMessage(std::move(msg),
695
+ call_data->channel);
696
+ if (r.ok()) return std::move(*r);
697
+ if (call_data->error_latch.is_set()) return std::nullopt;
698
+ call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
699
+ return std::nullopt;
700
+ };
701
+ }
702
+
703
+ private:
704
+ FilterCallData<Derived>* call_data_;
705
+ };
706
+
707
+ // For handling fused filters with a promise return type. This specialization is
708
+ // only for fused filters not requiring a channel pointer.
709
+ template <typename Derived, typename R, typename Call>
710
+ class InterceptClientToServerMessageHandler<Derived, R (Call::*)(MessageHandle),
711
+ EnableIfPromise<R>> {
712
+ public:
713
+ explicit InterceptClientToServerMessageHandler(
714
+ FilterCallData<Derived>* call_data, const CallArgs&)
715
+ : call_data_(call_data) {}
716
+
717
+ auto operator()() {
718
+ return [call_data = call_data_](MessageHandle msg) {
719
+ return Map(call_data->call.OnClientToServerMessage(std::move(msg)),
720
+ [call_data](ServerMetadataOrHandle<Message> md)
721
+ -> std::optional<MessageHandle> {
722
+ if (!md.ok()) {
723
+ call_data->error_latch.Set(std::move(md).TakeMetadata());
724
+ return std::nullopt;
725
+ }
726
+ return std::move(md).TakeValue();
727
+ });
728
+ };
729
+ }
730
+
731
+ private:
732
+ FilterCallData<Derived>* call_data_;
733
+ };
734
+
735
+ // For handling fused filters with a promise return type. This specialization is
736
+ // only for fused filters requiring a channel pointer.
737
+ template <typename Derived, typename Call, typename R>
738
+ class InterceptClientToServerMessageHandler<
739
+ Derived, R (Call::*)(MessageHandle, Derived*), EnableIfPromise<R>> {
740
+ public:
741
+ explicit InterceptClientToServerMessageHandler(
742
+ FilterCallData<Derived>* call_data, const CallArgs&)
743
+ : call_data_(call_data) {}
744
+
745
+ auto operator()() {
746
+ return [call_data = call_data_](MessageHandle msg) {
747
+ return Map(call_data->call.OnClientToServerMessage(std::move(msg),
748
+ call_data->channel),
749
+ [call_data](ServerMetadataOrHandle<Message> md)
750
+ -> std::optional<MessageHandle> {
751
+ if (!md.ok()) {
752
+ call_data->error_latch.Set(std::move(md).TakeMetadata());
753
+ return std::nullopt;
754
+ }
755
+ return std::move(md).TakeValue();
756
+ });
757
+ };
758
+ }
759
+
760
+ private:
761
+ FilterCallData<Derived>* call_data_;
762
+ };
763
+
764
+ template <typename HookFn, typename HalfCloseFn, typename Derived,
765
+ typename Ignored = void>
766
+ struct InterceptClientToServerMessage;
525
767
 
526
768
  template <typename Derived>
527
- inline void InterceptClientToServerMessage(const NoInterceptor*,
528
- const NoInterceptor*,
529
- FilterCallData<Derived>*,
530
- const CallArgs&) {}
769
+ struct InterceptClientToServerMessage<const NoInterceptor*,
770
+ const NoInterceptor*, Derived> {
771
+ static inline void Run(FilterCallData<Derived>*, const CallArgs&) {}
772
+ };
773
+
774
+ template <typename HookFn, typename Call, typename Derived>
775
+ struct InterceptClientToServerMessage<
776
+ HookFn, void (Call::*)(), Derived,
777
+ std::enable_if_t<!IsSameExcludingCVRef<HookFn, NoInterceptor*>, void>> {
778
+ static inline void Run(FilterCallData<Derived>* call_data,
779
+ const CallArgs& call_args) {
780
+ call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
781
+ InterceptClientToServerMessageHandler<Derived, HookFn>(call_data,
782
+ call_args)(),
783
+ [call_data]() { call_data->call.OnClientToServerHalfClose(); });
784
+ }
785
+ };
786
+
787
+ template <typename HookFn, typename Derived>
788
+ struct InterceptClientToServerMessage<
789
+ HookFn, const NoInterceptor*, Derived,
790
+ std::enable_if_t<!IsSameExcludingCVRef<HookFn, NoInterceptor*>, void>> {
791
+ static inline void Run(FilterCallData<Derived>* call_data,
792
+ const CallArgs& call_args) {
793
+ call_args.client_to_server_messages->InterceptAndMap(
794
+ InterceptClientToServerMessageHandler<Derived, HookFn>(call_data,
795
+ call_args)());
796
+ }
797
+ };
531
798
 
532
- template <typename CallArgs>
533
- inline void InterceptServerInitialMetadata(const NoInterceptor*, void*,
534
- const CallArgs&) {}
799
+ template <typename Derived, typename MethodType, typename Ignored = void>
800
+ struct InterceptServerInitialMetadata;
535
801
 
536
802
  template <typename Derived>
537
- inline void InterceptServerInitialMetadata(
538
- void (Derived::Call::*fn)(ServerMetadata&),
539
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
540
- DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
541
- call_args.server_initial_metadata->InterceptAndMap(
542
- [call_data](ServerMetadataHandle md) {
543
- call_data->call.OnServerInitialMetadata(*md);
544
- return md;
545
- });
546
- }
803
+ struct InterceptServerInitialMetadata<Derived, const NoInterceptor*> {
804
+ static inline void Run(FilterCallData<Derived>*, const CallArgs&) {}
805
+ };
547
806
 
548
807
  template <typename Derived>
549
- inline void InterceptServerInitialMetadata(
550
- absl::Status (Derived::Call::*fn)(ServerMetadata&),
551
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
552
- DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
553
- call_args.server_initial_metadata->InterceptAndMap(
554
- [call_data](
555
- ServerMetadataHandle md) -> std::optional<ServerMetadataHandle> {
556
- auto status = call_data->call.OnServerInitialMetadata(*md);
557
- if (!status.ok() && !call_data->error_latch.is_set()) {
558
- call_data->error_latch.Set(ServerMetadataFromStatus(status));
559
- return std::nullopt;
560
- }
561
- return std::move(md);
562
- });
563
- }
808
+ struct InterceptServerInitialMetadata<Derived, void (Derived::Call::*)(
809
+ ServerMetadata&)> {
810
+ static inline void Run(FilterCallData<Derived>* call_data,
811
+ const CallArgs& call_args) {
812
+ call_args.server_initial_metadata->InterceptAndMap(
813
+ [call_data](ServerMetadataHandle md) {
814
+ call_data->call.OnServerInitialMetadata(*md);
815
+ return md;
816
+ });
817
+ }
818
+ };
564
819
 
565
820
  template <typename Derived>
566
- inline void InterceptServerInitialMetadata(
567
- void (Derived::Call::*fn)(ServerMetadata&, Derived*),
568
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
569
- DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
570
- call_args.server_initial_metadata->InterceptAndMap(
571
- [call_data](ServerMetadataHandle md) {
572
- call_data->call.OnServerInitialMetadata(*md, call_data->channel);
573
- return md;
574
- });
575
- }
821
+ struct InterceptServerInitialMetadata<Derived, absl::Status (Derived::Call::*)(
822
+ ServerMetadata&)> {
823
+ static inline void Run(FilterCallData<Derived>* call_data,
824
+ const CallArgs& call_args) {
825
+ call_args.server_initial_metadata->InterceptAndMap(
826
+ [call_data](
827
+ ServerMetadataHandle md) -> std::optional<ServerMetadataHandle> {
828
+ auto status = call_data->call.OnServerInitialMetadata(*md);
829
+ if (!status.ok() && !call_data->error_latch.is_set()) {
830
+ call_data->error_latch.Set(ServerMetadataFromStatus(status));
831
+ return std::nullopt;
832
+ }
833
+ return std::move(md);
834
+ });
835
+ }
836
+ };
576
837
 
577
838
  template <typename Derived>
578
- inline void InterceptServerInitialMetadata(
579
- absl::Status (Derived::Call::*fn)(ServerMetadata&, Derived*),
580
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
581
- DCHECK(fn == &Derived::Call::OnServerInitialMetadata);
582
- call_args.server_initial_metadata->InterceptAndMap(
583
- [call_data](
584
- ServerMetadataHandle md) -> std::optional<ServerMetadataHandle> {
585
- auto status =
586
- call_data->call.OnServerInitialMetadata(*md, call_data->channel);
587
- if (!status.ok() && !call_data->error_latch.is_set()) {
588
- call_data->error_latch.Set(ServerMetadataFromStatus(status));
589
- return std::nullopt;
590
- }
591
- return std::move(md);
592
- });
593
- }
839
+ struct InterceptServerInitialMetadata<Derived, void (Derived::Call::*)(
840
+ ServerMetadata&, Derived*)> {
841
+ static inline void Run(FilterCallData<Derived>* call_data,
842
+ const CallArgs& call_args) {
843
+ call_args.server_initial_metadata->InterceptAndMap(
844
+ [call_data](ServerMetadataHandle md) {
845
+ call_data->call.OnServerInitialMetadata(*md, call_data->channel);
846
+ return md;
847
+ });
848
+ }
849
+ };
594
850
 
595
- inline void InterceptServerToClientMessage(const NoInterceptor*, void*,
596
- const CallArgs&) {}
851
+ template <typename Derived>
852
+ struct InterceptServerInitialMetadata<Derived, absl::Status (Derived::Call::*)(
853
+ ServerMetadata&, Derived*)> {
854
+ static inline void Run(FilterCallData<Derived>* call_data,
855
+ const CallArgs& call_args) {
856
+ call_args.server_initial_metadata->InterceptAndMap(
857
+ [call_data](
858
+ ServerMetadataHandle md) -> std::optional<ServerMetadataHandle> {
859
+ auto status =
860
+ call_data->call.OnServerInitialMetadata(*md, call_data->channel);
861
+ if (!status.ok() && !call_data->error_latch.is_set()) {
862
+ call_data->error_latch.Set(ServerMetadataFromStatus(status));
863
+ return std::nullopt;
864
+ }
865
+ return std::move(md);
866
+ });
867
+ }
868
+ };
869
+
870
+ // For handling fused filters with a promise return type. This specialization is
871
+ // only for fused filters requiring a channel pointer.
872
+ template <typename Derived, typename Call, typename R>
873
+ struct InterceptServerInitialMetadata<
874
+ Derived, R (Call::*)(ServerMetadataHandle, Derived*), EnableIfPromise<R>> {
875
+ static inline void Run(FilterCallData<Derived>* call_data,
876
+ const CallArgs& call_args) {
877
+ call_args.server_initial_metadata->InterceptAndMap(
878
+ [call_data](ServerMetadataHandle md) {
879
+ return Map(
880
+ call_data->call.OnServerInitialMetadata(std::move(md),
881
+ call_data->channel),
882
+ [call_data](ServerMetadataOrHandle<ServerMetadata> md)
883
+ -> std::optional<ServerMetadataHandle> {
884
+ if (!md.ok()) {
885
+ call_data->error_latch.Set(std::move(md).TakeMetadata());
886
+ return std::nullopt;
887
+ }
888
+ return std::move(md).TakeValue();
889
+ });
890
+ });
891
+ }
892
+ };
893
+
894
+ // For handling fused filters with a promise return type. This specialization is
895
+ // only for fused filters not requiring a channel pointer.
896
+ template <typename Derived, typename Call, typename R>
897
+ struct InterceptServerInitialMetadata<
898
+ Derived, R (Call::*)(ServerMetadataHandle), EnableIfPromise<R>> {
899
+ static inline void Run(FilterCallData<Derived>* call_data,
900
+ const CallArgs& call_args) {
901
+ call_args.server_initial_metadata->InterceptAndMap(
902
+ [call_data](ServerMetadataHandle md) {
903
+ return Map(
904
+ call_data->call.OnServerInitialMetadata(std::move(md)),
905
+ [call_data](ServerMetadataOrHandle<ServerMetadata> md)
906
+ -> std::optional<ServerMetadataHandle> {
907
+ if (!md.ok()) {
908
+ call_data->error_latch.Set(std::move(md).TakeMetadata());
909
+ return std::nullopt;
910
+ }
911
+ return std::move(md).TakeValue();
912
+ });
913
+ });
914
+ }
915
+ };
916
+
917
+ template <typename Derived, typename MethodType, typename Ignored = void>
918
+ struct InterceptServerToClientMessage;
597
919
 
598
920
  template <typename Derived>
599
- inline void InterceptServerToClientMessage(
600
- void (Derived::Call::*fn)(const Message&),
601
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
602
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
603
- call_args.server_to_client_messages->InterceptAndMap(
604
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
605
- call_data->call.OnServerToClientMessage(*msg);
606
- return std::move(msg);
607
- });
608
- }
921
+ struct InterceptServerToClientMessage<Derived, const NoInterceptor*> {
922
+ static inline void Run(FilterCallData<Derived>*, const CallArgs&) {}
923
+ };
609
924
 
610
925
  template <typename Derived>
611
- inline void InterceptServerToClientMessage(
612
- ServerMetadataHandle (Derived::Call::*fn)(const Message&),
613
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
614
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
615
- call_args.server_to_client_messages->InterceptAndMap(
616
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
617
- auto return_md = call_data->call.OnServerToClientMessage(*msg);
618
- if (return_md == nullptr) return std::move(msg);
619
- if (call_data->error_latch.is_set()) return std::nullopt;
620
- call_data->error_latch.Set(std::move(return_md));
621
- return std::nullopt;
622
- });
623
- }
926
+ struct InterceptServerToClientMessage<Derived,
927
+ void (Derived::Call::*)(const Message&)> {
928
+ static inline void Run(FilterCallData<Derived>* call_data,
929
+ const CallArgs& call_args) {
930
+ call_args.server_to_client_messages->InterceptAndMap(
931
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
932
+ call_data->call.OnServerToClientMessage(*msg);
933
+ return std::move(msg);
934
+ });
935
+ }
936
+ };
624
937
 
625
938
  template <typename Derived>
626
- inline void InterceptServerToClientMessage(
627
- void (Derived::Call::*fn)(const Message&, Derived*),
628
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
629
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
630
- call_args.server_to_client_messages->InterceptAndMap(
631
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
632
- call_data->call.OnServerToClientMessage(*msg, call_data->channel);
633
- return std::move(msg);
634
- });
635
- }
939
+ struct InterceptServerToClientMessage<Derived,
940
+ void (Derived::Call::*)(Message&)> {
941
+ static inline void Run(FilterCallData<Derived>* call_data,
942
+ const CallArgs& call_args) {
943
+ call_args.server_to_client_messages->InterceptAndMap(
944
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
945
+ call_data->call.OnServerToClientMessage(*msg);
946
+ return std::move(msg);
947
+ });
948
+ }
949
+ };
636
950
 
637
951
  template <typename Derived>
638
- inline void InterceptServerToClientMessage(
639
- ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
640
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
641
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
642
- call_args.server_to_client_messages->InterceptAndMap(
643
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
644
- auto return_md =
645
- call_data->call.OnServerToClientMessage(*msg, call_data->channel);
646
- if (return_md == nullptr) return std::move(msg);
647
- if (call_data->error_latch.is_set()) return std::nullopt;
648
- call_data->error_latch.Set(std::move(return_md));
649
- return std::nullopt;
650
- });
651
- }
952
+ struct InterceptServerToClientMessage<
953
+ Derived, ServerMetadataHandle (Derived::Call::*)(const Message&)> {
954
+ static inline void Run(FilterCallData<Derived>* call_data,
955
+ const CallArgs& call_args) {
956
+ call_args.server_to_client_messages->InterceptAndMap(
957
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
958
+ auto return_md = call_data->call.OnServerToClientMessage(*msg);
959
+ if (return_md == nullptr) return std::move(msg);
960
+ if (call_data->error_latch.is_set()) return std::nullopt;
961
+ call_data->error_latch.Set(std::move(return_md));
962
+ return std::nullopt;
963
+ });
964
+ }
965
+ };
652
966
 
653
967
  template <typename Derived>
654
- inline void InterceptServerToClientMessage(
655
- MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
656
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
657
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
658
- call_args.server_to_client_messages->InterceptAndMap(
659
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
660
- return call_data->call.OnServerToClientMessage(std::move(msg),
661
- call_data->channel);
662
- });
663
- }
968
+ struct InterceptServerToClientMessage<Derived, void (Derived::Call::*)(
969
+ const Message&, Derived*)> {
970
+ static inline void Run(FilterCallData<Derived>* call_data,
971
+ const CallArgs& call_args) {
972
+ call_args.server_to_client_messages->InterceptAndMap(
973
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
974
+ call_data->call.OnServerToClientMessage(*msg, call_data->channel);
975
+ return std::move(msg);
976
+ });
977
+ }
978
+ };
664
979
 
665
980
  template <typename Derived>
666
- inline void InterceptServerToClientMessage(
667
- absl::StatusOr<MessageHandle> (Derived::Call::*fn)(MessageHandle, Derived*),
668
- FilterCallData<Derived>* call_data, const CallArgs& call_args) {
669
- DCHECK(fn == &Derived::Call::OnServerToClientMessage);
670
- call_args.server_to_client_messages->InterceptAndMap(
671
- [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
672
- auto r = call_data->call.OnServerToClientMessage(std::move(msg),
981
+ struct InterceptServerToClientMessage<Derived,
982
+ ServerMetadataHandle (Derived::Call::*)(
983
+ const Message&, Derived*)> {
984
+ static inline void Run(FilterCallData<Derived>* call_data,
985
+ const CallArgs& call_args) {
986
+ call_args.server_to_client_messages->InterceptAndMap(
987
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
988
+ auto return_md =
989
+ call_data->call.OnServerToClientMessage(*msg, call_data->channel);
990
+ if (return_md == nullptr) return std::move(msg);
991
+ if (call_data->error_latch.is_set()) return std::nullopt;
992
+ call_data->error_latch.Set(std::move(return_md));
993
+ return std::nullopt;
994
+ });
995
+ }
996
+ };
997
+
998
+ template <typename Derived>
999
+ struct InterceptServerToClientMessage<Derived, MessageHandle (Derived::Call::*)(
1000
+ MessageHandle, Derived*)> {
1001
+ static inline void Run(FilterCallData<Derived>* call_data,
1002
+ const CallArgs& call_args) {
1003
+ call_args.server_to_client_messages->InterceptAndMap(
1004
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
1005
+ return call_data->call.OnServerToClientMessage(std::move(msg),
673
1006
  call_data->channel);
674
- if (r.ok()) return std::move(*r);
675
- if (call_data->error_latch.is_set()) return std::nullopt;
676
- call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
677
- return std::nullopt;
678
- });
679
- }
1007
+ });
1008
+ }
1009
+ };
680
1010
 
681
- inline void InterceptFinalize(const NoInterceptor*, void*, void*) {}
1011
+ template <typename Derived>
1012
+ struct InterceptServerToClientMessage<Derived, absl::StatusOr<MessageHandle> (
1013
+ Derived::Call::*)(
1014
+ MessageHandle, Derived*)> {
1015
+ static inline void Run(FilterCallData<Derived>* call_data,
1016
+ const CallArgs& call_args) {
1017
+ call_args.server_to_client_messages->InterceptAndMap(
1018
+ [call_data](MessageHandle msg) -> std::optional<MessageHandle> {
1019
+ auto r = call_data->call.OnServerToClientMessage(std::move(msg),
1020
+ call_data->channel);
1021
+ if (r.ok()) return std::move(*r);
1022
+ if (call_data->error_latch.is_set()) return std::nullopt;
1023
+ call_data->error_latch.Set(ServerMetadataFromStatus(r.status()));
1024
+ return std::nullopt;
1025
+ });
1026
+ }
1027
+ };
682
1028
 
683
- template <class Call>
684
- inline void InterceptFinalize(void (Call::*fn)(const grpc_call_final_info*),
685
- void*, Call* call) {
686
- DCHECK(fn == &Call::OnFinalize);
687
- GetContext<CallFinalization>()->Add(
688
- [call](const grpc_call_final_info* final_info) {
689
- call->OnFinalize(final_info);
690
- });
691
- }
1029
+ // For handling fused filters with a promise return type. This specialization is
1030
+ // only for fused filters not requiring a channel pointer.
1031
+ template <typename Derived, typename Call, typename R>
1032
+ struct InterceptServerToClientMessage<Derived, R (Call::*)(MessageHandle),
1033
+ EnableIfPromise<R>> {
1034
+ static inline void Run(FilterCallData<Derived>* call_data,
1035
+ const CallArgs& call_args) {
1036
+ call_args.server_to_client_messages->InterceptAndMap(
1037
+ [call_data](MessageHandle msg) {
1038
+ return Map(
1039
+ call_data->call.OnServerToClientMessage(std::move(msg)),
1040
+ [call_data](ServerMetadataOrHandle<Message> msg)
1041
+ -> std::optional<MessageHandle> {
1042
+ if (!msg.ok()) {
1043
+ call_data->error_latch.Set(std::move(msg).TakeMetadata());
1044
+ return std::nullopt;
1045
+ }
1046
+ return std::move(msg).TakeValue();
1047
+ });
1048
+ });
1049
+ }
1050
+ };
692
1051
 
693
- template <class Derived>
694
- inline void InterceptFinalize(
695
- void (Derived::Call::*fn)(const grpc_call_final_info*, Derived*),
696
- Derived* channel, typename Derived::Call* call) {
697
- DCHECK(fn == &Derived::Call::OnFinalize);
698
- GetContext<CallFinalization>()->Add(
699
- [call, channel](const grpc_call_final_info* final_info) {
700
- call->OnFinalize(final_info, channel);
701
- });
702
- }
1052
+ // For handling fused filters with a promise return type. This specialization is
1053
+ // only for fused filters requiring a channel pointer.
1054
+ template <typename Derived, typename Call, typename R>
1055
+ struct InterceptServerToClientMessage<
1056
+ Derived, R (Call::*)(MessageHandle, Derived*), EnableIfPromise<R>> {
1057
+ static inline void Run(FilterCallData<Derived>* call_data,
1058
+ const CallArgs& call_args) {
1059
+ call_args.server_to_client_messages->InterceptAndMap(
1060
+ [call_data](MessageHandle msg) {
1061
+ return Map(
1062
+ call_data->call.OnServerToClientMessage(std::move(msg),
1063
+ call_data->channel),
1064
+ [call_data](ServerMetadataOrHandle<Message> msg)
1065
+ -> std::optional<MessageHandle> {
1066
+ if (!msg.ok()) {
1067
+ call_data->error_latch.Set(std::move(msg).TakeMetadata());
1068
+ return std::nullopt;
1069
+ }
1070
+ return std::move(msg).TakeValue();
1071
+ });
1072
+ });
1073
+ }
1074
+ };
1075
+
1076
+ template <typename Derived, typename MethodType, typename Ignored = void>
1077
+ struct InterceptFinalize;
1078
+
1079
+ template <typename Derived>
1080
+ struct InterceptFinalize<Derived, const NoInterceptor*> {
1081
+ static inline void Run(void*, void*) {}
1082
+ };
1083
+
1084
+ template <typename Derived, typename Call>
1085
+ struct InterceptFinalize<Derived, void (Call::*)(const grpc_call_final_info*)> {
1086
+ static inline void Run(void*, Call* call) {
1087
+ GetContext<CallFinalization>()->Add(
1088
+ [call](const grpc_call_final_info* final_info) {
1089
+ call->OnFinalize(final_info);
1090
+ });
1091
+ }
1092
+ };
1093
+
1094
+ template <class Derived, typename Call>
1095
+ struct InterceptFinalize<Derived, void (Call::*)(const grpc_call_final_info*,
1096
+ Derived*)> {
1097
+ static inline void Run(Derived* channel, Call* call) {
1098
+ GetContext<CallFinalization>()->Add(
1099
+ [call, channel](const grpc_call_final_info* final_info) {
1100
+ call->OnFinalize(final_info, channel);
1101
+ });
1102
+ }
1103
+ };
703
1104
 
704
1105
  template <typename Derived>
705
1106
  absl::enable_if_t<std::is_empty<FilterCallData<Derived>>::value,
@@ -786,20 +1187,27 @@ class ImplementChannelFilter : public ChannelFilter,
786
1187
  CallArgs call_args, NextPromiseFactory next_promise_factory) final {
787
1188
  auto* call = promise_filter_detail::MakeFilterCall<Derived>(
788
1189
  static_cast<Derived*>(this));
789
- promise_filter_detail::InterceptClientToServerMessage(
790
- &Derived::Call::OnClientToServerMessage,
791
- &Derived::Call::OnClientToServerHalfClose, call, call_args);
792
- promise_filter_detail::InterceptServerInitialMetadata(
793
- &Derived::Call::OnServerInitialMetadata, call, call_args);
794
- promise_filter_detail::InterceptServerToClientMessage(
795
- &Derived::Call::OnServerToClientMessage, call, call_args);
796
- promise_filter_detail::InterceptFinalize(
797
- &Derived::Call::OnFinalize, static_cast<Derived*>(this),
798
- static_cast<typename Derived::Call*>(&call->call));
1190
+ promise_filter_detail::InterceptClientToServerMessage<
1191
+ decltype(&Derived::Call::OnClientToServerMessage),
1192
+ decltype(&Derived::Call::OnClientToServerHalfClose),
1193
+ Derived>::Run(call, call_args);
1194
+ promise_filter_detail::InterceptServerInitialMetadata<
1195
+ Derived,
1196
+ decltype(&Derived::Call::OnServerInitialMetadata)>::Run(call,
1197
+ call_args);
1198
+ promise_filter_detail::InterceptServerToClientMessage<
1199
+ Derived,
1200
+ decltype(&Derived::Call::OnServerToClientMessage)>::Run(call,
1201
+ call_args);
1202
+ promise_filter_detail::
1203
+ InterceptFinalize<Derived, decltype(&Derived::Call::OnFinalize)>::Run(
1204
+ static_cast<Derived*>(this),
1205
+ static_cast<typename Derived::Call*>(&call->call));
799
1206
  return promise_filter_detail::MapResult(
800
1207
  &Derived::Call::OnServerTrailingMetadata,
801
1208
  promise_filter_detail::RaceAsyncCompletion<
802
- promise_filter_detail::CallHasAsyncErrorInterceptor<Derived>()>::
1209
+ promise_filter_detail::CallHasAsyncErrorInterceptor<
1210
+ Derived>::value>::
803
1211
  Run(promise_filter_detail::RunCall(
804
1212
  &Derived::Call::OnClientInitialMetadata,
805
1213
  std::move(call_args), std::move(next_promise_factory),