grpc 1.60.2 → 1.61.0.pre2

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 (279) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +208 -165
  3. data/include/grpc/event_engine/event_engine.h +59 -12
  4. data/include/grpc/event_engine/internal/memory_allocator_impl.h +6 -0
  5. data/include/grpc/event_engine/internal/slice_cast.h +12 -0
  6. data/include/grpc/event_engine/memory_allocator.h +3 -1
  7. data/include/grpc/event_engine/slice.h +5 -0
  8. data/include/grpc/grpc_security.h +22 -1
  9. data/include/grpc/impl/call.h +29 -0
  10. data/include/grpc/impl/channel_arg_names.h +12 -1
  11. data/include/grpc/impl/slice_type.h +1 -1
  12. data/include/grpc/module.modulemap +1 -0
  13. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +54 -7
  14. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
  15. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +10 -13
  16. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
  17. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
  18. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
  19. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -2
  20. data/src/core/ext/filters/client_channel/client_channel.cc +32 -6
  21. data/src/core/ext/filters/client_channel/client_channel_internal.h +2 -0
  22. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +54 -21
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -1
  26. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +12 -15
  27. data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +8 -5
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +139 -92
  29. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +9 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +9 -4
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +10 -11
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +94 -93
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +5 -3
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +12 -15
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +38 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -28
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +10 -10
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +37 -35
  39. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -9
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +504 -461
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +232 -122
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -6
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +642 -251
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +3 -1
  48. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -2
  50. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +6 -8
  51. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
  53. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +128 -270
  54. data/src/core/ext/filters/client_channel/resolver/xds/{xds_resolver.h → xds_resolver_attributes.h} +5 -4
  55. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
  56. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
  57. data/src/core/ext/filters/client_channel/retry_filter.cc +1 -0
  58. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +35 -17
  59. data/src/core/ext/filters/deadline/deadline_filter.cc +12 -0
  60. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -13
  61. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
  62. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -32
  63. data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
  64. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  65. data/src/core/ext/filters/http/client_authority_filter.h +12 -4
  66. data/src/core/ext/filters/http/http_filters_plugin.cc +42 -20
  67. data/src/core/ext/filters/http/message_compress/compression_filter.cc +55 -80
  68. data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
  69. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
  70. data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
  71. data/src/core/ext/filters/http/server/http_server_filter.cc +41 -41
  72. data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
  73. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -76
  74. data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
  75. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -11
  76. data/src/core/ext/filters/rbac/rbac_filter.h +11 -4
  77. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +25 -13
  78. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +47 -50
  79. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +21 -4
  80. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  81. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
  82. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +11 -2
  83. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +68 -145
  84. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
  85. data/src/core/ext/transport/chttp2/transport/flow_control.cc +21 -82
  86. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -8
  87. data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
  88. data/src/core/ext/transport/chttp2/transport/frame.h +214 -0
  89. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
  90. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +33 -79
  91. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -7
  92. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -36
  93. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -2
  94. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
  95. data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
  96. data/src/core/ext/transport/chttp2/transport/internal.h +1 -22
  97. data/src/core/ext/transport/chttp2/transport/parsing.cc +23 -37
  98. data/src/core/ext/transport/chttp2/transport/writing.cc +26 -58
  99. data/src/core/ext/transport/inproc/inproc_transport.cc +172 -13
  100. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
  101. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
  102. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
  103. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
  104. data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
  105. data/src/core/ext/xds/certificate_provider_store.cc +2 -1
  106. data/src/core/ext/xds/certificate_provider_store.h +0 -5
  107. data/src/core/ext/xds/xds_api.cc +31 -18
  108. data/src/core/ext/xds/xds_api.h +2 -2
  109. data/src/core/ext/xds/xds_bootstrap.h +3 -0
  110. data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
  111. data/src/core/ext/xds/xds_certificate_provider.h +44 -111
  112. data/src/core/ext/xds/xds_client.cc +420 -414
  113. data/src/core/ext/xds/xds_client.h +31 -22
  114. data/src/core/ext/xds/xds_client_grpc.cc +3 -1
  115. data/src/core/ext/xds/xds_cluster.cc +104 -11
  116. data/src/core/ext/xds/xds_cluster.h +9 -1
  117. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +9 -5
  118. data/src/core/ext/xds/xds_common_types.cc +14 -10
  119. data/src/core/ext/xds/xds_endpoint.cc +9 -4
  120. data/src/core/ext/xds/xds_endpoint.h +5 -1
  121. data/src/core/ext/xds/xds_health_status.cc +12 -2
  122. data/src/core/ext/xds/xds_health_status.h +4 -2
  123. data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -3
  124. data/src/core/ext/xds/xds_listener.cc +14 -8
  125. data/src/core/ext/xds/xds_resource_type_impl.h +6 -4
  126. data/src/core/ext/xds/xds_route_config.cc +34 -22
  127. data/src/core/ext/xds/xds_route_config.h +1 -0
  128. data/src/core/ext/xds/xds_server_config_fetcher.cc +61 -57
  129. data/src/core/ext/xds/xds_transport.h +3 -0
  130. data/src/core/ext/xds/xds_transport_grpc.cc +47 -50
  131. data/src/core/ext/xds/xds_transport_grpc.h +4 -0
  132. data/src/core/lib/channel/call_tracer.cc +12 -0
  133. data/src/core/lib/channel/call_tracer.h +17 -3
  134. data/src/core/lib/channel/channel_args.cc +24 -14
  135. data/src/core/lib/channel/channel_args.h +74 -13
  136. data/src/core/lib/channel/channel_stack.cc +27 -0
  137. data/src/core/lib/channel/channel_stack.h +10 -10
  138. data/src/core/lib/channel/connected_channel.cc +64 -18
  139. data/src/core/lib/channel/promise_based_filter.h +1041 -1
  140. data/src/core/lib/channel/server_call_tracer_filter.cc +43 -35
  141. data/src/core/lib/compression/compression_internal.cc +0 -3
  142. data/src/core/lib/event_engine/ares_resolver.cc +35 -14
  143. data/src/core/lib/event_engine/ares_resolver.h +9 -10
  144. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +8 -1
  145. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
  146. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
  147. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +52 -36
  148. data/src/core/lib/event_engine/posix_engine/posix_engine.h +4 -9
  149. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +11 -3
  150. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +9 -2
  151. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -0
  152. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
  153. data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -3
  154. data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
  155. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
  156. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
  157. data/src/core/lib/event_engine/windows/windows_engine.cc +7 -7
  158. data/src/core/lib/experiments/config.cc +13 -0
  159. data/src/core/lib/experiments/config.h +3 -0
  160. data/src/core/lib/experiments/experiments.cc +245 -366
  161. data/src/core/lib/experiments/experiments.h +50 -156
  162. data/src/core/lib/gprpp/debug_location.h +13 -0
  163. data/src/core/lib/gprpp/dual_ref_counted.h +36 -7
  164. data/src/core/lib/gprpp/orphanable.h +27 -0
  165. data/src/core/lib/gprpp/ref_counted.h +63 -22
  166. data/src/core/lib/gprpp/ref_counted_ptr.h +70 -27
  167. data/src/core/lib/gprpp/ref_counted_string.h +13 -0
  168. data/src/core/lib/gprpp/status_helper.cc +1 -2
  169. data/src/core/lib/iomgr/combiner.cc +15 -51
  170. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +31 -0
  171. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
  172. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -3
  173. data/src/core/lib/load_balancing/lb_policy.h +1 -1
  174. data/src/core/lib/promise/activity.cc +17 -2
  175. data/src/core/lib/promise/activity.h +5 -4
  176. data/src/core/lib/promise/all_ok.h +80 -0
  177. data/src/core/lib/promise/detail/join_state.h +2077 -0
  178. data/src/core/lib/promise/detail/promise_factory.h +1 -0
  179. data/src/core/lib/promise/detail/promise_like.h +8 -1
  180. data/src/core/lib/promise/detail/seq_state.h +3458 -150
  181. data/src/core/lib/promise/detail/status.h +42 -5
  182. data/src/core/lib/promise/for_each.h +13 -1
  183. data/src/core/lib/promise/if.h +4 -0
  184. data/src/core/lib/promise/latch.h +6 -3
  185. data/src/core/lib/promise/party.cc +33 -31
  186. data/src/core/lib/promise/party.h +142 -6
  187. data/src/core/lib/promise/poll.h +39 -13
  188. data/src/core/lib/promise/promise.h +4 -0
  189. data/src/core/lib/promise/seq.h +107 -7
  190. data/src/core/lib/promise/status_flag.h +196 -0
  191. data/src/core/lib/promise/try_join.h +132 -0
  192. data/src/core/lib/promise/try_seq.h +132 -10
  193. data/src/core/lib/resolver/endpoint_addresses.cc +0 -1
  194. data/src/core/lib/resolver/endpoint_addresses.h +48 -0
  195. data/src/core/lib/resource_quota/arena.h +2 -2
  196. data/src/core/lib/resource_quota/memory_quota.cc +57 -8
  197. data/src/core/lib/resource_quota/memory_quota.h +6 -0
  198. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +14 -11
  199. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
  200. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -0
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +28 -20
  203. data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -0
  204. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +4 -0
  205. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
  206. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -0
  207. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
  208. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -1
  209. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
  210. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +12 -0
  211. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +22 -5
  212. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -5
  213. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -0
  214. data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -28
  215. data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
  216. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -3
  217. data/src/core/lib/security/transport/auth_filters.h +71 -4
  218. data/src/core/lib/security/transport/client_auth_filter.cc +2 -4
  219. data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
  220. data/src/core/lib/security/transport/server_auth_filter.cc +70 -90
  221. data/src/core/lib/slice/slice_buffer.h +3 -0
  222. data/src/core/lib/surface/builtins.cc +1 -1
  223. data/src/core/lib/surface/call.cc +683 -196
  224. data/src/core/lib/surface/call.h +26 -13
  225. data/src/core/lib/surface/call_trace.cc +42 -1
  226. data/src/core/lib/surface/channel.cc +0 -1
  227. data/src/core/lib/surface/channel.h +0 -6
  228. data/src/core/lib/surface/channel_init.h +26 -0
  229. data/src/core/lib/surface/init.cc +14 -8
  230. data/src/core/lib/surface/server.cc +256 -237
  231. data/src/core/lib/surface/server.h +26 -54
  232. data/src/core/lib/surface/version.cc +2 -2
  233. data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
  234. data/src/core/lib/transport/call_final_info.cc +38 -0
  235. data/src/core/lib/transport/call_final_info.h +54 -0
  236. data/src/core/lib/transport/connectivity_state.cc +3 -2
  237. data/src/core/lib/transport/connectivity_state.h +4 -0
  238. data/src/core/lib/transport/metadata_batch.h +4 -4
  239. data/src/core/lib/transport/transport.cc +70 -19
  240. data/src/core/lib/transport/transport.h +395 -25
  241. data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -0
  242. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -3
  243. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  244. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  245. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
  246. data/src/core/tsi/ssl_transport_security.cc +65 -43
  247. data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
  248. data/src/ruby/ext/grpc/rb_grpc.c +0 -1
  249. data/src/ruby/ext/grpc/rb_grpc.h +0 -2
  250. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  251. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  252. data/src/ruby/lib/grpc/version.rb +1 -1
  253. data/third_party/upb/upb/reflection/def_pool.h +2 -2
  254. data/third_party/zlib/adler32.c +5 -27
  255. data/third_party/zlib/compress.c +5 -16
  256. data/third_party/zlib/crc32.c +86 -162
  257. data/third_party/zlib/deflate.c +233 -336
  258. data/third_party/zlib/deflate.h +8 -8
  259. data/third_party/zlib/gzguts.h +11 -12
  260. data/third_party/zlib/infback.c +7 -23
  261. data/third_party/zlib/inffast.c +1 -4
  262. data/third_party/zlib/inffast.h +1 -1
  263. data/third_party/zlib/inflate.c +30 -99
  264. data/third_party/zlib/inftrees.c +6 -11
  265. data/third_party/zlib/inftrees.h +3 -3
  266. data/third_party/zlib/trees.c +224 -302
  267. data/third_party/zlib/uncompr.c +4 -12
  268. data/third_party/zlib/zconf.h +6 -2
  269. data/third_party/zlib/zlib.h +191 -188
  270. data/third_party/zlib/zutil.c +16 -44
  271. data/third_party/zlib/zutil.h +10 -10
  272. metadata +35 -13
  273. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1173
  274. data/src/core/lib/event_engine/memory_allocator.cc +0 -74
  275. data/src/core/lib/transport/pid_controller.cc +0 -51
  276. data/src/core/lib/transport/pid_controller.h +0 -116
  277. data/third_party/upb/upb/collections/array.h +0 -17
  278. data/third_party/upb/upb/collections/map.h +0 -17
  279. data/third_party/upb/upb/upb.hpp +0 -18
