grpc 1.73.0 → 1.74.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 (499) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +38 -17
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  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/interception_chain.h +7 -11
  11. data/src/core/channelz/channel_trace.cc +213 -115
  12. data/src/core/channelz/channel_trace.h +380 -86
  13. data/src/core/channelz/channelz.cc +270 -181
  14. data/src/core/channelz/channelz.h +168 -55
  15. data/src/core/channelz/channelz_registry.cc +2 -1
  16. data/src/core/channelz/channelz_registry.h +24 -0
  17. data/src/core/channelz/property_list.cc +357 -0
  18. data/src/core/channelz/property_list.h +202 -0
  19. data/src/core/channelz/ztrace_collector.h +3 -2
  20. data/src/core/client_channel/backup_poller.cc +17 -2
  21. data/src/core/client_channel/client_channel.cc +17 -28
  22. data/src/core/client_channel/client_channel_filter.cc +19 -29
  23. data/src/core/client_channel/config_selector.h +8 -2
  24. data/src/core/client_channel/dynamic_filters.cc +5 -6
  25. data/src/core/client_channel/dynamic_filters.h +1 -1
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  27. data/src/core/client_channel/retry_filter.cc +21 -27
  28. data/src/core/client_channel/retry_filter.h +10 -7
  29. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  30. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  31. data/src/core/client_channel/retry_interceptor.cc +30 -44
  32. data/src/core/client_channel/retry_interceptor.h +18 -17
  33. data/src/core/client_channel/retry_throttle.cc +46 -61
  34. data/src/core/client_channel/retry_throttle.h +17 -39
  35. data/src/core/client_channel/subchannel.cc +43 -19
  36. data/src/core/client_channel/subchannel.h +8 -0
  37. data/src/core/config/config_vars.cc +2 -0
  38. data/src/core/config/core_configuration.cc +1 -0
  39. data/src/core/config/core_configuration.h +11 -0
  40. data/src/core/credentials/call/call_creds_registry.h +125 -0
  41. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  42. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  43. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  44. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  45. data/src/core/credentials/call/jwt_util.cc +70 -0
  46. data/src/core/credentials/call/jwt_util.h +32 -0
  47. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  48. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  49. data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
  50. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  51. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  54. data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
  55. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  56. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  57. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  58. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  59. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
  60. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  61. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  62. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  63. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
  64. data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
  65. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  67. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  69. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  70. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  71. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  72. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  73. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  74. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  75. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
  76. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  77. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  78. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  79. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  80. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  82. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  83. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  84. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  85. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  86. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
  87. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  88. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  89. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  93. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  94. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  95. data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
  96. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  97. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  98. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  99. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  100. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  101. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  102. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  103. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  104. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  105. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  106. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  107. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  108. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  109. data/src/core/filter/auth/auth_filters.h +0 -25
  110. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  111. data/src/core/filter/filter_args.h +9 -23
  112. data/src/core/handshaker/handshaker.cc +23 -14
  113. data/src/core/handshaker/handshaker.h +3 -0
  114. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  115. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
  116. data/src/core/handshaker/security/secure_endpoint.cc +70 -25
  117. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  118. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  119. data/src/core/lib/channel/channel_args.cc +15 -0
  120. data/src/core/lib/channel/channel_args.h +3 -0
  121. data/src/core/lib/channel/channel_stack.cc +22 -23
  122. data/src/core/lib/channel/channel_stack.h +9 -7
  123. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  124. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  125. data/src/core/lib/channel/promise_based_filter.h +5 -5
  126. data/src/core/lib/debug/trace_impl.h +0 -1
  127. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  128. data/src/core/lib/event_engine/ares_resolver.h +48 -2
  129. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
  130. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
  131. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
  132. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  133. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  134. data/src/core/lib/event_engine/event_engine.cc +7 -0
  135. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  136. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  137. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
  139. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
  140. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
  141. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
  142. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
  143. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  144. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  145. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
  146. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  147. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  148. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
  149. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  150. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
  151. data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
  152. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
  153. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  154. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  155. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  156. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  157. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  158. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  159. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  160. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  161. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  162. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
  163. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  164. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  165. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  166. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  167. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  168. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  169. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  170. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  171. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  172. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  173. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  174. data/src/core/lib/event_engine/shim.cc +9 -0
  175. data/src/core/lib/event_engine/shim.h +3 -0
  176. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  177. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  178. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  179. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  180. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
  181. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  182. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  183. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  184. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  185. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  186. data/src/core/lib/experiments/experiments.cc +45 -93
  187. data/src/core/lib/experiments/experiments.h +21 -51
  188. data/src/core/lib/iomgr/endpoint.cc +4 -3
  189. data/src/core/lib/iomgr/endpoint.h +7 -4
  190. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  191. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  192. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  193. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  194. data/src/core/lib/iomgr/tcp_posix.cc +12 -6
  195. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  196. data/src/core/lib/promise/activity.h +1 -0
  197. data/src/core/lib/promise/arena_promise.h +23 -7
  198. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  199. data/src/core/lib/promise/detail/promise_like.h +118 -11
  200. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  201. data/src/core/lib/promise/detail/seq_state.h +687 -548
  202. data/src/core/lib/promise/if.h +20 -0
  203. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  204. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  205. data/src/core/lib/promise/loop.h +65 -3
  206. data/src/core/lib/promise/map.h +24 -0
  207. data/src/core/lib/promise/match_promise.h +103 -0
  208. data/src/core/lib/promise/mpsc.cc +425 -0
  209. data/src/core/lib/promise/mpsc.h +490 -0
  210. data/src/core/lib/promise/party.cc +50 -1
  211. data/src/core/lib/promise/party.h +66 -1
  212. data/src/core/lib/promise/race.h +31 -0
  213. data/src/core/lib/promise/seq.h +4 -1
  214. data/src/core/lib/promise/status_flag.h +7 -0
  215. data/src/core/lib/promise/try_seq.h +4 -1
  216. data/src/core/lib/promise/wait_set.cc +28 -0
  217. data/src/core/lib/promise/wait_set.h +86 -0
  218. data/src/core/lib/resource_quota/arena.h +19 -0
  219. data/src/core/lib/slice/slice.h +5 -0
  220. data/src/core/lib/surface/channel_create.cc +88 -13
  221. data/src/core/lib/surface/channel_create.h +4 -0
  222. data/src/core/lib/surface/channel_init.cc +164 -47
  223. data/src/core/lib/surface/channel_init.h +64 -1
  224. data/src/core/lib/surface/filter_stack_call.cc +18 -9
  225. data/src/core/lib/surface/init.cc +6 -15
  226. data/src/core/lib/surface/legacy_channel.cc +3 -5
  227. data/src/core/lib/surface/legacy_channel.h +3 -1
  228. data/src/core/lib/surface/version.cc +2 -2
  229. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  230. data/src/core/lib/transport/promise_endpoint.h +307 -0
  231. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  232. data/src/core/load_balancing/delegating_helper.h +2 -3
  233. data/src/core/load_balancing/health_check_client.cc +1 -5
  234. data/src/core/load_balancing/lb_policy.h +1 -3
  235. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  236. data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
  237. data/src/core/load_balancing/xds/cds.cc +10 -1
  238. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  239. data/src/core/resolver/xds/xds_config.cc +6 -3
  240. data/src/core/resolver/xds/xds_config.h +9 -4
  241. data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
  242. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  243. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  244. data/src/core/server/server.cc +83 -12
  245. data/src/core/server/server.h +21 -2
  246. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  247. data/src/core/service_config/service_config.h +1 -1
  248. data/src/core/service_config/service_config_impl.h +1 -1
  249. data/src/core/telemetry/context_list_entry.cc +38 -0
  250. data/src/core/telemetry/context_list_entry.h +42 -12
  251. data/src/core/telemetry/stats_data.cc +233 -207
  252. data/src/core/telemetry/stats_data.h +250 -153
  253. data/src/core/telemetry/tcp_tracer.h +1 -1
  254. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  255. data/src/core/tsi/fake_transport_security.cc +17 -0
  256. data/src/core/tsi/ssl_transport_security.cc +2 -0
  257. data/src/core/tsi/transport_security_grpc.cc +8 -0
  258. data/src/core/tsi/transport_security_grpc.h +15 -0
  259. data/src/core/util/backoff.cc +1 -5
  260. data/src/core/util/backoff.h +1 -0
  261. data/src/core/util/down_cast.h +1 -1
  262. data/src/core/util/function_signature.h +15 -1
  263. data/src/core/util/http_client/httpcli.cc +12 -5
  264. data/src/core/util/http_client/httpcli.h +4 -1
  265. data/src/core/util/latent_see.h +8 -5
  266. data/src/core/util/log.cc +4 -0
  267. data/src/core/util/memory_usage.h +268 -0
  268. data/src/core/util/per_cpu.cc +2 -0
  269. data/src/core/util/per_cpu.h +7 -0
  270. data/src/core/util/shared_bit_gen.h +20 -0
  271. data/src/core/util/single_set_ptr.h +2 -2
  272. data/src/core/util/upb_utils.h +42 -0
  273. data/src/core/util/uri.cc +3 -2
  274. data/src/core/util/useful.h +53 -2
  275. data/src/core/util/wait_for_single_owner.cc +31 -0
  276. data/src/core/util/wait_for_single_owner.h +24 -0
  277. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  278. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  279. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  280. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  281. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  282. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  283. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  284. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  285. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  286. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  287. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  288. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  289. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  290. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  291. data/src/core/xds/xds_client/xds_client.cc +26 -5
  292. data/src/ruby/ext/grpc/extconf.rb +2 -0
  293. data/src/ruby/ext/grpc/rb_call.c +1 -8
  294. data/src/ruby/ext/grpc/rb_channel.c +72 -568
  295. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  296. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  297. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  298. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  299. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  300. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  301. data/src/ruby/ext/grpc/rb_server.c +31 -50
  302. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  303. data/src/ruby/lib/grpc/version.rb +1 -1
  304. data/src/ruby/spec/core_spec.rb +22 -0
  305. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  306. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  307. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  308. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  309. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  310. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  311. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  312. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  313. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  314. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  315. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  316. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  317. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  318. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  319. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  320. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  321. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  322. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  323. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  324. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  325. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  326. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  327. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  328. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  329. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  330. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  331. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  332. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  333. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  334. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  335. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  336. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  337. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  338. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  339. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  340. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  341. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  342. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  343. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  344. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  345. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  346. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  347. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  348. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  349. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  350. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  351. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  352. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  353. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  354. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  355. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  356. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  357. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  358. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  359. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  360. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  361. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  362. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  363. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  364. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  365. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  366. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  367. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  368. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  369. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  370. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  371. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  372. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  373. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  374. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  375. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  376. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  377. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  378. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  379. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  380. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  381. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  382. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  383. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  384. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  385. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  387. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  388. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  389. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  390. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  391. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  392. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  393. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  394. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  395. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  396. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  397. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  398. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  399. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  400. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  401. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  402. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  403. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  404. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  405. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  406. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  407. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  408. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  409. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  410. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  411. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  412. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  413. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  414. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  415. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  416. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  417. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  418. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  419. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  420. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  421. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  422. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  423. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  424. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  425. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  426. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  427. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  428. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  429. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  430. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  431. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  432. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  433. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  434. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  435. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  436. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  437. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  438. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  439. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  440. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  441. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  444. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  445. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  451. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  452. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  453. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  454. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  455. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  456. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  457. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  458. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  460. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  461. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  462. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  463. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  464. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  465. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  466. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  467. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  468. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  469. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  470. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  471. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  472. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  473. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  474. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  475. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  476. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  478. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  481. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  482. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  483. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  484. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  485. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  486. metadata +72 -20
  487. data/src/core/lib/event_engine/forkable.cc +0 -105
  488. data/src/core/lib/event_engine/forkable.h +0 -67
  489. data/src/core/lib/iomgr/python_util.h +0 -46
  490. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  491. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  492. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  493. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  494. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  495. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  496. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  497. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  498. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  499. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07cf788f52a9a910b6a12dbe2d54e1e401ac4c5414dc8e4478fe90b652895eb8
