grpc 1.73.0 → 1.75.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 (786) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +116 -53
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +18 -6
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/client_call.cc +4 -4
  11. data/src/core/call/filter_fusion.h +1230 -0
  12. data/src/core/call/interception_chain.h +7 -11
  13. data/src/core/call/metadata.cc +22 -0
  14. data/src/core/call/metadata.h +24 -2
  15. data/src/core/channelz/channel_trace.cc +213 -115
  16. data/src/core/channelz/channel_trace.h +380 -86
  17. data/src/core/channelz/channelz.cc +274 -192
  18. data/src/core/channelz/channelz.h +224 -72
  19. data/src/core/channelz/channelz_registry.cc +2 -163
  20. data/src/core/channelz/channelz_registry.h +37 -6
  21. data/src/core/channelz/property_list.cc +353 -0
  22. data/src/core/channelz/property_list.h +204 -0
  23. data/src/core/channelz/v2tov1/convert.cc +683 -0
  24. data/src/core/channelz/v2tov1/convert.h +58 -0
  25. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  26. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  27. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  28. data/src/core/channelz/v2tov1/property_list.h +52 -0
  29. data/src/core/channelz/ztrace_collector.h +3 -2
  30. data/src/core/client_channel/backup_poller.cc +17 -2
  31. data/src/core/client_channel/client_channel.cc +17 -28
  32. data/src/core/client_channel/client_channel_filter.cc +24 -33
  33. data/src/core/client_channel/client_channel_filter.h +2 -2
  34. data/src/core/client_channel/client_channel_internal.h +2 -1
  35. data/src/core/client_channel/config_selector.h +8 -2
  36. data/src/core/client_channel/dynamic_filters.cc +5 -6
  37. data/src/core/client_channel/dynamic_filters.h +1 -1
  38. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  39. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  40. data/src/core/client_channel/retry_filter.cc +21 -27
  41. data/src/core/client_channel/retry_filter.h +10 -7
  42. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  43. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  44. data/src/core/client_channel/retry_interceptor.cc +30 -44
  45. data/src/core/client_channel/retry_interceptor.h +18 -17
  46. data/src/core/client_channel/retry_throttle.cc +46 -61
  47. data/src/core/client_channel/retry_throttle.h +17 -39
  48. data/src/core/client_channel/subchannel.cc +57 -25
  49. data/src/core/client_channel/subchannel.h +10 -0
  50. data/src/core/config/config_vars.cc +2 -0
  51. data/src/core/config/core_configuration.cc +4 -1
  52. data/src/core/config/core_configuration.h +23 -0
  53. data/src/core/credentials/call/call_creds_registry.h +125 -0
  54. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  55. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  56. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  57. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  58. data/src/core/credentials/call/jwt_util.cc +70 -0
  59. data/src/core/credentials/call/jwt_util.h +32 -0
  60. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  61. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  62. data/src/core/credentials/transport/channel_creds_registry_init.cc +4 -2
  63. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  64. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -2
  65. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  66. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  67. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  68. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  69. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  70. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  71. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  72. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  73. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  74. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  75. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  76. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  77. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  78. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  79. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  80. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  81. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  82. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  83. data/src/core/ext/filters/http/client_authority_filter.cc +3 -6
  84. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  85. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  86. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  87. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  88. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  89. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  90. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  91. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  93. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +165 -117
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  95. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  96. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  97. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  98. data/src/core/ext/transport/chttp2/transport/flow_control.h +23 -17
  99. data/src/core/ext/transport/chttp2/transport/frame.cc +99 -6
  100. data/src/core/ext/transport/chttp2/transport/frame.h +40 -2
  101. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  104. data/src/core/ext/transport/chttp2/transport/header_assembler.h +290 -0
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  106. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  107. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  108. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  109. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1233 -0
  110. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +712 -0
  111. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  112. data/src/core/ext/transport/chttp2/transport/http2_settings.h +65 -51
  113. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  114. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  115. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  116. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  117. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  118. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +121 -0
  119. data/src/core/ext/transport/chttp2/transport/http2_transport.h +76 -0
  120. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  121. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  122. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  123. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  124. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  125. data/src/core/ext/transport/chttp2/transport/parsing.cc +4 -5
  126. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  127. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +152 -0
  128. data/src/core/ext/transport/chttp2/transport/ping_promise.h +197 -0
  129. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  130. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  131. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  132. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  133. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  134. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  135. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +41 -13
  137. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  138. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  139. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  140. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  141. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  142. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  143. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  144. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  145. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  146. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +1072 -0
  147. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +230 -0
  148. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  149. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  150. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  151. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  152. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  153. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +133 -0
  154. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  155. data/src/core/filter/auth/auth_filters.h +2 -27
  156. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  157. data/src/core/filter/filter_args.h +9 -23
  158. data/src/core/filter/fused_filters.cc +154 -0
  159. data/src/core/handshaker/handshaker.cc +23 -14
  160. data/src/core/handshaker/handshaker.h +3 -0
  161. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  162. data/src/core/handshaker/security/legacy_secure_endpoint.cc +7 -6
  163. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  164. data/src/core/handshaker/security/secure_endpoint.cc +98 -38
  165. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  166. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  167. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  168. data/src/core/lib/channel/channel_args.cc +15 -0
  169. data/src/core/lib/channel/channel_args.h +3 -0
  170. data/src/core/lib/channel/channel_stack.cc +22 -23
  171. data/src/core/lib/channel/channel_stack.h +9 -7
  172. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  173. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  174. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  175. data/src/core/lib/channel/promise_based_filter.h +11 -10
  176. data/src/core/lib/debug/trace_impl.h +0 -1
  177. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  178. data/src/core/lib/event_engine/ares_resolver.h +51 -3
  179. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +12 -6
  180. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -4
  181. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  182. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  183. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  184. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +14 -6
  185. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  186. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  187. data/src/core/lib/event_engine/event_engine.cc +7 -0
  188. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  189. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  190. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +139 -169
  191. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +17 -19
  192. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +90 -131
  193. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +13 -13
  194. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -23
  195. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -23
  196. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  197. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  198. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  199. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +30 -19
  200. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  201. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  202. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  203. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  204. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +147 -94
  205. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  206. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +435 -229
  207. data/src/core/lib/event_engine/posix_engine/posix_engine.h +78 -50
  208. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +46 -38
  209. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  210. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  211. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  212. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  213. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  214. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  215. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  216. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  217. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  218. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +11 -171
  219. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  220. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  221. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  222. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  223. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  224. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  225. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  226. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  227. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  228. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  229. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  230. data/src/core/lib/event_engine/shim.cc +9 -0
  231. data/src/core/lib/event_engine/shim.h +3 -0
  232. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  233. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  234. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  235. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  236. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +6 -1
  237. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  238. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  239. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  240. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  241. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  242. data/src/core/lib/experiments/experiments.cc +165 -99
  243. data/src/core/lib/experiments/experiments.h +65 -52
  244. data/src/core/lib/iomgr/combiner.cc +1 -1
  245. data/src/core/lib/iomgr/endpoint.cc +4 -3
  246. data/src/core/lib/iomgr/endpoint.h +7 -4
  247. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  248. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  249. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  250. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  251. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  252. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  253. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  254. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  255. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  256. data/src/core/lib/iomgr/tcp_posix.cc +15 -9
  257. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  258. data/src/core/lib/promise/activity.h +3 -2
  259. data/src/core/lib/promise/arena_promise.h +23 -7
  260. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  261. data/src/core/lib/promise/detail/promise_like.h +118 -11
  262. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  263. data/src/core/lib/promise/detail/seq_state.h +687 -548
  264. data/src/core/lib/promise/if.h +20 -0
  265. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  266. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  267. data/src/core/lib/promise/loop.h +65 -3
  268. data/src/core/lib/promise/map.h +24 -0
  269. data/src/core/lib/promise/match_promise.h +103 -0
  270. data/src/core/lib/promise/mpsc.cc +425 -0
  271. data/src/core/lib/promise/mpsc.h +490 -0
  272. data/src/core/lib/promise/party.cc +55 -6
  273. data/src/core/lib/promise/party.h +68 -3
  274. data/src/core/lib/promise/poll.h +10 -0
  275. data/src/core/lib/promise/race.h +31 -0
  276. data/src/core/lib/promise/seq.h +4 -1
  277. data/src/core/lib/promise/status_flag.h +7 -0
  278. data/src/core/lib/promise/try_seq.h +4 -1
  279. data/src/core/lib/promise/wait_set.cc +28 -0
  280. data/src/core/lib/promise/wait_set.h +86 -0
  281. data/src/core/lib/resource_quota/arena.h +19 -0
  282. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  283. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  284. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  285. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  286. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  287. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  288. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  289. data/src/core/lib/slice/slice.h +5 -0
  290. data/src/core/lib/surface/call.cc +5 -5
  291. data/src/core/lib/surface/call.h +6 -5
  292. data/src/core/lib/surface/channel_create.cc +88 -13
  293. data/src/core/lib/surface/channel_create.h +4 -0
  294. data/src/core/lib/surface/channel_init.cc +164 -47
  295. data/src/core/lib/surface/channel_init.h +64 -1
  296. data/src/core/lib/surface/completion_queue.cc +2 -4
  297. data/src/core/lib/surface/filter_stack_call.cc +19 -10
  298. data/src/core/lib/surface/init.cc +6 -15
  299. data/src/core/lib/surface/legacy_channel.cc +3 -5
  300. data/src/core/lib/surface/legacy_channel.h +3 -1
  301. data/src/core/lib/surface/version.cc +2 -2
  302. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  303. data/src/core/lib/transport/promise_endpoint.h +307 -0
  304. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  305. data/src/core/load_balancing/delegating_helper.h +2 -3
  306. data/src/core/load_balancing/endpoint_list.cc +29 -2
  307. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  308. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  309. data/src/core/load_balancing/health_check_client.cc +1 -5
  310. data/src/core/load_balancing/lb_policy.h +1 -3
  311. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  312. data/src/core/load_balancing/pick_first/pick_first.cc +15 -5
  313. data/src/core/load_balancing/xds/cds.cc +10 -1
  314. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  315. data/src/core/net/socket_mutator.cc +19 -0
  316. data/src/core/net/socket_mutator.h +25 -0
  317. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  318. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  319. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  320. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  321. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  322. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  323. data/src/core/resolver/xds/xds_config.cc +6 -3
  324. data/src/core/resolver/xds/xds_config.h +9 -4
  325. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -7
  326. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  327. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  328. data/src/core/server/server.cc +84 -13
  329. data/src/core/server/server.h +21 -2
  330. data/src/core/server/server_call_tracer_filter.cc +0 -66
  331. data/src/core/server/server_call_tracer_filter.h +64 -0
  332. data/src/core/server/server_config_selector_filter.cc +1 -1
  333. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  334. data/src/core/service_config/service_config.h +1 -1
  335. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  336. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  337. data/src/core/service_config/service_config_impl.h +1 -1
  338. data/src/core/telemetry/call_tracer.cc +20 -14
  339. data/src/core/telemetry/call_tracer.h +22 -17
  340. data/src/core/telemetry/context_list_entry.cc +38 -0
  341. data/src/core/telemetry/context_list_entry.h +42 -12
  342. data/src/core/telemetry/metrics.h +8 -8
  343. data/src/core/telemetry/stats_data.cc +369 -343
  344. data/src/core/telemetry/stats_data.h +341 -244
  345. data/src/core/telemetry/tcp_tracer.h +1 -1
  346. data/src/core/transport/auth_context.cc +20 -0
  347. data/src/core/transport/auth_context.h +4 -0
  348. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  349. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  350. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  351. data/src/core/tsi/fake_transport_security.cc +17 -0
  352. data/src/core/tsi/ssl_transport_security.cc +205 -32
  353. data/src/core/tsi/ssl_transport_security.h +19 -10
  354. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  355. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  356. data/src/core/tsi/transport_security_grpc.cc +8 -0
  357. data/src/core/tsi/transport_security_grpc.h +15 -0
  358. data/src/core/util/backoff.cc +1 -5
  359. data/src/core/util/backoff.h +1 -0
  360. data/src/core/util/down_cast.h +1 -1
  361. data/src/core/util/function_signature.h +15 -1
  362. data/src/core/util/http_client/httpcli.cc +12 -5
  363. data/src/core/util/http_client/httpcli.h +4 -1
  364. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  365. data/src/core/util/latent_see.cc +178 -146
  366. data/src/core/util/latent_see.h +249 -189
  367. data/src/core/util/log.cc +4 -0
  368. data/src/core/util/memory_usage.h +268 -0
  369. data/src/core/util/per_cpu.cc +2 -0
  370. data/src/core/util/per_cpu.h +7 -0
  371. data/src/core/util/shared_bit_gen.h +20 -0
  372. data/src/core/util/single_set_ptr.h +7 -4
  373. data/src/core/util/upb_utils.h +42 -0
  374. data/src/core/util/uri.cc +3 -2
  375. data/src/core/util/useful.h +144 -2
  376. data/src/core/util/wait_for_single_owner.cc +31 -0
  377. data/src/core/util/wait_for_single_owner.h +24 -0
  378. data/src/core/util/windows/directory_reader.cc +1 -0
  379. data/src/core/util/windows/thd.cc +1 -3
  380. data/src/core/util/work_serializer.cc +1 -1
  381. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  382. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  383. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  384. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  385. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  386. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  387. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  388. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  389. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  390. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  391. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  392. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  393. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  394. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  395. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  396. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  397. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  398. data/src/core/xds/xds_client/xds_client.cc +26 -5
  399. data/src/ruby/ext/grpc/extconf.rb +2 -0
  400. data/src/ruby/ext/grpc/rb_call.c +1 -8
  401. data/src/ruby/ext/grpc/rb_channel.c +70 -557
  402. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  403. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  404. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  405. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  406. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  407. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  408. data/src/ruby/ext/grpc/rb_server.c +31 -50
  409. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  410. data/src/ruby/lib/grpc/version.rb +1 -1
  411. data/src/ruby/spec/core_spec.rb +22 -0
  412. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  413. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  414. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  415. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  416. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  417. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  418. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  419. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  420. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  421. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  422. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  423. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  424. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  425. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  426. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  427. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  428. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  429. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  430. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  431. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  432. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  433. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  434. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  435. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  436. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  437. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  438. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  439. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  440. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  441. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  442. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  443. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  444. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  445. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  446. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  447. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  448. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  449. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  450. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  451. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  452. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  453. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  454. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  455. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  456. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  457. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  458. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  459. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  460. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  461. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  462. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  463. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  464. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  465. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  466. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  467. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  468. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  469. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  470. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  471. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  472. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  473. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  474. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  475. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  476. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  477. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  478. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  479. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  480. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  481. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  482. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  483. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  484. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  485. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  486. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  487. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  488. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  489. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  490. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  491. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  492. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  493. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  494. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  495. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  496. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  497. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  498. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  499. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  500. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  501. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  502. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  503. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  504. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  505. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  506. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  507. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  508. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  509. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  510. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  511. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  512. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  513. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  514. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  515. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  516. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  517. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  518. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  519. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  520. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  521. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  522. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  523. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  524. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  525. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  526. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  527. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  528. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  529. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  530. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  531. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  534. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  535. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  536. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  537. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  538. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  539. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  540. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  541. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  542. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  543. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  544. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  545. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  546. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  547. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  548. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  549. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  550. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  552. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  553. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  554. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  555. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  556. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  557. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  558. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  559. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  560. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  561. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  562. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  563. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  564. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  565. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  566. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  567. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  568. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  569. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  570. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  571. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  572. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  573. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  574. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  575. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  576. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  577. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  578. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  579. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  580. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  581. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  582. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  583. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  584. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  585. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  586. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  587. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  588. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  589. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  590. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  591. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  592. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  593. data/third_party/cares/cares/include/ares.h +925 -460
  594. data/third_party/cares/cares/include/ares_dns.h +86 -71
  595. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  596. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  597. data/third_party/cares/cares/include/ares_version.h +37 -14
  598. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  599. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  600. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  601. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  602. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  603. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  604. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  605. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  606. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  607. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  608. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  609. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  610. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  611. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  612. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  613. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  614. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  615. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  616. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  617. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  618. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  619. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  620. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  621. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  622. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  623. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  624. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  625. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  626. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  627. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  628. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  629. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  630. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  631. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  632. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  633. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  634. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  635. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  636. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  637. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  638. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  639. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  640. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  641. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  642. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  643. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  644. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  645. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  646. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  647. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  648. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  649. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  650. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  651. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  652. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  653. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  654. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  655. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  656. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  657. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  658. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  659. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  660. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  661. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  662. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  663. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  664. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  665. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  666. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  667. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  668. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  669. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  670. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  671. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  672. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  673. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  674. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  675. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  676. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  677. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  678. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  679. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  680. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  681. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  682. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  683. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  684. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  685. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  686. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  687. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  688. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  689. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  690. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  691. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  692. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  693. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  694. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  695. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  696. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  697. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  698. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  699. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  700. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  701. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  702. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  703. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  704. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  705. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  706. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  707. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  708. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  709. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  710. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  711. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  712. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  713. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  714. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  715. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  716. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  717. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  718. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  719. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  720. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  721. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  722. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  723. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  724. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  725. metadata +192 -68
  726. data/src/core/lib/event_engine/forkable.cc +0 -105
  727. data/src/core/lib/event_engine/forkable.h +0 -67
  728. data/src/core/lib/iomgr/python_util.h +0 -46
  729. data/src/core/util/ring_buffer.h +0 -122
  730. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  731. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  732. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  733. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  734. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  735. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  736. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  737. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  738. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  739. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
  740. data/third_party/cares/cares/include/ares_rules.h +0 -125
  741. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  742. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  743. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  744. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  745. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  746. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  747. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  748. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  749. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  750. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  751. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  752. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  753. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  754. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  755. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  756. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  757. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  758. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  759. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  760. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  761. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  762. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  763. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  764. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  765. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  766. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  767. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  768. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  769. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  770. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  771. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  772. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  773. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  774. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  775. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  776. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  777. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  778. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  779. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  780. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  781. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  782. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  783. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  784. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  785. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  786. data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -59,7 +59,8 @@ namespace grpc_core {
59
59
  #if defined(GRPC_CFSTREAM)
60
60
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
61
61
  inline bool IsCallTracerInTransportEnabled() { return true; }
62
- inline bool IsCallv3ClientAuthFilterEnabled() { return false; }
62
+ inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
63
+ inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
63
64
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
64
65
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
65
66
  inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
@@ -68,7 +69,8 @@ inline bool IsErrorFlattenEnabled() { return false; }
68
69
  inline bool IsEventEngineClientEnabled() { return true; }
69
70
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
70
71
  inline bool IsEventEngineDnsEnabled() { return true; }
71
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return false; }
72
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
73
+ inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
72
74
  inline bool IsEventEngineForkEnabled() { return false; }