@@ -57,19 +57,11 @@ namespace grpc_core {
57
57
  #ifdef GRPC_EXPERIMENTS_ARE_FINAL
58
58
 
59
59
  #if defined(GRPC_CFSTREAM)
60
- #define GRPC_EXPERIMENT_IS_INCLUDED_BLOCK_EXCESSIVE_REQUESTS_BEFORE_SETTINGS_ACK
61
- inline bool IsBlockExcessiveRequestsBeforeSettingsAckEnabled() { return true; }
62
60
  inline bool IsCallStatusOverrideOnCancellationEnabled() { return false; }
63
61
  inline bool IsCanaryClientPrivacyEnabled() { return false; }
64
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BATCH_REQUESTS
65
- inline bool IsChttp2BatchRequestsEnabled() { return true; }
66
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_OFFLOAD_ON_RST_STREAM
67
- inline bool IsChttp2OffloadOnRstStreamEnabled() { return true; }
68
62
  #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS
69
63
  inline bool IsClientIdlenessEnabled() { return true; }
70
64
  inline bool IsClientPrivacyEnabled() { return false; }
71
- #define GRPC_EXPERIMENT_IS_INCLUDED_COMBINER_OFFLOAD_TO_EVENT_ENGINE
72
- inline bool IsCombinerOffloadToEventEngineEnabled() { return true; }
73
65
  inline bool IsEventEngineClientEnabled() { return false; }
74
66
  inline bool IsEventEngineDnsEnabled() { return false; }
75
67
  inline bool IsEventEngineListenerEnabled() { return false; }
@@ -78,70 +70,50 @@ inline bool IsFreeLargeAllocatorEnabled() { return false; }
78
70
  inline bool IsHttp2StatsFixEnabled() { return true; }
79
71
  inline bool IsKeepaliveFixEnabled() { return false; }
80
72
  inline bool IsKeepaliveServerFixEnabled() { return false; }
81
- #define GRPC_EXPERIMENT_IS_INCLUDED_LAZIER_STREAM_UPDATES
82
- inline bool IsLazierStreamUpdatesEnabled() { return true; }
83
- inline bool IsMemoryPressureControllerEnabled() { return false; }
84
73
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
85
74
  inline bool IsMonitoringExperimentEnabled() { return true; }
86
75
  inline bool IsMultipingEnabled() { return false; }
87
- #define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
88
- inline bool IsOverloadProtectionEnabled() { return true; }
89
76
  inline bool IsPeerStateBasedFramingEnabled() { return false; }
90
77
  #define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP
91
78
  inline bool IsPendingQueueCapEnabled() { return true; }
92
79
  #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
93
80
  inline bool IsPickFirstHappyEyeballsEnabled() { return true; }
94
- #define GRPC_EXPERIMENT_IS_INCLUDED_PING_ON_RST_STREAM
95
- inline bool IsPingOnRstStreamEnabled() { return true; }
96
81
  inline bool IsPromiseBasedClientCallEnabled() { return false; }
97
- inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
98
82
  inline bool IsPromiseBasedServerCallEnabled() { return false; }
99
- inline bool IsRedMaxConcurrentStreamsEnabled() { return false; }
100
83
  #define GRPC_EXPERIMENT_IS_INCLUDED_REGISTERED_METHOD_LOOKUP_IN_TRANSPORT
101
84
  inline bool IsRegisteredMethodLookupInTransportEnabled() { return true; }
85
+ inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
102
86
  inline bool IsRegisteredMethodsMapEnabled() { return false; }
103
87
  inline bool IsRfcMaxConcurrentStreamsEnabled() { return false; }
104
88
  #define GRPC_EXPERIMENT_IS_INCLUDED_ROUND_ROBIN_DELEGATE_TO_PICK_FIRST
105
89
  inline bool IsRoundRobinDelegateToPickFirstEnabled() { return true; }
106
90
  inline bool IsRstpitEnabled() { return false; }
107
91
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
108
- #define GRPC_EXPERIMENT_IS_INCLUDED_SEPARATE_PING_FROM_KEEPALIVE
109
- inline bool IsSeparatePingFromKeepaliveEnabled() { return true; }
110
92
  inline bool IsServerPrivacyEnabled() { return false; }
111
- #define GRPC_EXPERIMENT_IS_INCLUDED_SETTINGS_TIMEOUT
112
- inline bool IsSettingsTimeoutEnabled() { return true; }
113
- #define GRPC_EXPERIMENT_IS_INCLUDED_TARPIT
114
- inline bool IsTarpitEnabled() { return true; }
115
93
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
116
94
  inline bool IsTcpRcvLowatEnabled() { return false; }
117
95
  inline bool IsTraceRecordCallopsEnabled() { return false; }
118
96
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
119
- #define GRPC_EXPERIMENT_IS_INCLUDED_UNIQUELY_UNOWNED
120
- inline bool IsUniquelyUnownedEnabled() { return true; }
97
+ inline bool IsV3BackendMetricFilterEnabled() { return false; }
98
+ inline bool IsV3ChannelIdleFiltersEnabled() { return false; }
99
+ inline bool IsV3CompressionFilterEnabled() { return false; }
100
+ inline bool IsV3ServerAuthFilterEnabled() { return false; }
121
101
  #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE
122
102
  inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; }