4
- data.tar.gz: f2b63354615c3ac46792b7edee1782fb2b16e424a216c7fe633ecd29542f521c
3
+ metadata.gz: a37331dfeb3e6d6816dae6c9ce4fb96ac360ebbd1b26e6cd106808aacf2e6a7a
4
+ data.tar.gz: cc70d4c68c87151e4e91858a8a6b5790dae8cbfc0504c0c0914b417d7276f332
5
5
  SHA512:
6
- metadata.gz: 934ee00146e4d18596c0e1da434e399fa8c0aaa66f66a6d05c171f24542dc4740bfa742f6d6c780db475dff8354cd942f826b8ffc05bc9b42ef0376100054907
7
- data.tar.gz: 2dc0171450662ac60d2765c6a7d0f03fac8ed8be2bf5ec3a182643990d5ac27698706f15eec796c79b4256e098f37ae5a084e7367eb9bae7d1ecb96e44538221
6
+ metadata.gz: ddf0bff5a722a7c266748efc8cf61d93719de2ec889164b2b736a108b2ab35bebdbcc9e2c53be124c43644c5473d49ba1366bc5e363279dcb0ef383b22d2c1fd
7
+ data.tar.gz: 485b677863777ad8c11f606c7ee080a7cd8555771bb5d19889f89b982c1ad6097d86fd7c5861db63ba1b5bde4661519be44f38a848654645527c107eac10d2e3
data/Makefile CHANGED
@@ -77,7 +77,7 @@ CC_asan = clang
77
77
  CXX_asan = clang++