73
75
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
74
76
  inline bool IsEventEngineListenerEnabled() { return true; }
@@ -79,29 +81,28 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
79
81
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
80
82
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
81
83
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
84
+ inline bool IsFuseFiltersEnabled() { return false; }
82
85
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
83
86
  inline bool IsLocalConnectorSecureEnabled() { return false; }
84
87
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
85
88
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
86
- #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_PINGS_WO_DATA_THROTTLE
87
- inline bool IsMaxPingsWoDataThrottleEnabled() { return true; }
88
89
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
89
90
  inline bool IsMonitoringExperimentEnabled() { return true; }
90
91
  inline bool IsMultipingEnabled() { return false; }
92
+ inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
93
+ inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
91
94
  inline bool IsPollsetAlternativeEnabled() { return false; }
92
- #define GRPC_EXPERIMENT_IS_INCLUDED_POSIX_EE_SKIP_GRPC_INIT
93
- inline bool IsPosixEeSkipGrpcInitEnabled() { return true; }
95
+ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
94
96
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
95
97
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
96
98
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
97
99
  inline bool IsRetryInCallv3Enabled() { return false; }
98
- inline bool IsRqFastRejectEnabled() { return false; }
99
- #define GRPC_EXPERIMENT_IS_INCLUDED_RST_STREAM_FIX
100
- inline bool IsRstStreamFixEnabled() { return true; }
100
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
101
101
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
102
102
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
103
103
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
104
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
104
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
105
+ inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
105
106
  #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