123
103
  inline bool IsWorkSerializerDispatchEnabled() { return false; }
124
- #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
125
- inline bool IsWriteSizeCapEnabled() { return true; }
126
104
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_POLICY
127
105
  inline bool IsWriteSizePolicyEnabled() { return true; }
106
+ #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
107
+ inline bool IsWriteSizeCapEnabled() { return true; }
128
108
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRR_DELEGATE_TO_PICK_FIRST
129
109
  inline bool IsWrrDelegateToPickFirstEnabled() { return true; }
130
110
 
131
111
  #elif defined(GPR_WINDOWS)
132
- #define GRPC_EXPERIMENT_IS_INCLUDED_BLOCK_EXCESSIVE_REQUESTS_BEFORE_SETTINGS_ACK
133
- inline bool IsBlockExcessiveRequestsBeforeSettingsAckEnabled() { return true; }
134
112
  inline bool IsCallStatusOverrideOnCancellationEnabled() { return false; }
135
113
  inline bool IsCanaryClientPrivacyEnabled() { return false; }
136
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BATCH_REQUESTS
137
- inline bool IsChttp2BatchRequestsEnabled() { return true; }
138
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_OFFLOAD_ON_RST_STREAM
139
- inline bool IsChttp2OffloadOnRstStreamEnabled() { return true; }
140
114
  #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS
141
115
  inline bool IsClientIdlenessEnabled() { return true; }
142
116
  inline bool IsClientPrivacyEnabled() { return false; }
143
- #define GRPC_EXPERIMENT_IS_INCLUDED_COMBINER_OFFLOAD_TO_EVENT_ENGINE
144
- inline bool IsCombinerOffloadToEventEngineEnabled() { return true; }
145
117
  inline bool IsEventEngineClientEnabled() { return false; }
146
118
  inline bool IsEventEngineDnsEnabled() { return false; }
147
119
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
@@ -151,70 +123,50 @@ inline bool IsFreeLargeAllocatorEnabled() { return false; }
151
123
  inline bool IsHttp2StatsFixEnabled() { return true; }
152
124
  inline bool IsKeepaliveFixEnabled() { return false; }
153
125
  inline bool IsKeepaliveServerFixEnabled() { return false; }
154
- #define GRPC_EXPERIMENT_IS_INCLUDED_LAZIER_STREAM_UPDATES
155
- inline bool IsLazierStreamUpdatesEnabled() { return true; }
156
- inline bool IsMemoryPressureControllerEnabled() { return false; }
157
126
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
158
127
  inline bool IsMonitoringExperimentEnabled() { return true; }
159
128
  inline bool IsMultipingEnabled() { return false; }
160
- #define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
161
- inline bool IsOverloadProtectionEnabled() { return true; }
162
129
  inline bool IsPeerStateBasedFramingEnabled() { return false; }
163
130
  #define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP
164
131
  inline bool IsPendingQueueCapEnabled() { return true; }
165
132
  #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
166
133
  inline bool IsPickFirstHappyEyeballsEnabled() { return true; }
167
- #define GRPC_EXPERIMENT_IS_INCLUDED_PING_ON_RST_STREAM
168
- inline bool IsPingOnRstStreamEnabled() { return true; }
169
134
  inline bool IsPromiseBasedClientCallEnabled() { return false; }
170
- inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
171
135
  inline bool IsPromiseBasedServerCallEnabled() { return false; }
172
- inline bool IsRedMaxConcurrentStreamsEnabled() { return false; }
173
136
  #define GRPC_EXPERIMENT_IS_INCLUDED_REGISTERED_METHOD_LOOKUP_IN_TRANSPORT
174
137
  inline bool IsRegisteredMethodLookupInTransportEnabled() { return true; }
138
+ inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
175
139
  inline bool IsRegisteredMethodsMapEnabled() { return false; }
176
140
  inline bool IsRfcMaxConcurrentStreamsEnabled() { return false; }
177
141
  #define GRPC_EXPERIMENT_IS_INCLUDED_ROUND_ROBIN_DELEGATE_TO_PICK_FIRST
178
142
  inline bool IsRoundRobinDelegateToPickFirstEnabled() { return true; }
179
143
  inline bool IsRstpitEnabled() { return false; }
180
144
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
181
- #define GRPC_EXPERIMENT_IS_INCLUDED_SEPARATE_PING_FROM_KEEPALIVE
182
- inline bool IsSeparatePingFromKeepaliveEnabled() { return true; }
183
145
  inline bool IsServerPrivacyEnabled() { return false; }
184
- #define GRPC_EXPERIMENT_IS_INCLUDED_SETTINGS_TIMEOUT
185
- inline bool IsSettingsTimeoutEnabled() { return true; }
186
- #define GRPC_EXPERIMENT_IS_INCLUDED_TARPIT
187
- inline bool IsTarpitEnabled() { return true; }
188
146
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
189
147
  inline bool IsTcpRcvLowatEnabled() { return false; }
190
148
  inline bool IsTraceRecordCallopsEnabled() { return false; }
191
149
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
192
- #define GRPC_EXPERIMENT_IS_INCLUDED_UNIQUELY_UNOWNED
193
- inline bool IsUniquelyUnownedEnabled() { return true; }
150
+ inline bool IsV3BackendMetricFilterEnabled() { return false; }
151
+ inline bool IsV3ChannelIdleFiltersEnabled() { return false; }
152
+ inline bool IsV3CompressionFilterEnabled() { return false; }
153
+ inline bool IsV3ServerAuthFilterEnabled() { return false; }
194
154
  #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE
195
155
  inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; }
196
156
  inline bool IsWorkSerializerDispatchEnabled() { return false; }
197
- #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
198
- inline bool IsWriteSizeCapEnabled() { return true; }
199
157
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_POLICY
200
158
  inline bool IsWriteSizePolicyEnabled() { return true; }
159
+ #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
160
+ inline bool IsWriteSizeCapEnabled() { return true; }
201
161
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRR_DELEGATE_TO_PICK_FIRST
202
162
  inline bool IsWrrDelegateToPickFirstEnabled() { return true; }
203
163
 
204
164
  #else
205
- #define GRPC_EXPERIMENT_IS_INCLUDED_BLOCK_EXCESSIVE_REQUESTS_BEFORE_SETTINGS_ACK
206
- inline bool IsBlockExcessiveRequestsBeforeSettingsAckEnabled() { return true; }
207
165
  inline bool IsCallStatusOverrideOnCancellationEnabled() { return false; }
208
166
  inline bool IsCanaryClientPrivacyEnabled() { return false; }
209
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BATCH_REQUESTS
210
- inline bool IsChttp2BatchRequestsEnabled() { return true; }
211
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_OFFLOAD_ON_RST_STREAM
212
- inline bool IsChttp2OffloadOnRstStreamEnabled() { return true; }
213
167
  #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS
214
168
  inline bool IsClientIdlenessEnabled() { return true; }
215
169
  inline bool IsClientPrivacyEnabled() { return false; }
216
- #define GRPC_EXPERIMENT_IS_INCLUDED_COMBINER_OFFLOAD_TO_EVENT_ENGINE
217
- inline bool IsCombinerOffloadToEventEngineEnabled() { return true; }
218
170
  inline bool IsEventEngineClientEnabled() { return false; }
219
171
  inline bool IsEventEngineDnsEnabled() { return false; }
220
172
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
@@ -224,67 +176,51 @@ inline bool IsFreeLargeAllocatorEnabled() { return false; }
224
176
  inline bool IsHttp2StatsFixEnabled() { return true; }