78
78
  LD_asan = clang++
79
79
  LDXX_asan = clang++
80
- CPPFLAGS_asan = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
80
+ CPPFLAGS_asan = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
81
81
  LDFLAGS_asan = -fsanitize=address
82
82
 
83
83
  VALID_CONFIG_asan-noleaks = 1
@@ -86,7 +86,7 @@ CC_asan-noleaks = clang
86
86
  CXX_asan-noleaks = clang++
87
87
  LD_asan-noleaks = clang++
88
88
  LDXX_asan-noleaks = clang++
89
- CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
89
+ CPPFLAGS_asan-noleaks = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
90
90
  LDFLAGS_asan-noleaks = fsanitize=address
91
91
 
92
92
  VALID_CONFIG_asan-trace-cmp = 1
@@ -95,7 +95,7 @@ CC_asan-trace-cmp = clang
95
95
  CXX_asan-trace-cmp = clang++
96
96
  LD_asan-trace-cmp = clang++
97
97
  LDXX_asan-trace-cmp = clang++
98
- CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
98
+ CPPFLAGS_asan-trace-cmp = -O0 -fsanitize-coverage=edge,trace-pc-guard -fsanitize-coverage=trace-cmp -fsanitize=address -fno-omit-frame-pointer -Wno-unused-command-line-argument
99
99
  LDFLAGS_asan-trace-cmp = -fsanitize=address
100
100
 
101
101
  VALID_CONFIG_c++-compat = 1
@@ -156,7 +156,7 @@ CC_msan = clang
156
156
  CXX_msan = clang++
157
157
  LD_msan = clang++
158
158
  LDXX_msan = clang++
159
- CPPFLAGS_msan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=memory -fsanitize-memory-track-origins -fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie -DGPR_NO_DIRECT_SYSCALLS
159
+ CPPFLAGS_msan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=memory -fsanitize-memory-track-origins -fsanitize-memory-use-after-dtor -fno-omit-frame-pointer -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -Wno-unused-command-line-argument -fPIE -pie
160
160
  LDFLAGS_msan = -stdlib=libc++ -fsanitize=memory -DGTEST_HAS_TR1_TUPLE=0 -DGTEST_USE_OWN_TR1_TUPLE=1 -fPIE -pie $(if $(JENKINS_BUILD),-Wl$(comma)-Ttext-segment=0x7e0000000000,)
161
161
  DEFINES_msan = NDEBUG
162
162
 
@@ -183,7 +183,7 @@ CC_tsan = clang
183
183
  CXX_tsan = clang++
184
184
  LD_tsan = clang++
185
185
  LDXX_tsan = clang++
186
- CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument -DGPR_NO_DIRECT_SYSCALLS
186
+ CPPFLAGS_tsan = -O0 -fsanitize=thread -fno-omit-frame-pointer -Wno-unused-command-line-argument
187
187
  LDFLAGS_tsan = -fsanitize=thread
188
188
  DEFINES_tsan = GRPC_TSAN
189
189
 
@@ -194,7 +194,7 @@ CXX_ubsan = clang++
194
194
  LD_ubsan = clang++
195
195
  LDXX_ubsan = clang++
196
196
  CPPFLAGS_ubsan = -O0 -stdlib=libc++ -fsanitize-coverage=edge,trace-pc-guard -fsanitize=undefined -fno-omit-frame-pointer -Wno-unused-command-line-argument -Wvarargs
197
- LDFLAGS_ubsan = -stdlib=libc++ -fsanitize=undefined,unsigned-integer-overflow
197
+ LDFLAGS_ubsan = -stdlib=libc++ -fsanitize=undefined
198
198
  DEFINES_ubsan = NDEBUG GRPC_UBSAN
199
199
 
200
200
 
@@ -367,8 +367,8 @@ E = @echo
367
367
  Q = @
368
368
  endif
369
369
 
370
- CORE_VERSION = 48.0.0
371
- CPP_VERSION = 1.73.0
370
+ CORE_VERSION = 49.0.0
371
+ CPP_VERSION = 1.74.0
372
372
 