106
107
  inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
107
108
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
@@ -113,7 +114,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
113
114
  #elif defined(GPR_WINDOWS)
114
115
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
115
116
  inline bool IsCallTracerInTransportEnabled() { return true; }
116
- inline bool IsCallv3ClientAuthFilterEnabled() { return false; }
117
+ inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
118
+ inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
117
119
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
118
120
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
119
121
  inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
@@ -122,7 +124,8 @@ inline bool IsErrorFlattenEnabled() { return false; }
122
124
  inline bool IsEventEngineClientEnabled() { return true; }
123
125
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
124
126
  inline bool IsEventEngineDnsEnabled() { return true; }
125
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return false; }
127
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
128
+ inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
126
129
  inline bool IsEventEngineForkEnabled() { return false; }
127
130
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
128
131
  inline bool IsEventEngineListenerEnabled() { return true; }
@@ -133,29 +136,28 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
133
136
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
134
137
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
135
138
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
139
+ inline bool IsFuseFiltersEnabled() { return false; }
136
140
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
137
141
  inline bool IsLocalConnectorSecureEnabled() { return false; }
138
142
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
139
143
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
140
- #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_PINGS_WO_DATA_THROTTLE
141
- inline bool IsMaxPingsWoDataThrottleEnabled() { return true; }
142
144
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
143
145
  inline bool IsMonitoringExperimentEnabled() { return true; }