225
177
  inline bool IsKeepaliveFixEnabled() { return false; }
226
178
  inline bool IsKeepaliveServerFixEnabled() { return false; }
227
- #define GRPC_EXPERIMENT_IS_INCLUDED_LAZIER_STREAM_UPDATES
228
- inline bool IsLazierStreamUpdatesEnabled() { return true; }
229
- inline bool IsMemoryPressureControllerEnabled() { return false; }
230
179
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
231
180
  inline bool IsMonitoringExperimentEnabled() { return true; }
232
181
  inline bool IsMultipingEnabled() { return false; }
233
- #define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
234
- inline bool IsOverloadProtectionEnabled() { return true; }
235
182
  inline bool IsPeerStateBasedFramingEnabled() { return false; }
236
183
  #define GRPC_EXPERIMENT_IS_INCLUDED_PENDING_QUEUE_CAP
237
184
  inline bool IsPendingQueueCapEnabled() { return true; }
238
185
  #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_HAPPY_EYEBALLS
239
186
  inline bool IsPickFirstHappyEyeballsEnabled() { return true; }
240
- #define GRPC_EXPERIMENT_IS_INCLUDED_PING_ON_RST_STREAM
241
- inline bool IsPingOnRstStreamEnabled() { return true; }
242
187
  inline bool IsPromiseBasedClientCallEnabled() { return false; }
243
- inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
244
188
  inline bool IsPromiseBasedServerCallEnabled() { return false; }
245
- inline bool IsRedMaxConcurrentStreamsEnabled() { return false; }
246
189
  #define GRPC_EXPERIMENT_IS_INCLUDED_REGISTERED_METHOD_LOOKUP_IN_TRANSPORT
247
190
  inline bool IsRegisteredMethodLookupInTransportEnabled() { return true; }
191
+ inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
248
192
  inline bool IsRegisteredMethodsMapEnabled() { return false; }
249
193
  inline bool IsRfcMaxConcurrentStreamsEnabled() { return false; }
250
194
  #define GRPC_EXPERIMENT_IS_INCLUDED_ROUND_ROBIN_DELEGATE_TO_PICK_FIRST
251
195
  inline bool IsRoundRobinDelegateToPickFirstEnabled() { return true; }
252
196
  inline bool IsRstpitEnabled() { return false; }
253
197
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
254
- #define GRPC_EXPERIMENT_IS_INCLUDED_SEPARATE_PING_FROM_KEEPALIVE
255
- inline bool IsSeparatePingFromKeepaliveEnabled() { return true; }
256
198
  inline bool IsServerPrivacyEnabled() { return false; }
257
- #define GRPC_EXPERIMENT_IS_INCLUDED_SETTINGS_TIMEOUT
258
- inline bool IsSettingsTimeoutEnabled() { return true; }
259
- #define GRPC_EXPERIMENT_IS_INCLUDED_TARPIT
260
- inline bool IsTarpitEnabled() { return true; }
261
199
  inline bool IsTcpFrameSizeTuningEnabled() { return false; }
262
200
  inline bool IsTcpRcvLowatEnabled() { return false; }
263
201
  inline bool IsTraceRecordCallopsEnabled() { return false; }
264
202
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
265
- #define GRPC_EXPERIMENT_IS_INCLUDED_UNIQUELY_UNOWNED
266
- inline bool IsUniquelyUnownedEnabled() { return true; }
203
+ inline bool IsV3BackendMetricFilterEnabled() { return false; }
204
+ inline bool IsV3ChannelIdleFiltersEnabled() { return false; }
205
+ inline bool IsV3CompressionFilterEnabled() { return false; }
206
+ inline bool IsV3ServerAuthFilterEnabled() { return false; }
267
207
  #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE
268
208
  inline bool IsWorkSerializerClearsTimeCacheEnabled() { return true; }
269
209
  inline bool IsWorkSerializerDispatchEnabled() { return false; }
270
- #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
271
- inline bool IsWriteSizeCapEnabled() { return true; }
272
210
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_POLICY
273
211
  inline bool IsWriteSizePolicyEnabled() { return true; }
212
+ #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
213
+ inline bool IsWriteSizeCapEnabled() { return true; }
274
214
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRR_DELEGATE_TO_PICK_FIRST
275
215
  inline bool IsWrrDelegateToPickFirstEnabled() { return true; }
276
216
  #endif
277
217
 
278
218
  #else