373
373
  CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
374
374
  CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@@ -404,7 +404,7 @@ SHARED_EXT_CORE = dll
404
404
  SHARED_EXT_CPP = dll
405
405
 
406
406
  SHARED_PREFIX =
407
- SHARED_VERSION_CORE = -48
407
+ SHARED_VERSION_CORE = -49
408
408
  SHARED_VERSION_CPP = -1
409
409
  else ifeq ($(SYSTEM),Darwin)
410
410
  EXECUTABLE_SUFFIX =
@@ -684,6 +684,7 @@ LIBGRPC_SRC = \
684
684
  src/core/channelz/channel_trace.cc \
685
685
  src/core/channelz/channelz.cc \
686
686
  src/core/channelz/channelz_registry.cc \
687
+ src/core/channelz/property_list.cc \
687
688
  src/core/client_channel/backup_poller.cc \
688
689
  src/core/client_channel/client_channel.cc \
689
690
  src/core/client_channel/client_channel_factory.cc \
@@ -708,6 +709,7 @@ LIBGRPC_SRC = \
708
709
  src/core/config/config_vars_non_generated.cc \
709
710
  src/core/config/core_configuration.cc \
710
711
  src/core/config/load_config.cc \
712
+ src/core/credentials/call/call_creds_registry_init.cc \
711
713
  src/core/credentials/call/call_creds_util.cc \
712
714
  src/core/credentials/call/composite/composite_call_credentials.cc \
713
715
  src/core/credentials/call/external/aws_external_account_credentials.cc \
@@ -721,6 +723,8 @@ LIBGRPC_SRC = \
721
723
  src/core/credentials/call/jwt/json_token.cc \
722
724
  src/core/credentials/call/jwt/jwt_credentials.cc \
723
725
  src/core/credentials/call/jwt/jwt_verifier.cc \
726
+ src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc \
727
+ src/core/credentials/call/jwt_util.cc \
724
728
  src/core/credentials/call/oauth2/oauth2_credentials.cc \
725
729
  src/core/credentials/call/plugin/plugin_credentials.cc \
726
730
  src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc \
@@ -803,13 +807,19 @@ LIBGRPC_SRC = \
803
807
  src/core/ext/transport/chttp2/transport/hpack_parse_result.cc \
804
808
  src/core/ext/transport/chttp2/transport/hpack_parser.cc \
805
809
  src/core/ext/transport/chttp2/transport/hpack_parser_table.cc \
810
+ src/core/ext/transport/chttp2/transport/http2_client_transport.cc \
806
811
  src/core/ext/transport/chttp2/transport/http2_settings.cc \
812
+ src/core/ext/transport/chttp2/transport/http2_stats_collector.cc \
813
+ src/core/ext/transport/chttp2/transport/http2_transport.cc \
807
814
  src/core/ext/transport/chttp2/transport/huffsyms.cc \
815
+ src/core/ext/transport/chttp2/transport/keepalive.cc \
808
816
  src/core/ext/transport/chttp2/transport/parsing.cc \
809
817
  src/core/ext/transport/chttp2/transport/ping_abuse_policy.cc \
810
818
  src/core/ext/transport/chttp2/transport/ping_callbacks.cc \
819
+ src/core/ext/transport/chttp2/transport/ping_promise.cc \
811
820
  src/core/ext/transport/chttp2/transport/ping_rate_policy.cc \
812
821
  src/core/ext/transport/chttp2/transport/stream_lists.cc \
822
+ src/core/ext/transport/chttp2/transport/transport_common.cc \
813
823
  src/core/ext/transport/chttp2/transport/varint.cc \
814
824
  src/core/ext/transport/chttp2/transport/write_size_policy.cc \
815
825
  src/core/ext/transport/chttp2/transport/writing.cc \
@@ -943,6 +953,9 @@ LIBGRPC_SRC = \
943
953
  src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c \
944
954
  src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c \
945
955
  src/core/ext/upb-gen/google/rpc/status.upb_minitable.c \
956
+ src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c \
957
+ src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c \
958
+ src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c \
946
959
  src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c \
947
960
  src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c \
948
961
  src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c \
@@ -1105,6 +1118,8 @@ LIBGRPC_SRC = \
1105
1118
  src/core/ext/upbdefs-gen/google/protobuf/timestamp.upbdefs.c \
1106
1119
  src/core/ext/upbdefs-gen/google/protobuf/wrappers.upbdefs.c \
1107
1120
  src/core/ext/upbdefs-gen/google/rpc/status.upbdefs.c \
1121
+ src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c \
1122
+ src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c \
1108
1123
  src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c \
1109
1124
  src/core/ext/upbdefs-gen/udpa/annotations/migrate.upbdefs.c \
1110
1125
  src/core/ext/upbdefs-gen/udpa/annotations/security.upbdefs.c \
@@ -1171,11 +1186,12 @@ LIBGRPC_SRC = \
1171
1186
  src/core/lib/event_engine/channel_args_endpoint_config.cc \
1172
1187
  src/core/lib/event_engine/default_event_engine.cc \
1173
1188
  src/core/lib/event_engine/default_event_engine_factory.cc \
1189
+ src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc \
1174
1190
  src/core/lib/event_engine/event_engine.cc \
1175
- src/core/lib/event_engine/forkable.cc \
1176
1191
  src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc \
1177
1192
  src/core/lib/event_engine/posix_engine/ev_poll_posix.cc \
1178
1193
  src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc \
1194
+ src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc \
1179
1195
  src/core/lib/event_engine/posix_engine/internal_errqueue.cc \
1180
1196
  src/core/lib/event_engine/posix_engine/lockfree_event.cc \
1181
1197
  src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc \
@@ -1183,6 +1199,9 @@ LIBGRPC_SRC = \
1183
1199
  src/core/lib/event_engine/posix_engine/posix_engine.cc \