144
146
  inline bool IsMultipingEnabled() { return false; }
147
+ inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
148
+ inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
145
149
  inline bool IsPollsetAlternativeEnabled() { return false; }
146
- #define GRPC_EXPERIMENT_IS_INCLUDED_POSIX_EE_SKIP_GRPC_INIT
147
- inline bool IsPosixEeSkipGrpcInitEnabled() { return true; }
150
+ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
148
151
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
149
152
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
150
153
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
151
154
  inline bool IsRetryInCallv3Enabled() { return false; }
152
- inline bool IsRqFastRejectEnabled() { return false; }
153
- #define GRPC_EXPERIMENT_IS_INCLUDED_RST_STREAM_FIX
154
- inline bool IsRstStreamFixEnabled() { return true; }
155
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
155
156
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
156
157
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
157
158
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
158
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
159
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
160
+ inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
159
161
  #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
160
162
  inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
161
163
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
@@ -167,7 +169,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
167
169
  #else
168
170
  #define GRPC_EXPERIMENT_IS_INCLUDED_CALL_TRACER_IN_TRANSPORT
169
171
  inline bool IsCallTracerInTransportEnabled() { return true; }
170
- inline bool IsCallv3ClientAuthFilterEnabled() { return false; }
172
+ inline bool IsChannelzUseV2ForV1ApiEnabled() { return false; }
173
+ inline bool IsChannelzUseV2ForV1ServiceEnabled() { return false; }
171
174
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
172
175
  inline bool IsChaoticGoodFramingLayerEnabled() { return true; }
173
176
  inline bool IsChttp2BoundWriteSizeEnabled() { return false; }
@@ -176,7 +179,8 @@ inline bool IsErrorFlattenEnabled() { return false; }
176
179
  inline bool IsEventEngineClientEnabled() { return true; }
177
180
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS
178
181
  inline bool IsEventEngineDnsEnabled() { return true; }
179
- inline bool IsEventEngineDnsNonClientChannelEnabled() { return false; }
182
+ #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_DNS_NON_CLIENT_CHANNEL
183
+ inline bool IsEventEngineDnsNonClientChannelEnabled() { return true; }
180
184
  inline bool IsEventEngineForkEnabled() { return false; }
181
185
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_LISTENER
182
186
  inline bool IsEventEngineListenerEnabled() { return true; }
@@ -187,29 +191,28 @@ inline bool IsEventEngineForAllOtherEndpointsEnabled() { return true; }
187
191
  #define GRPC_EXPERIMENT_IS_INCLUDED_EVENT_ENGINE_SECURE_ENDPOINT
188
192
  inline bool IsEventEngineSecureEndpointEnabled() { return true; }
189
193
  inline bool IsFreeLargeAllocatorEnabled() { return false; }
194
+ inline bool IsFuseFiltersEnabled() { return false; }
190
195
  inline bool IsKeepAlivePingTimerBatchEnabled() { return false; }
191
196
  inline bool IsLocalConnectorSecureEnabled() { return false; }
192
197
  #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_INFLIGHT_PINGS_STRICT_LIMIT
193
198
  inline bool IsMaxInflightPingsStrictLimitEnabled() { return true; }
194
- #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_PINGS_WO_DATA_THROTTLE
195
- inline bool IsMaxPingsWoDataThrottleEnabled() { return true; }
196
199
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
197
200
  inline bool IsMonitoringExperimentEnabled() { return true; }
198
201
  inline bool IsMultipingEnabled() { return false; }
202
+ inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() { return false; }
203
+ inline bool IsPipelinedReadSecureEndpointEnabled() { return false; }
199
204
  inline bool IsPollsetAlternativeEnabled() { return false; }
200
- #define GRPC_EXPERIMENT_IS_INCLUDED_POSIX_EE_SKIP_GRPC_INIT
201
- inline bool IsPosixEeSkipGrpcInitEnabled() { return true; }
205
+ inline bool IsPrioritizeFinishedRequestsEnabled() { return false; }
202
206
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() { return false; }
203
207
  inline bool IsPromiseBasedHttp2ServerTransportEnabled() { return false; }
204
208
  inline bool IsPromiseBasedInprocTransportEnabled() { return false; }
205
209
  inline bool IsRetryInCallv3Enabled() { return false; }
206
- inline bool IsRqFastRejectEnabled() { return false; }
207
- #define GRPC_EXPERIMENT_IS_INCLUDED_RST_STREAM_FIX
208
- inline bool IsRstStreamFixEnabled() { return true; }
210
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() { return false; }
209
211
  inline bool IsScheduleCancellationOverWriteEnabled() { return false; }
210
212
  inline bool IsSecureEndpointOffloadLargeReadsEnabled() { return false; }
211
213
  inline bool IsSecureEndpointOffloadLargeWritesEnabled() { return false; }
212
- inline bool IsServerGlobalCallbacksOwnershipEnabled() { return false; }
214
+ #define GRPC_EXPERIMENT_IS_INCLUDED_SERVER_GLOBAL_CALLBACKS_OWNERSHIP
215
+ inline bool IsServerGlobalCallbacksOwnershipEnabled() { return true; }
213
216
  #define GRPC_EXPERIMENT_IS_INCLUDED_SHARD_GLOBAL_CONNECTION_POOL