279
219
  enum ExperimentIds {
280
- kExperimentIdBlockExcessiveRequestsBeforeSettingsAck,
281
220
  kExperimentIdCallStatusOverrideOnCancellation,
282
221
  kExperimentIdCanaryClientPrivacy,
283
- kExperimentIdChttp2BatchRequests,
284
- kExperimentIdChttp2OffloadOnRstStream,
285
222
  kExperimentIdClientIdleness,
286
223
  kExperimentIdClientPrivacy,
287
- kExperimentIdCombinerOffloadToEventEngine,
288
224
  kExperimentIdEventEngineClient,
289
225
  kExperimentIdEventEngineDns,
290
226
  kExperimentIdEventEngineListener,
@@ -292,46 +228,36 @@ enum ExperimentIds {
292
228
  kExperimentIdHttp2StatsFix,
293
229
  kExperimentIdKeepaliveFix,
294
230
  kExperimentIdKeepaliveServerFix,
295
- kExperimentIdLazierStreamUpdates,
296
- kExperimentIdMemoryPressureController,
297
231
  kExperimentIdMonitoringExperiment,
298
232
  kExperimentIdMultiping,
299
- kExperimentIdOverloadProtection,
300
233
  kExperimentIdPeerStateBasedFraming,
301
234
  kExperimentIdPendingQueueCap,
302
235
  kExperimentIdPickFirstHappyEyeballs,
303
- kExperimentIdPingOnRstStream,
304
236
  kExperimentIdPromiseBasedClientCall,
305
- kExperimentIdPromiseBasedInprocTransport,
306
237
  kExperimentIdPromiseBasedServerCall,
307
- kExperimentIdRedMaxConcurrentStreams,
308
238
  kExperimentIdRegisteredMethodLookupInTransport,
239
+ kExperimentIdPromiseBasedInprocTransport,
309
240
  kExperimentIdRegisteredMethodsMap,
310
241
  kExperimentIdRfcMaxConcurrentStreams,
311
242
  kExperimentIdRoundRobinDelegateToPickFirst,
312
243
  kExperimentIdRstpit,
313
244
  kExperimentIdScheduleCancellationOverWrite,
314
- kExperimentIdSeparatePingFromKeepalive,
315
245
  kExperimentIdServerPrivacy,
316
- kExperimentIdSettingsTimeout,
317
- kExperimentIdTarpit,
318
246
  kExperimentIdTcpFrameSizeTuning,
319
247
  kExperimentIdTcpRcvLowat,
320
248
  kExperimentIdTraceRecordCallops,
321
249
  kExperimentIdUnconstrainedMaxQuotaBufferSize,
322
- kExperimentIdUniquelyUnowned,
250
+ kExperimentIdV3BackendMetricFilter,
251
+ kExperimentIdV3ChannelIdleFilters,
252
+ kExperimentIdV3CompressionFilter,
253
+ kExperimentIdV3ServerAuthFilter,
323
254
  kExperimentIdWorkSerializerClearsTimeCache,
324
255
  kExperimentIdWorkSerializerDispatch,
325
- kExperimentIdWriteSizeCap,
326
256
  kExperimentIdWriteSizePolicy,
257
+ kExperimentIdWriteSizeCap,
327
258
  kExperimentIdWrrDelegateToPickFirst,
328
259
  kNumExperiments
329
260
  };
330
- #define GRPC_EXPERIMENT_IS_INCLUDED_BLOCK_EXCESSIVE_REQUESTS_BEFORE_SETTINGS_ACK
331
- inline bool IsBlockExcessiveRequestsBeforeSettingsAckEnabled() {
332
- return IsExperimentEnabled(
333
- kExperimentIdBlockExcessiveRequestsBeforeSettingsAck);
334
- }
335
261
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_STATUS_OVERRIDE_ON_CANCELLATION
336
262
  inline bool IsCallStatusOverrideOnCancellationEnabled() {
337
263
  return IsExperimentEnabled(kExperimentIdCallStatusOverrideOnCancellation);
@@ -340,14 +266,6 @@ inline bool IsCallStatusOverrideOnCancellationEnabled() {
340
266
  inline bool IsCanaryClientPrivacyEnabled() {
341
267
  return IsExperimentEnabled(kExperimentIdCanaryClientPrivacy);
342
268
  }
343
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_BATCH_REQUESTS
344
- inline bool IsChttp2BatchRequestsEnabled() {
345
- return IsExperimentEnabled(kExperimentIdChttp2BatchRequests);
346
- }
347
- #define GRPC_EXPERIMENT_IS_INCLUDED_CHTTP2_OFFLOAD_ON_RST_STREAM
348
- inline bool IsChttp2OffloadOnRstStreamEnabled() {
349
- return IsExperimentEnabled(kExperimentIdChttp2OffloadOnRstStream);
350
- }
351
269
  #define GRPC_EXPERIMENT_IS_INCLUDED_CLIENT_IDLENESS
352
270
  inline bool IsClientIdlenessEnabled() {
353
271
  return IsExperimentEnabled(kExperimentIdClientIdleness);
@@ -356,10 +274,6 @@ inline bool IsClientIdlenessEnabled() {
356
274
  inline bool IsClientPrivacyEnabled() {
357
275
  return IsExperimentEnabled(kExperimentIdClientPrivacy);
358
276
  }
359
- #define GRPC_EXPERIMENT_IS_INCLUDED_COMBINER_OFFLOAD_TO_EVENT_ENGINE
360
- inline bool IsCombinerOffloadToEventEngineEnabled() {
361
- return IsExperimentEnabled(kExperimentIdCombinerOffloadToEventEngine);
362
- }
363
277
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_CLIENT
364
278
  inline bool IsEventEngineClientEnabled() {
365
279
  return IsExperimentEnabled(kExperimentIdEventEngineClient);
@@ -388,14 +302,6 @@ inline bool IsKeepaliveFixEnabled() {
388
302
  inline bool IsKeepaliveServerFixEnabled() {
389
303
  return IsExperimentEnabled(kExperimentIdKeepaliveServerFix);
390
304
  }
391
- #define GRPC_EXPERIMENT_IS_INCLUDED_LAZIER_STREAM_UPDATES
392
- inline bool IsLazierStreamUpdatesEnabled() {
393
- return IsExperimentEnabled(kExperimentIdLazierStreamUpdates);
394
- }
395
- #define GRPC_EXPERIMENT_IS_INCLUDED_MEMORY_PRESSURE_CONTROLLER
396
- inline bool IsMemoryPressureControllerEnabled() {
397
- return IsExperimentEnabled(kExperimentIdMemoryPressureController);
398
- }
399
305
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
400
306
  inline bool IsMonitoringExperimentEnabled() {
401
307
  return IsExperimentEnabled(kExperimentIdMonitoringExperiment);
@@ -404,10 +310,6 @@ inline bool IsMonitoringExperimentEnabled() {
404
310
  inline bool IsMultipingEnabled() {
405
311
  return IsExperimentEnabled(kExperimentIdMultiping);
406
312
  }
407
- #define GRPC_EXPERIMENT_IS_INCLUDED_OVERLOAD_PROTECTION
408
- inline bool IsOverloadProtectionEnabled() {
409
- return IsExperimentEnabled(kExperimentIdOverloadProtection);
410
- }
411
313
  #define GRPC_EXPERIMENT_IS_INCLUDED_PEER_STATE_BASED_FRAMING
412
314
  inline bool IsPeerStateBasedFramingEnabled() {
413
315
  return IsExperimentEnabled(kExperimentIdPeerStateBasedFraming);
@@ -420,30 +322,22 @@ inline bool IsPendingQueueCapEnabled() {
420
322
  inline bool IsPickFirstHappyEyeballsEnabled() {
421
323
  return IsExperimentEnabled(kExperimentIdPickFirstHappyEyeballs);
422
324
  }
423
- #define GRPC_EXPERIMENT_IS_INCLUDED_PING_ON_RST_STREAM
424
- inline bool IsPingOnRstStreamEnabled() {
425
- return IsExperimentEnabled(kExperimentIdPingOnRstStream);
426
- }
427
325
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL
428
326
  inline bool IsPromiseBasedClientCallEnabled() {
429
327
  return IsExperimentEnabled(kExperimentIdPromiseBasedClientCall);
430
328
  }
431
- #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_INPROC_TRANSPORT
432
- inline bool IsPromiseBasedInprocTransportEnabled() {
433
- return IsExperimentEnabled(kExperimentIdPromiseBasedInprocTransport);
434
- }
435
329
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
436
330
  inline bool IsPromiseBasedServerCallEnabled() {
437
331
  return IsExperimentEnabled(kExperimentIdPromiseBasedServerCall);
438
332
  }
439
- #define GRPC_EXPERIMENT_IS_INCLUDED_RED_MAX_CONCURRENT_STREAMS
440
- inline bool IsRedMaxConcurrentStreamsEnabled() {
441
- return IsExperimentEnabled(kExperimentIdRedMaxConcurrentStreams);
442
- }
443
333
  #define GRPC_EXPERIMENT_IS_INCLUDED_REGISTERED_METHOD_LOOKUP_IN_TRANSPORT
444
334
  inline bool IsRegisteredMethodLookupInTransportEnabled() {
445
335
  return IsExperimentEnabled(kExperimentIdRegisteredMethodLookupInTransport);
446
336
  }
337
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_INPROC_TRANSPORT
338
+ inline bool IsPromiseBasedInprocTransportEnabled() {
339
+ return IsExperimentEnabled(kExperimentIdPromiseBasedInprocTransport);
340
+ }
447
341
  #define GRPC_EXPERIMENT_IS_INCLUDED_REGISTERED_METHODS_MAP
448
342
  inline bool IsRegisteredMethodsMapEnabled() {
449
343
  return IsExperimentEnabled(kExperimentIdRegisteredMethodsMap);
@@ -464,22 +358,10 @@ inline bool IsRstpitEnabled() {
464
358
  inline bool IsScheduleCancellationOverWriteEnabled() {
465
359
  return IsExperimentEnabled(kExperimentIdScheduleCancellationOverWrite);
466
360
  }
467
- #define GRPC_EXPERIMENT_IS_INCLUDED_SEPARATE_PING_FROM_KEEPALIVE
468
- inline bool IsSeparatePingFromKeepaliveEnabled() {
469
- return IsExperimentEnabled(kExperimentIdSeparatePingFromKeepalive);
470
- }
471
361
  #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_PRIVACY
472
362
  inline bool IsServerPrivacyEnabled() {
473
363
  return IsExperimentEnabled(kExperimentIdServerPrivacy);
474
364
  }
475
- #define GRPC_EXPERIMENT_IS_INCLUDED_SETTINGS_TIMEOUT
476
- inline bool IsSettingsTimeoutEnabled() {
477
- return IsExperimentEnabled(kExperimentIdSettingsTimeout);
478
- }
479
- #define GRPC_EXPERIMENT_IS_INCLUDED_TARPIT
480
- inline bool IsTarpitEnabled() {
481
- return IsExperimentEnabled(kExperimentIdTarpit);
482
- }
483
365
  #define GRPC_EXPERIMENT_IS_INCLUDED_TCP_FRAME_SIZE_TUNING
484
366
  inline bool IsTcpFrameSizeTuningEnabled() {
485
367
  return IsExperimentEnabled(kExperimentIdTcpFrameSizeTuning);
@@ -496,9 +378,21 @@ inline bool IsTraceRecordCallopsEnabled() {
496
378
  inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() {
497
379
  return IsExperimentEnabled(kExperimentIdUnconstrainedMaxQuotaBufferSize);
498
380
  }
499
- #define GRPC_EXPERIMENT_IS_INCLUDED_UNIQUELY_UNOWNED
500
- inline bool IsUniquelyUnownedEnabled() {
501
- return IsExperimentEnabled(kExperimentIdUniquelyUnowned);
381
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V3_BACKEND_METRIC_FILTER
382
+ inline bool IsV3BackendMetricFilterEnabled() {
383
+ return IsExperimentEnabled(kExperimentIdV3BackendMetricFilter);
384
+ }
385
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V3_CHANNEL_IDLE_FILTERS
386
+ inline bool IsV3ChannelIdleFiltersEnabled() {
387
+ return IsExperimentEnabled(kExperimentIdV3ChannelIdleFilters);
388
+ }
389
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V3_COMPRESSION_FILTER
390
+ inline bool IsV3CompressionFilterEnabled() {
391
+ return IsExperimentEnabled(kExperimentIdV3CompressionFilter);
392
+ }
393
+ #define GRPC_EXPERIMENT_IS_INCLUDED_V3_SERVER_AUTH_FILTER
394
+ inline bool IsV3ServerAuthFilterEnabled() {
395
+ return IsExperimentEnabled(kExperimentIdV3ServerAuthFilter);
502
396
  }
503
397
  #define GRPC_EXPERIMENT_IS_INCLUDED_WORK_SERIALIZER_CLEARS_TIME_CACHE
504
398
  inline bool IsWorkSerializerClearsTimeCacheEnabled() {
@@ -508,14 +402,14 @@ inline bool IsWorkSerializerClearsTimeCacheEnabled() {
508
402
  inline bool IsWorkSerializerDispatchEnabled() {
509
403
  return IsExperimentEnabled(kExperimentIdWorkSerializerDispatch);
510
404
  }
511
- #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
512
- inline bool IsWriteSizeCapEnabled() {
513
- return IsExperimentEnabled(kExperimentIdWriteSizeCap);
514
- }
515
405
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_POLICY
516
406
  inline bool IsWriteSizePolicyEnabled() {
517
407
  return IsExperimentEnabled(kExperimentIdWriteSizePolicy);
518
408
  }
409
+ #define GRPC_EXPERIMENT_IS_INCLUDED_WRITE_SIZE_CAP
410
+ inline bool IsWriteSizeCapEnabled() {
411
+ return IsExperimentEnabled(kExperimentIdWriteSizeCap);
412
+ }
519
413
  #define GRPC_EXPERIMENT_IS_INCLUDED_WRR_DELEGATE_TO_PICK_FIRST
520
414
  inline bool IsWrrDelegateToPickFirstEnabled() {
521
415
  return IsExperimentEnabled(kExperimentIdWrrDelegateToPickFirst);
@@ -19,6 +19,10 @@
19
19
  #ifndef GRPC_SRC_CORE_LIB_GPRPP_DEBUG_LOCATION_H
20
20
  #define GRPC_SRC_CORE_LIB_GPRPP_DEBUG_LOCATION_H
21
21
 
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <utility>
25
+
22
26
  #if defined(__has_builtin)
23
27
  #if __has_builtin(__builtin_FILE)
24
28
  #define GRPC_DEFAULT_FILE __builtin_FILE()
@@ -77,6 +81,15 @@ class DebugLocation {
77
81
  };
78
82
  #endif
79
83
 
84
+ template <typename T>
85
+ struct ValueWithDebugLocation {
86
+ // NOLINTNEXTLINE
87
+ ValueWithDebugLocation(T&& value, DebugLocation debug_location = {})
88
+ : value(std::forward<T>(value)), debug_location(debug_location) {}
89
+ T value;
90
+ GPR_NO_UNIQUE_ADDRESS DebugLocation debug_location;
91
+ };
92
+
80
93
  #define DEBUG_LOCATION ::grpc_core::DebugLocation(__FILE__, __LINE__)
81
94
 
82
95
  } // namespace grpc_core
@@ -47,19 +47,38 @@ namespace grpc_core {
47
47
  template <typename Child>
48
48
  class DualRefCounted : public Orphanable {
49
49
  public:
50
+ // Not copyable nor movable.
51
+ DualRefCounted(const DualRefCounted&) = delete;
52
+ DualRefCounted& operator=(const DualRefCounted&) = delete;
53
+
50
54
  ~DualRefCounted() override = default;
51
55
 
52
56
  GRPC_MUST_USE_RESULT RefCountedPtr<Child> Ref() {
53
57
  IncrementRefCount();
54
58
  return RefCountedPtr<Child>(static_cast<Child*>(this));
55
59
  }
56
-
57
60
  GRPC_MUST_USE_RESULT RefCountedPtr<Child> Ref(const DebugLocation& location,
58
61
  const char* reason) {
59
62
  IncrementRefCount(location, reason);
60
63
  return RefCountedPtr<Child>(static_cast<Child*>(this));
61
64
  }
62
65
 
66
+ template <
67
+ typename Subclass,
68
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
69
+ RefCountedPtr<Subclass> RefAsSubclass() {
70
+ IncrementRefCount();
71
+ return RefCountedPtr<Subclass>(static_cast<Subclass*>(this));
72
+ }
73
+ template <
74
+ typename Subclass,
75
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
76
+ RefCountedPtr<Subclass> RefAsSubclass(const DebugLocation& location,
77
+ const char* reason) {
78
+ IncrementRefCount(location, reason);
79
+ return RefCountedPtr<Subclass>(static_cast<Subclass*>(this));
80
+ }
81
+
63
82
  void Unref() {
64
83
  // Convert strong ref to weak ref.
65
84
  const uint64_t prev_ref_pair =
@@ -120,7 +139,6 @@ class DualRefCounted : public Orphanable {
120
139
  std::memory_order_acq_rel, std::memory_order_acquire));
121
140
  return RefCountedPtr<Child>(static_cast<Child*>(this));
122
141
  }
123
-
124
142
  GRPC_MUST_USE_RESULT RefCountedPtr<Child> RefIfNonZero(
125
143
  const DebugLocation& location, const char* reason) {
126
144
  uint64_t prev_ref_pair = refs_.load(std::memory_order_acquire);
@@ -150,13 +168,28 @@ class DualRefCounted : public Orphanable {
150
168
  IncrementWeakRefCount();
151
169
  return WeakRefCountedPtr<Child>(static_cast<Child*>(this));
152
170
  }
153
-
154
171
  GRPC_MUST_USE_RESULT WeakRefCountedPtr<Child> WeakRef(
155
172
  const DebugLocation& location, const char* reason) {
156
173
  IncrementWeakRefCount(location, reason);
157
174
  return WeakRefCountedPtr<Child>(static_cast<Child*>(this));
158
175
  }
159
176
 
177
+ template <
178
+ typename Subclass,
179
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
180
+ WeakRefCountedPtr<Subclass> WeakRefAsSubclass() {
181
+ IncrementWeakRefCount();
182
+ return WeakRefCountedPtr<Subclass>(static_cast<Subclass*>(this));
183
+ }
184
+ template <
185
+ typename Subclass,
186
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
187
+ WeakRefCountedPtr<Subclass> WeakRefAsSubclass(const DebugLocation& location,
188
+ const char* reason) {
189
+ IncrementWeakRefCount(location, reason);
190
+ return WeakRefCountedPtr<Subclass>(static_cast<Subclass*>(this));
191
+ }
192
+
160
193
  void WeakUnref() {
161
194
  #ifndef NDEBUG
162
195
  // Grab a copy of the trace flag before the atomic change, since we
@@ -207,10 +240,6 @@ class DualRefCounted : public Orphanable {
207
240
  }
208
241
  }
209
242
 
210
- // Not copyable nor movable.
211
- DualRefCounted(const DualRefCounted&) = delete;
212
- DualRefCounted& operator=(const DualRefCounted&) = delete;
213
-
214
243
  protected:
215
244
  // Note: Tracing is a no-op in non-debug builds.
216
245
  explicit DualRefCounted(
@@ -97,6 +97,33 @@ class InternallyRefCounted : public Orphanable {
97
97
  return RefCountedPtr<Child>(static_cast<Child*>(this));
98
98
  }
99
99
 
100
+ template <
101
+ typename Subclass,
102
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
103
+ RefCountedPtr<Subclass> RefAsSubclass() {
104
+ IncrementRefCount();
105
+ return RefCountedPtr<Subclass>(static_cast<Subclass*>(this));
106
+ }
107
+ template <
108
+ typename Subclass,
109
+ std::enable_if_t<std::is_base_of<Child, Subclass>::value, bool> = true>
110
+ RefCountedPtr<Subclass> RefAsSubclass(const DebugLocation& location,
111
+ const char* reason) {
112
+ IncrementRefCount(location, reason);
113
+ return RefCountedPtr<Subclass>(static_cast<Subclass*>(this));
114
+ }
115
+
116
+ GRPC_MUST_USE_RESULT RefCountedPtr<Child> RefIfNonZero() {
117
+ return RefCountedPtr<Child>(refs_.RefIfNonZero() ? static_cast<Child*>(this)
118
+ : nullptr);
119
+ }
120
+ GRPC_MUST_USE_RESULT RefCountedPtr<Child> RefIfNonZero(
121
+ const DebugLocation& location, const char* reason) {
122
+ return RefCountedPtr<Child>(refs_.RefIfNonZero(location, reason)
123
+ ? static_cast<Child*>(this)
124
+ : nullptr);
125
+ }
126
+
100
127
  void Unref() {
101
128
  if (GPR_UNLIKELY(refs_.Unref())) {
102
129
  unref_behavior_(static_cast<Child*>(this));