1184
1200
  src/core/lib/event_engine/posix_engine/posix_engine_listener.cc \
1185
1201
  src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc \
1202
+ src/core/lib/event_engine/posix_engine/posix_interface_posix.cc \
1203
+ src/core/lib/event_engine/posix_engine/posix_interface_windows.cc \
1204
+ src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc \
1186
1205
  src/core/lib/event_engine/posix_engine/set_socket_dualstack.cc \
1187
1206
  src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc \
1188
1207
  src/core/lib/event_engine/posix_engine/timer.cc \
@@ -1285,8 +1304,10 @@ LIBGRPC_SRC = \
1285
1304
  src/core/lib/iomgr/wakeup_fd_pipe.cc \
1286
1305
  src/core/lib/iomgr/wakeup_fd_posix.cc \
1287
1306
  src/core/lib/promise/activity.cc \
1307
+ src/core/lib/promise/mpsc.cc \
1288
1308
  src/core/lib/promise/party.cc \
1289
1309
  src/core/lib/promise/sleep.cc \
1310
+ src/core/lib/promise/wait_set.cc \
1290
1311
  src/core/lib/resource_quota/api.cc \
1291
1312
  src/core/lib/resource_quota/arena.cc \
1292
1313
  src/core/lib/resource_quota/connection_quota.cc \
@@ -1332,6 +1353,7 @@ LIBGRPC_SRC = \
1332
1353
  src/core/lib/transport/call_final_info.cc \
1333
1354
  src/core/lib/transport/connectivity_state.cc \
1334
1355
  src/core/lib/transport/error_utils.cc \
1356
+ src/core/lib/transport/promise_endpoint.cc \
1335
1357
  src/core/lib/transport/status_conversion.cc \
1336
1358
  src/core/lib/transport/timeout_encoding.cc \
1337
1359
  src/core/lib/transport/transport.cc \
@@ -1395,6 +1417,7 @@ LIBGRPC_SRC = \
1395
1417
  src/core/service_config/service_config_impl.cc \
1396
1418
  src/core/service_config/service_config_parser.cc \
1397
1419
  src/core/telemetry/call_tracer.cc \
1420
+ src/core/telemetry/context_list_entry.cc \
1398
1421
  src/core/telemetry/default_tcp_tracer.cc \
1399
1422
  src/core/telemetry/histogram_view.cc \
1400
1423
  src/core/telemetry/metrics.cc \
@@ -1491,6 +1514,7 @@ LIBGRPC_SRC = \
1491
1514
  src/core/util/uri.cc \
1492
1515
  src/core/util/uuid_v4.cc \
1493
1516
  src/core/util/validation_errors.cc \
1517
+ src/core/util/wait_for_single_owner.cc \
1494
1518
  src/core/util/windows/cpu.cc \
1495
1519
  src/core/util/windows/directory_reader.cc \
1496
1520
  src/core/util/windows/env.cc \
@@ -1593,13 +1617,12 @@ LIBGRPC_SRC = \
1593
1617
  third_party/abseil-cpp/absl/log/internal/proto.cc \
1594
1618
  third_party/abseil-cpp/absl/log/internal/structured_proto.cc \
1595
1619
  third_party/abseil-cpp/absl/log/internal/vlog_config.cc \
1596
- third_party/abseil-cpp/absl/log/log_entry.cc \
1597
1620
  third_party/abseil-cpp/absl/log/log_sink.cc \
1598
1621
  third_party/abseil-cpp/absl/numeric/int128.cc \
1599
1622
  third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc \
1600
1623
  third_party/abseil-cpp/absl/random/discrete_distribution.cc \
1601
1624
  third_party/abseil-cpp/absl/random/gaussian_distribution.cc \
1602
- third_party/abseil-cpp/absl/random/internal/pool_urbg.cc \
1625
+ third_party/abseil-cpp/absl/random/internal/entropy_pool.cc \
1603
1626
  third_party/abseil-cpp/absl/random/internal/randen.cc \
1604
1627
  third_party/abseil-cpp/absl/random/internal/randen_detect.cc \
1605
1628
  third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc \
@@ -1616,7 +1639,6 @@ LIBGRPC_SRC = \
1616
1639
  third_party/abseil-cpp/absl/strings/charconv.cc \
1617
1640
  third_party/abseil-cpp/absl/strings/cord.cc \
1618
1641
  third_party/abseil-cpp/absl/strings/cord_analysis.cc \
1619
- third_party/abseil-cpp/absl/strings/cord_buffer.cc \
1620
1642
  third_party/abseil-cpp/absl/strings/escaping.cc \
1621
1643
  third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc \
1622
1644
  third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc \
@@ -1677,8 +1699,6 @@ LIBGRPC_SRC = \
1677
1699
  third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc \
1678
1700
  third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc \
1679
1701
  third_party/abseil-cpp/absl/time/time.cc \
1680
- third_party/abseil-cpp/absl/types/bad_optional_access.cc \
1681
- third_party/abseil-cpp/absl/types/bad_variant_access.cc \
1682
1702
  third_party/address_sorting/address_sorting.c \
1683
1703
  third_party/address_sorting/address_sorting_posix.c \
1684
1704
  third_party/address_sorting/address_sorting_windows.c \
@@ -1764,6 +1784,7 @@ PUBLIC_HEADERS_C += \
1764
1784
  include/grpc/byte_buffer_reader.h \
1765
1785
  include/grpc/census.h \
1766
1786
  include/grpc/compression.h \
1787
+ include/grpc/create_channel_from_endpoint.h \
1767
1788
  include/grpc/credentials.h \
1768
1789
  include/grpc/event_engine/endpoint_config.h \
1769
1790
  include/grpc/event_engine/event_engine.h \
@@ -1840,8 +1861,8 @@ $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE): $(LIBGRPC_
1840
1861
  ifeq ($(SYSTEM),Darwin)
1841
1862
  $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -install_name $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) -dynamiclib -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1842