214
217
  inline bool IsShardGlobalConnectionPoolEnabled() { return true; }
215
218
  inline bool IsSleepPromiseExecCtxRemovalEnabled() { return false; }
@@ -222,7 +225,8 @@ inline bool IsUnconstrainedMaxQuotaBufferSizeEnabled() { return false; }
222
225
  #else
223
226
  enum ExperimentIds {
224
227
  kExperimentIdCallTracerInTransport,
225
- kExperimentIdCallv3ClientAuthFilter,
228
+ kExperimentIdChannelzUseV2ForV1Api,
229
+ kExperimentIdChannelzUseV2ForV1Service,
226
230
  kExperimentIdChaoticGoodFramingLayer,
227
231
  kExperimentIdChttp2BoundWriteSize,
228
232
  kExperimentIdErrorFlatten,
@@ -235,20 +239,21 @@ enum ExperimentIds {
235
239
  kExperimentIdEventEngineForAllOtherEndpoints,
236
240
  kExperimentIdEventEngineSecureEndpoint,
237
241
  kExperimentIdFreeLargeAllocator,
242
+ kExperimentIdFuseFilters,
238
243
  kExperimentIdKeepAlivePingTimerBatch,
239
244
  kExperimentIdLocalConnectorSecure,
240
245
  kExperimentIdMaxInflightPingsStrictLimit,
241
- kExperimentIdMaxPingsWoDataThrottle,
242
246
  kExperimentIdMonitoringExperiment,
243
247
  kExperimentIdMultiping,
248
+ kExperimentIdPickFirstIgnoreEmptyUpdates,
249
+ kExperimentIdPipelinedReadSecureEndpoint,
244
250
  kExperimentIdPollsetAlternative,
245
- kExperimentIdPosixEeSkipGrpcInit,
251
+ kExperimentIdPrioritizeFinishedRequests,
246
252
  kExperimentIdPromiseBasedHttp2ClientTransport,
247
253
  kExperimentIdPromiseBasedHttp2ServerTransport,
248
254
  kExperimentIdPromiseBasedInprocTransport,
249
255
  kExperimentIdRetryInCallv3,
250
- kExperimentIdRqFastReject,
251
- kExperimentIdRstStreamFix,
256
+ kExperimentIdRrWrrConnectFromRandomIndex,
252
257
  kExperimentIdScheduleCancellationOverWrite,
253
258
  kExperimentIdSecureEndpointOffloadLargeReads,
254
259
  kExperimentIdSecureEndpointOffloadLargeWrites,
@@ -265,9 +270,13 @@ enum ExperimentIds {
265
270
  inline bool IsCallTracerInTransportEnabled() {
266
271
  return IsExperimentEnabled<kExperimentIdCallTracerInTransport>();
267
272
  }
268
- #define GRPC_EXPERIMENT_IS_INCLUDED_CALLV3_CLIENT_AUTH_FILTER
269
- inline bool IsCallv3ClientAuthFilterEnabled() {
270
- return IsExperimentEnabled<kExperimentIdCallv3ClientAuthFilter>();
273
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_API
274
+ inline bool IsChannelzUseV2ForV1ApiEnabled() {
275
+ return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Api>();
276
+ }
277
+ #define GRPC_EXPERIMENT_IS_INCLUDED_CHANNELZ_USE_V2_FOR_V1_SERVICE
278
+ inline bool IsChannelzUseV2ForV1ServiceEnabled() {
279
+ return IsExperimentEnabled<kExperimentIdChannelzUseV2ForV1Service>();
271
280
  }
272
281
  #define GRPC_EXPERIMENT_IS_INCLUDED_CHAOTIC_GOOD_FRAMING_LAYER
273
282
  inline bool IsChaoticGoodFramingLayerEnabled() {
@@ -317,6 +326,10 @@ inline bool IsEventEngineSecureEndpointEnabled() {
317
326
  inline bool IsFreeLargeAllocatorEnabled() {
318
327
  return IsExperimentEnabled<kExperimentIdFreeLargeAllocator>();
319
328
  }
329
+ #define GRPC_EXPERIMENT_IS_INCLUDED_FUSE_FILTERS
330
+ inline bool IsFuseFiltersEnabled() {
331
+ return IsExperimentEnabled<kExperimentIdFuseFilters>();
332
+ }
320
333
  #define GRPC_EXPERIMENT_IS_INCLUDED_KEEP_ALIVE_PING_TIMER_BATCH
321
334
  inline bool IsKeepAlivePingTimerBatchEnabled() {
322
335
  return IsExperimentEnabled<kExperimentIdKeepAlivePingTimerBatch>();
@@ -329,10 +342,6 @@ inline bool IsLocalConnectorSecureEnabled() {
329
342
  inline bool IsMaxInflightPingsStrictLimitEnabled() {
330
343
  return IsExperimentEnabled<kExperimentIdMaxInflightPingsStrictLimit>();
331
344
  }
332
- #define GRPC_EXPERIMENT_IS_INCLUDED_MAX_PINGS_WO_DATA_THROTTLE
333
- inline bool IsMaxPingsWoDataThrottleEnabled() {
334
- return IsExperimentEnabled<kExperimentIdMaxPingsWoDataThrottle>();
335
- }
336
345
  #define GRPC_EXPERIMENT_IS_INCLUDED_MONITORING_EXPERIMENT
337
346
  inline bool IsMonitoringExperimentEnabled() {
338
347
  return IsExperimentEnabled<kExperimentIdMonitoringExperiment>();
@@ -341,13 +350,21 @@ inline bool IsMonitoringExperimentEnabled() {
341
350
  inline bool IsMultipingEnabled() {
342
351
  return IsExperimentEnabled<kExperimentIdMultiping>();
343
352
  }
353
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PICK_FIRST_IGNORE_EMPTY_UPDATES
354
+ inline bool IsPickFirstIgnoreEmptyUpdatesEnabled() {
355
+ return IsExperimentEnabled<kExperimentIdPickFirstIgnoreEmptyUpdates>();
356
+ }
357
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PIPELINED_READ_SECURE_ENDPOINT
358
+ inline bool IsPipelinedReadSecureEndpointEnabled() {
359
+ return IsExperimentEnabled<kExperimentIdPipelinedReadSecureEndpoint>();
360
+ }
344
361
  #define GRPC_EXPERIMENT_IS_INCLUDED_POLLSET_ALTERNATIVE
345
362
  inline bool IsPollsetAlternativeEnabled() {
346
363
  return IsExperimentEnabled<kExperimentIdPollsetAlternative>();
347
364
  }
348
- #define GRPC_EXPERIMENT_IS_INCLUDED_POSIX_EE_SKIP_GRPC_INIT
349
- inline bool IsPosixEeSkipGrpcInitEnabled() {
350
- return IsExperimentEnabled<kExperimentIdPosixEeSkipGrpcInit>();
365
+ #define GRPC_EXPERIMENT_IS_INCLUDED_PRIORITIZE_FINISHED_REQUESTS
366
+ inline bool IsPrioritizeFinishedRequestsEnabled() {
367
+ return IsExperimentEnabled<kExperimentIdPrioritizeFinishedRequests>();
351
368
  }
352
369
  #define GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_HTTP2_CLIENT_TRANSPORT
353
370
  inline bool IsPromiseBasedHttp2ClientTransportEnabled() {
@@ -365,13 +382,9 @@ inline bool IsPromiseBasedInprocTransportEnabled() {
365
382
  inline bool IsRetryInCallv3Enabled() {
366
383
  return IsExperimentEnabled<kExperimentIdRetryInCallv3>();
367
384
  }
368
- #define GRPC_EXPERIMENT_IS_INCLUDED_RQ_FAST_REJECT
369
- inline bool IsRqFastRejectEnabled() {
370
- return IsExperimentEnabled<kExperimentIdRqFastReject>();
371
- }
372
- #define GRPC_EXPERIMENT_IS_INCLUDED_RST_STREAM_FIX
373
- inline bool IsRstStreamFixEnabled() {
374
- return IsExperimentEnabled<kExperimentIdRstStreamFix>();
385
+ #define GRPC_EXPERIMENT_IS_INCLUDED_RR_WRR_CONNECT_FROM_RANDOM_INDEX
386
+ inline bool IsRrWrrConnectFromRandomIndexEnabled() {
387
+ return IsExperimentEnabled<kExperimentIdRrWrrConnectFromRandomIndex>();
375
388
  }
376
389
  #define GRPC_EXPERIMENT_IS_INCLUDED_SCHEDULE_CANCELLATION_OVER_WRITE
377
390
  inline bool IsScheduleCancellationOverWriteEnabled() {
@@ -166,7 +166,7 @@ static void queue_offload(grpc_core::Combiner* lock) {
166
166
  }
167
167
 
168
168
  bool grpc_combiner_continue_exec_ctx() {
169
- GRPC_LATENT_SEE_PARENT_SCOPE("grpc_combiner_continue_exec_ctx");
169
+ GRPC_LATENT_SEE_SCOPE("grpc_combiner_continue_exec_ctx");
170
170
 
171
171
  grpc_core::Combiner* lock =
172
172
  grpc_core::ExecCtx::Get()->combiner_data()->active_combiner;
@@ -25,9 +25,10 @@ void grpc_endpoint_read(grpc_endpoint* ep, grpc_slice_buffer* slices,
25
25
  ep->vtable->read(ep, slices, cb, urgent, min_progress_size);
26
26
  }
27
27
 
28
- void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
29
- grpc_closure* cb, void* arg, int max_frame_size) {
30
- ep->vtable->write(ep, slices, cb, arg, max_frame_size);
28
+ void grpc_endpoint_write(
29
+ grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
30
+ grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) {
31
+ ep->vtable->write(ep, slices, cb, std::move(args));
31
32
  }
32
33
 
33
34
  void grpc_endpoint_add_to_pollset(grpc_endpoint* ep, grpc_pollset* pollset) {
@@ -19,6 +19,7 @@
19
19
  #ifndef GRPC_SRC_CORE_LIB_IOMGR_ENDPOINT_H
20
20
  #define GRPC_SRC_CORE_LIB_IOMGR_ENDPOINT_H
21
21
 
22
+ #include <grpc/event_engine/event_engine.h>
22
23
  #include <grpc/slice.h>
23
24
  #include <grpc/slice_buffer.h>
24
25
  #include <grpc/support/port_platform.h>
@@ -37,8 +38,9 @@ typedef struct grpc_endpoint_vtable grpc_endpoint_vtable;
37
38
  struct grpc_endpoint_vtable {
38
39
  void (*read)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
39
40
  bool urgent, int min_progress_size);
40
- void (*write)(grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
41
- void* arg, int max_frame_size);
41
+ void (*write)(
42
+ grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
43
+ grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args);
42
44
  void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset);
43
45
  void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
44
46
  void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
@@ -79,8 +81,9 @@ int grpc_endpoint_get_fd(grpc_endpoint* ep);
79
81
  // \a max_frame_size. A hint to the endpoint implementation to construct
80
82
  // frames which do not exceed the specified size.
81
83
  //
82
- void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
83
- grpc_closure* cb, void* arg, int max_frame_size);
84
+ void grpc_endpoint_write(
85
+ grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
86
+ grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs arg);
84
87
 
85
88
  // Causes any pending and future read/write callbacks to run immediately with
86
89
  // success==0
@@ -244,8 +244,9 @@ static void CFStreamRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
244
244
  }
245
245
 
246
246
  static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
247
- grpc_closure* cb, void* /*arg*/,
248
- int /*max_frame_size*/) {
247
+ grpc_closure* cb,
248
+ grpc_event_engine::experimental::EventEngine::
249
+ Endpoint::WriteArgs /*args*/) {
249
250
  CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
250
251
  GRPC_TRACE_VLOG(tcp, 2) << "CFStream endpoint:" << ep_impl << " write ("
251
252
  << slices << ", " << cb
@@ -45,6 +45,7 @@
45
45
  #include "absl/strings/str_cat.h"
46
46
  #include "absl/strings/str_format.h"
47
47
  #include "absl/strings/str_join.h"
48
+ #include "src/core/lib/event_engine/shim.h"
48
49
  #include "src/core/lib/experiments/experiments.h"
49
50
  #include "src/core/lib/iomgr/block_annotate.h"
50
51
  #include "src/core/lib/iomgr/ev_epoll1_linux.h"
@@ -333,7 +334,9 @@ static void fork_fd_list_remove_grpc_fd(grpc_fd* fd) {
333
334
 
334
335
  static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
335
336
  grpc_fd* new_fd = nullptr;
336
- if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
337
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled() &&
338
+ !grpc_event_engine::experimental::
339
+ EventEngineExperimentDisabledForPython()) {
337
340
  grpc_fd* new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
338
341
  new_fd->fd = fd;
339
342
  return new_fd;
@@ -415,7 +418,9 @@ static void fd_shutdown(grpc_fd* fd, grpc_error_handle why) {
415
418
 
416
419
  static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
417
420
  const char* reason) {
418
- if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
421
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled() &&
422
+ !grpc_event_engine::experimental::
423
+ EventEngineExperimentDisabledForPython()) {
419
424
  CHECK_NE(release_fd, nullptr);
420
425
  CHECK_EQ(on_done, nullptr);
421
426
  *release_fd = fd->fd;
@@ -38,6 +38,7 @@
38
38
  #include "absl/log/log.h"
39
39
  #include "absl/strings/str_cat.h"
40
40
  #include "absl/strings/str_format.h"
41
+ #include "src/core/lib/event_engine/shim.h"
41
42
  #include "src/core/lib/experiments/experiments.h"
42
43
  #include "src/core/lib/iomgr/block_annotate.h"
43
44
  #include "src/core/lib/iomgr/ev_poll_posix.h"
@@ -378,7 +379,9 @@ static void unref_by(grpc_fd* fd, int n) {
378
379
  }
379
380
 
380
381
  static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
381
- if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
382
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled() &&
383
+ !grpc_event_engine::experimental::
384
+ EventEngineExperimentDisabledForPython()) {
382
385
  GRPC_TRACE_LOG(event_engine, ERROR)
383
386
  << "Creating a wrapped EventEngine grpc_fd with fd:" << fd;
384
387
  grpc_fd* new_fd = static_cast<grpc_fd*>(gpr_malloc(sizeof(grpc_fd)));
@@ -477,7 +480,9 @@ static int fd_wrapped_fd(grpc_fd* fd) {
477
480
 
478
481
  static void fd_orphan(grpc_fd* fd, grpc_closure* on_done, int* release_fd,
479
482
  const char* reason) {
480
- if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
483
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled() &&
484
+ !grpc_event_engine::experimental::
485
+ EventEngineExperimentDisabledForPython()) {
481
486
  CHECK_NE(release_fd, nullptr);
482
487
  CHECK_EQ(on_done, nullptr);
483
488
  *release_fd = fd->fd;
@@ -312,8 +312,9 @@ void EndpointRead(grpc_endpoint* ep, grpc_slice_buffer* slices,
312
312
 
313
313
  // Write the data from slices and invoke the provided closure asynchronously
314
314
  // after the write is complete.
315
- void EndpointWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
316
- grpc_closure* cb, void* arg, int max_frame_size) {
315
+ void EndpointWrite(
316
+ grpc_endpoint* ep, grpc_slice_buffer* slices, grpc_closure* cb,
317
+ grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) {
317
318
  auto* eeep =
318
319
  reinterpret_cast<EventEngineEndpointWrapper::grpc_event_engine_endpoint*>(
319
320
  ep);
@@ -323,10 +324,7 @@ void EndpointWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
323
324
  return;
324
325
  }
325
326
 
326
- EventEngine::Endpoint::WriteArgs write_args;
327
- write_args.SetDeprecatedAndDiscouragedGoogleSpecificPointer(arg);
328
- write_args.set_max_frame_size(max_frame_size);
329
- if (eeep->wrapper->Write(cb, slices, std::move(write_args))) {
327
+ if (eeep->wrapper->Write(cb, slices, std::move(args))) {
330
328
  // Write succeeded immediately. Run the callback inline.
331
329
  eeep->wrapper->FinishPendingWrite(absl::OkStatus());
332
330
  }
@@ -108,23 +108,17 @@ class Combiner;
108
108
  /// since that implies a core re-entry outside of application
109
109
  /// callbacks.
110
110
  ///
111
- class GRPC_DLL ExecCtx : public latent_see::ParentScope {
111
+ class GRPC_DLL ExecCtx {
112
112
  public:
113
113
  /// Default Constructor
114
114
 
115
- ExecCtx()
116
- : latent_see::ParentScope(GRPC_LATENT_SEE_METADATA("ExecCtx")),
117
- flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) {
115
+ ExecCtx() : flags_(GRPC_EXEC_CTX_FLAG_IS_FINISHED) {
118
116
  Fork::IncExecCtxCount();
119
117
  Set(this);
120
118
  }
121
119
 
122
120
  /// Parameterised Constructor
123
- explicit ExecCtx(uintptr_t fl)
124
- : ExecCtx(fl, GRPC_LATENT_SEE_METADATA("ExecCtx")) {}
125
-
126
- explicit ExecCtx(uintptr_t fl, latent_see::Metadata* latent_see_metadata)
127
- : latent_see::ParentScope(latent_see_metadata), flags_(fl) {
121
+ explicit ExecCtx(uintptr_t fl) : flags_(fl) {
128
122
  if (!(GRPC_EXEC_CTX_FLAG_IS_INTERNAL_THREAD & flags_)) {
129
123
  Fork::IncExecCtxCount();
130
124
  }
@@ -16,7 +16,7 @@
16
16
  //
17
17
  //
18
18
 
19
- #include "src/core/lib/iomgr/socket_mutator.h"
19
+ #include "src/core/net/socket_mutator.h"
20
20
 
21
21
  #include <grpc/impl/grpc_types.h>
22
22
  #include <grpc/support/port_platform.h>
@@ -40,9 +40,9 @@
40
40
  #include <grpc/impl/grpc_types.h>
41
41
 
42
42
  #include "src/core/lib/channel/channel_args.h"
43
- #include "src/core/lib/iomgr/socket_mutator.h"
44
43
  #include "src/core/lib/iomgr/socket_utils_posix.h"
45
44
  #include "src/core/lib/resource_quota/resource_quota.h"
45
+ #include "src/core/net/socket_mutator.h"
46
46
  #include "src/core/util/useful.h"
47
47
 
48
48
  namespace {
@@ -30,8 +30,8 @@
30
30
 
31
31
  #include "src/core/lib/iomgr/error.h"
32
32
  #include "src/core/lib/iomgr/resolved_address.h"
33
- #include "src/core/lib/iomgr/socket_mutator.h"
34
33
  #include "src/core/lib/resource_quota/resource_quota.h"
34
+ #include "src/core/net/socket_mutator.h"
35
35
  #include "src/core/util/ref_counted_ptr.h"
36
36
 
37
37
  #ifdef GRPC_LINUX_ERRQUEUE
@@ -44,7 +44,6 @@
44
44
  #include "src/core/lib/iomgr/exec_ctx.h"
45
45
  #include "src/core/lib/iomgr/iomgr_internal.h"
46
46
  #include "src/core/lib/iomgr/sockaddr.h"
47
- #include "src/core/lib/iomgr/socket_mutator.h"
48
47
  #include "src/core/lib/iomgr/socket_utils_posix.h"
49
48
  #include "src/core/lib/iomgr/tcp_client_posix.h"
50
49
  #include "src/core/lib/iomgr/tcp_posix.h"
@@ -52,6 +51,7 @@
52
51
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
53
52
  #include "src/core/lib/iomgr/vsock.h"
54
53
  #include "src/core/lib/slice/slice_internal.h"
54
+ #include "src/core/net/socket_mutator.h"
55
55
  #include "src/core/util/crash.h"
56
56
  #include "src/core/util/status_helper.h"
57
57
  #include "src/core/util/string.h"
@@ -894,7 +894,7 @@ static void update_rcvlowat(grpc_tcp* tcp)
894
894
  #define MAX_READ_IOVEC 64
895
895
  static bool tcp_do_read(grpc_tcp* tcp, grpc_error_handle* error)
896
896
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(tcp->read_mu) {
897
- GRPC_LATENT_SEE_INNER_SCOPE("tcp_do_read");
897
+ GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("tcp_do_read");
898
898
  GRPC_TRACE_LOG(tcp, INFO) << "TCP:" << tcp << " do_read";
899
899
  struct msghdr msg;
900
900
  struct iovec iov[MAX_READ_IOVEC];
@@ -1184,7 +1184,7 @@ static void tcp_read(grpc_endpoint* ep, grpc_slice_buffer* incoming_buffer,
1184
1184
  // of bytes sent.
1185
1185
  ssize_t tcp_send(int fd, const struct msghdr* msg, int* saved_errno,
1186
1186
  int additional_flags = 0) {
1187
- GRPC_LATENT_SEE_INNER_SCOPE("tcp_send");
1187
+ GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("tcp_send");
1188
1188
  ssize_t sent_length;
1189
1189
  do {
1190
1190
  // TODO(klempner): Cork if this is a partial write
@@ -1375,7 +1375,7 @@ struct cmsghdr* process_timestamp(grpc_tcp* tcp, msghdr* msg,
1375
1375
  /// messages from the queue.
1376
1376
  ///
1377
1377
  static bool process_errors(grpc_tcp* tcp) {
1378
- GRPC_LATENT_SEE_INNER_SCOPE("process_errors");
1378
+ GRPC_LATENT_SEE_ALWAYS_ON_SCOPE("process_errors");
1379
1379
  bool processed_err = false;
1380
1380
  struct iovec iov;
1381
1381
  iov.iov_base = nullptr;
@@ -1795,8 +1795,9 @@ static void tcp_handle_write(void* arg /* grpc_tcp */,
1795
1795
  }
1796
1796
  }
1797
1797
 
1798
- static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1799
- grpc_closure* cb, void* arg, int /*max_frame_size*/) {
1798
+ static void tcp_write(
1799
+ grpc_endpoint* ep, grpc_slice_buffer* buf, grpc_closure* cb,
1800
+ grpc_event_engine::experimental::EventEngine::Endpoint::WriteArgs args) {
1800
1801
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1801
1802
  grpc_error_handle error;
1802
1803
  TcpZerocopySendRecord* zerocopy_send_record = nullptr;
@@ -1835,8 +1836,9 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1835
1836
  tcp->outgoing_buffer = buf;
1836
1837
  tcp->outgoing_byte_idx = 0;
1837
1838
  }
1838
- tcp->outgoing_buffer_arg = arg;
1839
- if (arg) {
1839
+ tcp->outgoing_buffer_arg =
1840
+ args.TakeDeprecatedAndDiscouragedGoogleSpecificPointer();
1841
+ if (tcp->outgoing_buffer_arg) {
1840
1842
  CHECK(grpc_event_engine_can_track_errors());
1841
1843
  }
1842
1844
 
@@ -1915,7 +1917,9 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
1915
1917
  grpc_endpoint* grpc_tcp_create(
1916
1918
  grpc_fd* fd, const grpc_event_engine::experimental::EndpointConfig& config,
1917
1919
  absl::string_view peer_string) {
1918
- if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled()) {
1920
+ if (grpc_core::IsEventEngineForAllOtherEndpointsEnabled() &&
1921
+ !grpc_event_engine::experimental::
1922
+ EventEngineExperimentDisabledForPython()) {
1919
1923
  // Create an EventEngine endpoint when creating the transport.
1920
1924
  auto* engine =
1921
1925
  reinterpret_cast<grpc_event_engine::experimental::EventEngine*>(
@@ -1943,7 +1947,9 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1943
1947
  CHECK(!grpc_event_engine::experimental::UsePollsetAlternative())
1944
1948
  << "This function must not be called when the pollset_alternative "
1945
1949
  "experiment is enabled. This is a bug.";
1946
- CHECK(!grpc_core::IsEventEngineForAllOtherEndpointsEnabled())
1950
+ CHECK(
1951
+ !grpc_core::IsEventEngineForAllOtherEndpointsEnabled() ||
1952
+ grpc_event_engine::experimental::EventEngineExperimentDisabledForPython())
1947
1953
  << "The event_engine_for_all_other_endpoints experiment should prevent "
1948
1954
  "this method from being called. This is a bug.";
1949
1955
  grpc_tcp* tcp = new grpc_tcp(options);
@@ -323,8 +323,9 @@ static void on_write(void* tcpp, grpc_error_handle error) {
323
323
 
324
324
  // Initiates a write.
325
325
  static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
326
- grpc_closure* cb, void* /* arg */,
327
- int /* max_frame_size */) {
326
+ grpc_closure* cb,
327
+ grpc_event_engine::experimental::EventEngine::Endpoint::
328
+ WriteArgs /*args*/) {
328
329
  grpc_tcp* tcp = (grpc_tcp*)ep;
329
330
  grpc_winsocket* socket = tcp->socket;
330
331
  grpc_winsocket_callback_info* info = &socket->write_info;
@@ -122,6 +122,7 @@ class Waker {
122
122
  }
123
123
 
124
124
  std::string DebugString() const {
125
+ if (is_unwakeable()) return "<unwakeable>";
125
126
  return absl::StrFormat("Waker{%p, %d}", wakeable_and_arg_.wakeable,
126
127
  wakeable_and_arg_.wakeup_mask);
127
128
  }
@@ -564,7 +565,7 @@ class PromiseActivity final
564
565
  }
565
566
 
566
567
  void WakeupAsync(WakeupMask) final {
567
- GRPC_LATENT_SEE_INNER_SCOPE("PromiseActivity::WakeupAsync");
568
+ GRPC_LATENT_SEE_SCOPE("PromiseActivity::WakeupAsync");
568
569
  wakeup_flow_.Begin(GRPC_LATENT_SEE_METADATA("Activity::Wakeup"));
569
570
  if (!wakeup_scheduled_.exchange(true, std::memory_order_acq_rel)) {
570
571
  // Can't safely run, so ask to run later.
@@ -589,7 +590,7 @@ class PromiseActivity final
589
590
  // In response to Wakeup, run the Promise state machine again until it
590
591
  // settles. Then check for completion, and if we have completed, call on_done.
591
592
  void Step() ABSL_LOCKS_EXCLUDED(mu()) {
592
- GRPC_LATENT_SEE_PARENT_SCOPE("PromiseActivity::Step");
593
+ GRPC_LATENT_SEE_SCOPE("PromiseActivity::Step");
593
594
  wakeup_flow_.End();
594
595
  // Poll the promise until things settle out under a lock.
595
596
  mu()->Lock();