1863
  else
1843
- $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.48 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1844
- $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.48
1864
+ $(Q) $(LDXX) $(LDFLAGS) -L$(LIBDIR)/$(CONFIG) -shared -Wl,-soname,libgrpc.so.49 -o $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBGRPC_OBJS) $(LIBDIR)/$(CONFIG)/libcares.a $(OPENSSL_MERGE_LIBS) $(ZLIB_MERGE_LIBS) $(LDLIBS_SECURE) $(LDLIBS)
1865
+ $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so.49
1845
1866
  $(Q) ln -sf $(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/libgrpc$(SHARED_VERSION_CORE).so
1846
1867
  endif
1847
1868
  endif
@@ -0,0 +1,54 @@
1
+ /*
2
+ *
3
+ * Copyright 2025 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_CREATE_CHANNEL_FROM_ENDPOINT_H
20
+ #define GRPC_CREATE_CHANNEL_FROM_ENDPOINT_H
21
+
22
+ #include <grpc/grpc.h>
23
+ #include <grpc/impl/grpc_types.h>
24
+ #include <grpc/support/port_platform.h>
25
+ #include <stddef.h>
26
+
27
+ #ifdef __cplusplus
28
+ #include <grpc/event_engine/event_engine.h>
29
+
30
+ #include <memory>
31
+ namespace grpc_core::experimental {
32
+
33
+ /**
34
+ * EXPERIMENTAL API - Subject to change
35
+ *
36
+ * This function creates a gRPC channel using a pre-established
37
+ * endpoint from the EventEngine. This API supports both secure and insecure
38
+ * channel credentials.
39
+ *
40
+ * \param endpoint A unique pointer to an EventEngine endpoint representing
41
+ * an established connection.
42
+ * \param creds The channel credentials used to secure the connection.
43
+ * \param args Optional channel arguments to configure the channel behavior.
44
+ */
45
+ grpc_channel* CreateChannelFromEndpoint(
46
+ std::unique_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
47
+ endpoint,
48
+ grpc_channel_credentials* creds, const grpc_channel_args* args);
49
+
50
+ } // namespace grpc_core::experimental
51
+
52
+ #endif // __cplusplus
53
+
54
+ #endif /* GRPC_CREATE_CHANNEL_FROM_ENDPOINT_H */
@@ -206,21 +206,27 @@ GRPCAPI void grpc_call_credentials_release(grpc_call_credentials* creds);
206
206
  this could result in an oauth2 token leak. The security level of the
207
207
  resulting connection is GRPC_PRIVACY_AND_INTEGRITY.
208
208
 
209
- If specified, the supplied call credentials object will be attached to the
210
- returned channel credentials object. The call_credentials object must remain
209
+ If specified, the supplied call credentials objects will be attached to the
210
+ returned channel credentials object. The call_credentials objects must remain
211
211
  valid throughout the lifetime of the returned grpc_channel_credentials
212
- object. It is expected that the call credentials object was generated
212
+ object. It is expected that each call credentials object was generated
213
213
  according to the Application Default Credentials mechanism and asserts the
214
214
  identity of the default service account of the machine. Supplying any other
215
215
  sort of call credential will result in undefined behavior, up to and
216
216
  including the sudden and unexpected failure of RPCs.
217
217
 
218
218
  If nullptr is supplied, the returned channel credentials object will use a
219
- call credentials object based on the Application Default Credentials
219
+ default call credentials object based on the Application Default Credentials
220
220
  mechanism.
221
+
222
+ The caller may choose to create the default credential with a secondary alts
223
+ credentials object to attach to the channel for ALTS connections. If an alts
224
+ credentials object is specified, it will be used if the underlying channel
225
+ type is ALTS.
221
226
  */
222
227
  GRPCAPI grpc_channel_credentials* grpc_google_default_credentials_create(
223
- grpc_call_credentials* call_credentials);
228
+ grpc_call_credentials* call_creds_for_tls,
229
+ grpc_call_credentials* call_creds_for_alts);
224
230
 
225
231
  /** Server certificate config object holds the server's public certificates and
226
232
  associated private keys, as well as any CA certificates needed for client
@@ -23,12 +23,17 @@
23
23
  #include <grpc/support/port_platform.h>
24
24
 
25
25
  #include <bitset>
26
+ #include <cstddef>
26
27
  #include <initializer_list>
28
+ #include <memory>
29
+ #include <optional>
30
+ #include <utility>
27
31
  #include <vector>
28
32
 
29
33
  #include "absl/functional/any_invocable.h"
30
34
  #include "absl/status/status.h"
31
35
  #include "absl/status/statusor.h"
36
+ #include "absl/types/span.h"
32
37
 
33
38
  // TODO(vigneshbabu): Define the Endpoint::Write metrics collection system
34
39
  // TODO(hork): remove all references to the factory methods.
@@ -240,28 +245,40 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
240
245
  size_t key;
241
246
  int64_t value;
242
247
  };
248
+ // It is the responsibility of the caller of WriteEventCallback to make sure
249
+ // that the corresponding endpoint is still valid. HINT: Do NOT offload
250
+ // callbacks onto the EventEngine or other threads.
243
251
  using WriteEventCallback = absl::AnyInvocable<void(
244
252
  WriteEvent, absl::Time, std::vector<WriteMetric>) const>;
245
253
  // A bitmask of the events that the caller is interested in.
246
254
  // Each bit corresponds to an entry in WriteEvent.
247
255
  using WriteEventSet = std::bitset<static_cast<int>(WriteEvent::kCount)>;
256
+
257
+ // A set of metrics that the caller is interested in.
258
+ class MetricsSet {
259
+ public:
260
+ virtual ~MetricsSet() = default;
261
+
262
+ virtual bool IsSet(size_t key) const = 0;
263
+ };
264
+
248
265
  // A sink to receive write events.
249
266
  // The requested metrics are the keys of the metrics that the caller is
250
267
  // interested in. The on_event callback will be called on each event
251
268
  // requested.
252
269
  class WriteEventSink final {
253
270
  public:
254
- WriteEventSink(absl::Span<const size_t> requested_metrics,
271
+ WriteEventSink(std::shared_ptr<MetricsSet> requested_metrics,
255
272
  std::initializer_list<WriteEvent> requested_events,
256
273
  WriteEventCallback on_event)
257
- : requested_metrics_(requested_metrics),
274
+ : requested_metrics_(std::move(requested_metrics)),
258
275
  on_event_(std::move(on_event)) {
259
276
  for (auto event : requested_events) {
260
277
  requested_events_mask_.set(static_cast<int>(event));
261
278
  }
262
279
  }
263
280
 
264
- absl::Span<const size_t> requested_metrics() const {
281
+ const std::shared_ptr<MetricsSet>& requested_metrics() const {
265
282
  return requested_metrics_;
266
283
  }
267
284
 
@@ -273,10 +290,12 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
273
290
  return requested_events_mask_;
274
291
  }
275
292
 
293
+ /// Takes the callback. Ownership is transferred. It is illegal to destroy
294
+ /// the endpoint before this callback is invoked.
276
295
  WriteEventCallback TakeEventCallback() { return std::move(on_event_); }
277
296
 
278
297
  private:
279
- absl::Span<const size_t> requested_metrics_;
298
+ std::shared_ptr<MetricsSet> requested_metrics_;
280
299
  WriteEventSet requested_events_mask_;
281
300
  // The callback to be called on each event.
282
301
  WriteEventCallback on_event_;
@@ -288,10 +307,28 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
288
307
  class WriteArgs final {
289
308
  public:
290
309
  WriteArgs() = default;
310
+
311
+ ~WriteArgs();
312
+
291
313
  WriteArgs(const WriteArgs&) = delete;
292
314
  WriteArgs& operator=(const WriteArgs&) = delete;
293
- WriteArgs(WriteArgs&&) = default;
294
- WriteArgs& operator=(WriteArgs&&) = default;
315
+
316
+ WriteArgs(WriteArgs&& other) noexcept
317
+ : metrics_sink_(std::move(other.metrics_sink_)),
318
+ google_specific_(other.google_specific_),
319
+ max_frame_size_(other.max_frame_size_) {
320
+ other.google_specific_ = nullptr;
321
+ }
322
+
323
+ WriteArgs& operator=(WriteArgs&& other) noexcept {
324
+ if (this != &other) {
325
+ metrics_sink_ = std::move(other.metrics_sink_);
326
+ google_specific_ = other.google_specific_;
327
+ other.google_specific_ = nullptr; // Nullify source
328
+ max_frame_size_ = other.max_frame_size_;
329
+ }
330
+ return *this;
331
+ }
295
332
 
296
333
  // A sink to receive write events.
297
334
  std::optional<WriteEventSink> TakeMetricsSink() {
@@ -314,6 +351,10 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
314
351
  return google_specific_;
315
352
  }
316
353
 
354
+ void* TakeDeprecatedAndDiscouragedGoogleSpecificPointer() {
355
+ return std::exchange(google_specific_, nullptr);
356
+ }
357
+
317
358
  void SetDeprecatedAndDiscouragedGoogleSpecificPointer(void* pointer) {
318
359
  google_specific_ = pointer;
319
360
  }
@@ -333,6 +374,31 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
333
374
  void* google_specific_ = nullptr;
334
375
  int64_t max_frame_size_ = 1024 * 1024;
335
376
  };
377
+
378
+ class TelemetryInfo {
379
+ public:
380
+ virtual ~TelemetryInfo() = default;
381
+
382
+ /// Returns the list of write metrics that the endpoint supports.
383
+ /// The keys are used to identify the metrics in the GetMetricName and
384
+ /// GetMetricKey APIs. The current value of the metric can be queried by
385
+ /// adding a WriteEventSink to the WriteArgs of a Write call.
386
+ virtual std::vector<size_t> AllWriteMetrics() const = 0;
387
+ /// Returns the name of the write metric with the given key.
388
+ /// If the key is not found, returns std::nullopt.
389
+ virtual std::optional<absl::string_view> GetMetricName(
390
+ size_t key) const = 0;
391
+ /// Returns the key of the write metric with the given name.
392
+ /// If the name is not found, returns std::nullopt.
393
+ virtual std::optional<size_t> GetMetricKey(
394
+ absl::string_view name) const = 0;
395
+ /// Returns a MetricsSet with all the keys from \a keys set.
396
+ virtual std::shared_ptr<MetricsSet> GetMetricsSet(
397
+ absl::Span<const size_t> keys) const = 0;
398
+ /// Returns a MetricsSet with all supported keys set.
399
+ virtual std::shared_ptr<MetricsSet> GetFullMetricsSet() const = 0;
400
+ };
401
+
336
402
  /// Writes data out on the connection.
337
403
  ///
338
404
  /// If the write succeeds immediately, it returns true and the
@@ -359,17 +425,8 @@ class EventEngine : public std::enable_shared_from_this<EventEngine>,
359
425
  /// values are expected to remain valid for the life of the Endpoint.
360
426
  virtual const ResolvedAddress& GetPeerAddress() const = 0;
361
427
  virtual const ResolvedAddress& GetLocalAddress() const = 0;
362
- /// Returns the list of write metrics that the endpoint supports.
363
- /// The keys are used to identify the metrics in the GetMetricName and
364
- /// GetMetricKey APIs. The current value of the metric can be queried by
365
- /// adding a WriteEventSink to the WriteArgs of a Write call.
366
- virtual std::vector<size_t> AllWriteMetrics() = 0;
367
- /// Returns the name of the write metric with the given key.
368
- /// If the key is not found, returns std::nullopt.
369
- virtual std::optional<absl::string_view> GetMetricName(size_t key) = 0;
370
- /// Returns the key of the write metric with the given name.
371
- /// If the name is not found, returns std::nullopt.
372
- virtual std::optional<size_t> GetMetricKey(absl::string_view name) = 0;
428
+
429
+ virtual std::shared_ptr<TelemetryInfo> GetTelemetryInfo() const = 0;
373
430
  };
374
431
 
375
432
  /// Called when a new connection is established.
@@ -56,6 +56,25 @@ GRPCAPI void grpc_server_add_channel_from_fd(grpc_server* server, int fd,
56
56
 
57
57
  #ifdef __cplusplus
58
58
  }
59
- #endif
59
+
60
+ namespace grpc_core::experimental {
61
+
62
+ /**
63
+ * EXPERIMENTAL API - Subject to change
64
+ *
65
+ * This function creates a gRPC channel using a raw file descriptor
66
+ * that represents an open socket. This API supports both secure and insecure
67
+ * channel credentials.
68
+ *
69
+ * \param fd The file descriptor representing the connection.
70
+ * \param creds The channel credentials used to secure the connection.
71
+ * \param args Optional channel arguments to configure the channel behavior.
72
+ */
73
+ grpc_channel* CreateChannelFromFd(int fd, grpc_channel_credentials* creds,
74
+ const grpc_channel_args* args);
75
+
76
+ } // namespace grpc_core::experimental
77
+
78
+ #endif // __cplusplus
60
79
 
61
80
  #endif /* GRPC_GRPC_POSIX_H */
@@ -123,10 +123,8 @@
123
123
  /** Channel arg to override the http2 :scheme header. String valued. */
124
124
  #define GRPC_ARG_HTTP2_SCHEME "grpc.http2_scheme"
125
125
  /** How many pings can the client send before needing to send a data/header
126
- frame? (0 indicates that an infinite number of pings can be sent without
127
- sending a data frame or header frame).
128
- If experiment "max_pings_wo_data_throttle" is enabled, instead of pings being
129
- completely blocked, they are throttled.
126
+ frame, without being throttled? (0 indicates that an infinite number of pings
127
+ can be sent without sending a data frame or header frame).
130
128
  * Integer valued. Defaults to 2. */
131
129
  #define GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA \
132
130
  "grpc.http2.max_pings_without_data"
@@ -6,6 +6,7 @@ header "byte_buffer.h"
6
6
  header "byte_buffer_reader.h"
7
7
  header "census.h"
8
8
  header "compression.h"
9
+ header "create_channel_from_endpoint.h"
9
10
  header "credentials.h"
10
11
  header "fork.h"
11
12
  header "grpc.h"
@@ -47,6 +47,30 @@ class Json {
47
47
  kArray, // Use array() for payload.
48
48
  };
49
49
 
50
+ template <typename Sink>
51
+ friend void AbslStringify(Sink& sink, Type type) {
52
+ switch (type) {
53
+ case Type::kNull:
54
+ sink.Append("null");
55
+ break;
56
+ case Type::kBoolean:
57
+ sink.Append("boolean");
58
+ break;
59
+ case Type::kNumber:
60
+ sink.Append("number");
61
+ break;
62
+ case Type::kString:
63
+ sink.Append("string");
64
+ break;
65
+ case Type::kObject:
66
+ sink.Append("object");
67
+ break;
68
+ case Type::kArray:
69
+ sink.Append("array");
70
+ break;
71
+ }
72
+ }
73
+
50
74
  using Object = std::map<std::string, Json>;
51
75
  using Array = std::vector<Json>;
52
76
 
@@ -163,11 +163,8 @@ class InterceptionChainBuilder final {
163
163
  RefCountedPtr<CallDestination>>;
164
164
 
165
165
  explicit InterceptionChainBuilder(ChannelArgs args,
166
- const Blackboard* old_blackboard = nullptr,
167
- Blackboard* new_blackboard = nullptr)
168
- : args_(std::move(args)),
169
- old_blackboard_(old_blackboard),
170
- new_blackboard_(new_blackboard) {}
166
+ const Blackboard* blackboard = nullptr)
167
+ : args_(std::move(args)), blackboard_(blackboard) {}
171
168
 
172
169
  // Add a filter with a `Call` class as an inner member.
173
170
  // Call class must be one compatible with the filters described in
@@ -176,8 +173,8 @@ class InterceptionChainBuilder final {
176
173
  absl::enable_if_t<sizeof(typename T::Call) != 0, InterceptionChainBuilder&>
177
174
  Add() {
178
175
  if (!status_.ok()) return *this;
179
- auto filter = T::Create(args_, {FilterInstanceId(FilterTypeId<T>()),
180
- old_blackboard_, new_blackboard_});
176
+ auto filter =
177
+ T::Create(args_, {FilterInstanceId(FilterTypeId<T>()), blackboard_});
181
178
  if (!filter.ok()) {
182
179
  status_ = filter.status();
183
180
  return *this;
@@ -193,8 +190,8 @@ class InterceptionChainBuilder final {
193
190
  absl::enable_if_t<std::is_base_of<Interceptor, T>::value,
194
191
  InterceptionChainBuilder&>
195
192
  Add() {
196
- AddInterceptor(T::Create(args_, {FilterInstanceId(FilterTypeId<T>()),
197
- old_blackboard_, new_blackboard_}));
193
+ AddInterceptor(
194
+ T::Create(args_, {FilterInstanceId(FilterTypeId<T>()), blackboard_}));
198
195
  return *this;
199
196
  };
200
197
 
@@ -273,8 +270,7 @@ class InterceptionChainBuilder final {
273
270
  absl::Status status_;
274
271
  std::map<size_t, size_t> filter_type_counts_;
275
272
  static std::atomic<size_t> next_filter_id_;
276
- const Blackboard* old_blackboard_ = nullptr;
277
- Blackboard* new_blackboard_ = nullptr;
273
+ const Blackboard* blackboard_ = nullptr;
278
274
  };
279
275
 
280
276
  } // namespace grpc_core