grpc 1.75.0.pre1 → 1.76.0.pre1

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 (387) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +18 -5
  3. data/include/grpc/credentials.h +21 -5
  4. data/src/core/call/call_filters.cc +4 -4
  5. data/src/core/call/call_filters.h +36 -36
  6. data/src/core/call/call_spine.h +27 -27
  7. data/src/core/call/client_call.cc +6 -5
  8. data/src/core/call/filter_fusion.h +5 -5
  9. data/src/core/call/metadata_batch.h +3 -3
  10. data/src/core/call/security_context.cc +1 -1
  11. data/src/core/call/server_call.cc +4 -4
  12. data/src/core/call/server_call.h +1 -1
  13. data/src/core/channelz/channelz.cc +12 -18
  14. data/src/core/channelz/channelz.h +32 -16
  15. data/src/core/channelz/channelz_registry.h +11 -0
  16. data/src/core/channelz/property_list.cc +18 -0
  17. data/src/core/channelz/property_list.h +10 -1
  18. data/src/core/channelz/text_encode.cc +66 -0
  19. data/src/core/channelz/text_encode.h +29 -0
  20. data/src/core/channelz/v2tov1/convert.cc +11 -0
  21. data/src/core/channelz/v2tov1/legacy_api.cc +15 -8
  22. data/src/core/channelz/ztrace_collector.h +247 -86
  23. data/src/core/client_channel/backup_poller.cc +5 -6
  24. data/src/core/client_channel/client_channel.cc +20 -13
  25. data/src/core/client_channel/client_channel_filter.cc +53 -45
  26. data/src/core/client_channel/client_channel_filter.h +2 -2
  27. data/src/core/client_channel/client_channel_internal.h +3 -4
  28. data/src/core/client_channel/config_selector.h +3 -3
  29. data/src/core/client_channel/dynamic_filters.cc +3 -3
  30. data/src/core/client_channel/global_subchannel_pool.cc +0 -37
  31. data/src/core/client_channel/global_subchannel_pool.h +0 -27
  32. data/src/core/client_channel/load_balanced_call_destination.cc +7 -7
  33. data/src/core/client_channel/local_subchannel_pool.cc +4 -4
  34. data/src/core/client_channel/retry_filter.h +3 -3
  35. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  36. data/src/core/client_channel/subchannel.cc +8 -8
  37. data/src/core/client_channel/subchannel_stream_client.cc +4 -4
  38. data/src/core/config/config_vars.cc +30 -1
  39. data/src/core/config/config_vars.h +21 -0
  40. data/src/core/config/core_configuration.cc +5 -5
  41. data/src/core/config/core_configuration.h +7 -7
  42. data/src/core/config/load_config.cc +12 -0
  43. data/src/core/config/load_config.h +2 -0
  44. data/src/core/credentials/call/call_credentials.h +2 -2
  45. data/src/core/credentials/call/call_creds_util.cc +4 -3
  46. data/src/core/credentials/call/composite/composite_call_credentials.cc +4 -4
  47. data/src/core/credentials/call/external/aws_external_account_credentials.cc +3 -3
  48. data/src/core/credentials/call/external/external_account_credentials.cc +1 -1
  49. data/src/core/credentials/call/external/url_external_account_credentials.cc +1 -1
  50. data/src/core/credentials/call/iam/iam_credentials.cc +4 -4
  51. data/src/core/credentials/call/jwt/json_token.cc +3 -3
  52. data/src/core/credentials/call/jwt/jwt_credentials.cc +2 -2
  53. data/src/core/credentials/call/jwt/jwt_verifier.cc +14 -13
  54. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +20 -12
  55. data/src/core/credentials/call/plugin/plugin_credentials.cc +2 -2
  56. data/src/core/credentials/transport/alts/alts_credentials.cc +4 -4
  57. data/src/core/credentials/transport/alts/alts_security_connector.cc +14 -12
  58. data/src/core/credentials/transport/alts/grpc_alts_credentials_client_options.cc +22 -2
  59. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.cc +10 -1
  60. data/src/core/credentials/transport/alts/grpc_alts_credentials_options.h +31 -0
  61. data/src/core/credentials/transport/alts/grpc_alts_credentials_server_options.cc +8 -3
  62. data/src/core/credentials/transport/composite/composite_channel_credentials.cc +5 -5
  63. data/src/core/credentials/transport/fake/fake_security_connector.cc +2 -2
  64. data/src/core/credentials/transport/google_default/google_default_credentials.cc +78 -28
  65. data/src/core/credentials/transport/insecure/insecure_security_connector.cc +3 -3
  66. data/src/core/credentials/transport/local/local_security_connector.cc +8 -8
  67. data/src/core/credentials/transport/security_connector.cc +5 -5
  68. data/src/core/credentials/transport/ssl/ssl_credentials.cc +12 -12
  69. data/src/core/credentials/transport/ssl/ssl_credentials.h +2 -2
  70. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +3 -3
  71. data/src/core/credentials/transport/tls/certificate_provider_registry.cc +2 -2
  72. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +24 -24
  73. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +5 -5
  74. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +2 -2
  75. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +2 -2
  76. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.h +2 -2
  77. data/src/core/credentials/transport/tls/grpc_tls_credentials_options.cc +17 -17
  78. data/src/core/credentials/transport/tls/ssl_utils.cc +14 -9
  79. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -2
  80. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -11
  81. data/src/core/credentials/transport/transport_credentials.cc +2 -2
  82. data/src/core/credentials/transport/transport_credentials.h +2 -2
  83. data/src/core/credentials/transport/xds/xds_credentials.cc +5 -5
  84. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +2 -0
  85. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +1 -1
  86. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  87. data/src/core/ext/filters/http/message_compress/compression_filter.h +3 -3
  88. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -7
  89. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -2
  90. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -9
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +10 -7
  92. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  93. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +6 -6
  94. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +96 -88
  95. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  96. data/src/core/ext/transport/chttp2/transport/flow_control.h +12 -7
  97. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +60 -0
  98. data/src/core/ext/transport/chttp2/transport/frame.cc +32 -10
  99. data/src/core/ext/transport/chttp2/transport/frame.h +16 -2
  100. data/src/core/ext/transport/chttp2/transport/frame_data.cc +2 -2
  101. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -4
  102. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -2
  103. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -2
  104. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +3 -3
  105. data/src/core/ext/transport/chttp2/transport/header_assembler.h +28 -12
  106. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -2
  107. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +4 -2
  108. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +8 -8
  109. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +2 -2
  110. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +2 -2
  111. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -27
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
  114. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +543 -366
  115. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +198 -277
  116. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +3 -0
  117. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +11 -0
  118. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +179 -0
  119. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +51 -23
  120. data/src/core/ext/transport/chttp2/transport/http2_transport.h +13 -6
  121. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +115 -71
  122. data/src/core/ext/transport/chttp2/transport/internal.h +6 -14
  123. data/src/core/ext/transport/chttp2/transport/message_assembler.h +7 -7
  124. data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -15
  125. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +2 -2
  126. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +62 -26
  127. data/src/core/ext/transport/chttp2/transport/ping_promise.h +58 -22
  128. data/src/core/ext/transport/chttp2/transport/stream.h +207 -0
  129. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +328 -187
  130. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +7 -7
  131. data/src/core/ext/transport/chttp2/transport/transport_common.cc +17 -1
  132. data/src/core/ext/transport/chttp2/transport/transport_common.h +52 -0
  133. data/src/core/ext/transport/chttp2/transport/varint.h +2 -2
  134. data/src/core/ext/transport/chttp2/transport/writable_streams.h +181 -79
  135. data/src/core/ext/transport/chttp2/transport/write_size_policy.cc +2 -2
  136. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -3
  137. data/src/core/ext/transport/inproc/inproc_transport.cc +1 -1
  138. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +3 -3
  139. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +740 -0
  140. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +218 -0
  141. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +46 -0
  142. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +87 -55
  143. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +23 -21
  144. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.c +80 -0
  145. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/channelz.upbdefs.h +47 -0
  146. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.c +129 -0
  147. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/service.upbdefs.h +72 -0
  148. data/src/core/filter/auth/server_auth_filter.cc +2 -2
  149. data/src/core/handshaker/handshaker.cc +3 -3
  150. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +2 -2
  151. data/src/core/handshaker/security/legacy_secure_endpoint.cc +2 -2
  152. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +31 -8
  153. data/src/core/handshaker/security/secure_endpoint.cc +16 -6
  154. data/src/core/handshaker/security/security_handshaker.cc +3 -3
  155. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -2
  156. data/src/core/lib/channel/channel_stack.cc +8 -5
  157. data/src/core/lib/channel/channel_stack.h +3 -0
  158. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -0
  159. data/src/core/lib/channel/connected_channel.cc +2 -2
  160. data/src/core/lib/channel/promise_based_filter.cc +69 -64
  161. data/src/core/lib/channel/promise_based_filter.h +16 -15
  162. data/src/core/lib/compression/compression_internal.cc +2 -2
  163. data/src/core/lib/compression/message_compress.cc +7 -7
  164. data/src/core/lib/event_engine/ares_resolver.cc +22 -20
  165. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -2
  166. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +2 -2
  167. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.h +2 -2
  168. data/src/core/lib/event_engine/extensions/channelz.h +2 -2
  169. data/src/core/lib/event_engine/extensions/supports_fd.h +5 -5
  170. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +8 -8
  171. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +10 -10
  172. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +2 -2
  173. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +23 -22
  174. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
  175. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +168 -170
  176. data/src/core/lib/event_engine/posix_engine/posix_engine.h +33 -54
  177. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -3
  178. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +5 -5
  179. data/src/core/lib/event_engine/posix_engine/posix_interface.h +1 -1
  180. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1 -1
  181. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +3 -3
  182. data/src/core/lib/event_engine/resolved_address.cc +3 -3
  183. data/src/core/lib/event_engine/shim.cc +8 -11
  184. data/src/core/lib/event_engine/shim.h +2 -1
  185. data/src/core/lib/event_engine/slice.cc +2 -2
  186. data/src/core/lib/event_engine/tcp_socket_utils.cc +11 -11
  187. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +7 -7
  188. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +31 -31
  189. data/src/core/lib/event_engine/windows/iocp.cc +10 -10
  190. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  191. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -11
  192. data/src/core/lib/event_engine/windows/windows_engine.cc +16 -14
  193. data/src/core/lib/event_engine/windows/windows_listener.cc +7 -7
  194. data/src/core/lib/experiments/experiments.cc +105 -18
  195. data/src/core/lib/experiments/experiments.h +43 -11
  196. data/src/core/lib/iomgr/call_combiner.cc +3 -3
  197. data/src/core/lib/iomgr/endpoint_cfstream.cc +6 -6
  198. data/src/core/lib/iomgr/endpoint_pair_posix.cc +5 -5
  199. data/src/core/lib/iomgr/endpoint_pair_windows.cc +15 -14
  200. data/src/core/lib/iomgr/ev_epoll1_linux.cc +15 -15
  201. data/src/core/lib/iomgr/ev_poll_posix.cc +11 -11
  202. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -4
  203. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +1 -1
  204. data/src/core/lib/iomgr/iocp_windows.cc +8 -8
  205. data/src/core/lib/iomgr/iomgr_windows.cc +3 -3
  206. data/src/core/lib/iomgr/lockfree_event.cc +2 -2
  207. data/src/core/lib/iomgr/polling_entity.cc +3 -3
  208. data/src/core/lib/iomgr/socket_utils_common_posix.cc +2 -2
  209. data/src/core/lib/iomgr/socket_windows.cc +4 -4
  210. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -4
  211. data/src/core/lib/iomgr/tcp_client_windows.cc +4 -4
  212. data/src/core/lib/iomgr/tcp_posix.cc +42 -42
  213. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  214. data/src/core/lib/iomgr/tcp_server.h +7 -0
  215. data/src/core/lib/iomgr/tcp_server_posix.cc +47 -27
  216. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  217. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -5
  218. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  219. data/src/core/lib/iomgr/tcp_server_windows.cc +68 -29
  220. data/src/core/lib/iomgr/tcp_windows.cc +7 -7
  221. data/src/core/lib/iomgr/timer_generic.cc +2 -2
  222. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  223. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  224. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -2
  225. data/src/core/lib/promise/activity.cc +2 -2
  226. data/src/core/lib/promise/activity.h +6 -6
  227. data/src/core/lib/promise/context.h +2 -2
  228. data/src/core/lib/promise/detail/join_state.h +9 -9
  229. data/src/core/lib/promise/detail/seq_state.h +13 -13
  230. data/src/core/lib/promise/detail/status.h +2 -2
  231. data/src/core/lib/promise/for_each.h +5 -5
  232. data/src/core/lib/promise/interceptor_list.h +2 -2
  233. data/src/core/lib/promise/latch.h +7 -7
  234. data/src/core/lib/promise/mpsc.cc +26 -26
  235. data/src/core/lib/promise/mpsc.h +2 -2
  236. data/src/core/lib/promise/observable.h +4 -4
  237. data/src/core/lib/promise/party.cc +32 -25
  238. data/src/core/lib/promise/party.h +16 -19
  239. data/src/core/lib/promise/pipe.h +15 -15
  240. data/src/core/lib/promise/poll.h +5 -4
  241. data/src/core/lib/promise/promise.h +0 -2
  242. data/src/core/lib/promise/sleep.cc +3 -1
  243. data/src/core/lib/promise/status_flag.h +7 -7
  244. data/src/core/lib/promise/try_join.h +2 -2
  245. data/src/core/lib/promise/try_seq.h +2 -2
  246. data/src/core/lib/resource_quota/arena.h +15 -2
  247. data/src/core/lib/resource_quota/connection_quota.cc +9 -7
  248. data/src/core/lib/resource_quota/memory_quota.cc +45 -24
  249. data/src/core/lib/resource_quota/memory_quota.h +48 -16
  250. data/src/core/lib/resource_quota/telemetry.h +54 -0
  251. data/src/core/lib/resource_quota/thread_quota.cc +2 -2
  252. data/src/core/lib/resource_tracker/resource_tracker.cc +33 -0
  253. data/src/core/lib/resource_tracker/resource_tracker.h +46 -0
  254. data/src/core/lib/security/authorization/audit_logging.cc +5 -5
  255. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +2 -2
  256. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  257. data/src/core/lib/surface/byte_buffer_reader.cc +2 -2
  258. data/src/core/lib/surface/call.cc +16 -14
  259. data/src/core/lib/surface/call.h +1 -1
  260. data/src/core/lib/surface/call_utils.cc +2 -2
  261. data/src/core/lib/surface/call_utils.h +2 -2
  262. data/src/core/lib/surface/channel.cc +4 -4
  263. data/src/core/lib/surface/channel_create.cc +10 -6
  264. data/src/core/lib/surface/channel_init.cc +80 -23
  265. data/src/core/lib/surface/channel_init.h +26 -11
  266. data/src/core/lib/surface/completion_queue.cc +17 -16
  267. data/src/core/lib/surface/completion_queue_factory.cc +7 -7
  268. data/src/core/lib/surface/connection_context.h +45 -2
  269. data/src/core/lib/surface/filter_stack_call.cc +12 -23
  270. data/src/core/lib/surface/filter_stack_call.h +3 -4
  271. data/src/core/lib/surface/legacy_channel.cc +7 -7
  272. data/src/core/lib/surface/validate_metadata.h +2 -2
  273. data/src/core/lib/surface/version.cc +2 -2
  274. data/src/core/lib/transport/bdp_estimator.cc +2 -2
  275. data/src/core/lib/transport/bdp_estimator.h +3 -3
  276. data/src/core/lib/transport/promise_endpoint.cc +3 -3
  277. data/src/core/lib/transport/promise_endpoint.h +8 -8
  278. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  279. data/src/core/load_balancing/child_policy_handler.cc +4 -4
  280. data/src/core/load_balancing/endpoint_list.cc +2 -2
  281. data/src/core/load_balancing/grpclb/grpclb.cc +24 -24
  282. data/src/core/load_balancing/health_check_client.cc +4 -4
  283. data/src/core/load_balancing/health_check_client_internal.h +2 -2
  284. data/src/core/load_balancing/lb_policy_registry.cc +2 -2
  285. data/src/core/load_balancing/oob_backend_metric.cc +4 -4
  286. data/src/core/load_balancing/oob_backend_metric_internal.h +2 -2
  287. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  288. data/src/core/load_balancing/pick_first/pick_first.cc +14 -14
  289. data/src/core/load_balancing/priority/priority.cc +23 -24
  290. data/src/core/load_balancing/ring_hash/ring_hash.cc +3 -3
  291. data/src/core/load_balancing/rls/rls.cc +13 -13
  292. data/src/core/load_balancing/round_robin/round_robin.cc +9 -9
  293. data/src/core/load_balancing/weighted_round_robin/static_stride_scheduler.cc +3 -3
  294. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +33 -26
  295. data/src/core/load_balancing/weighted_target/weighted_target.cc +5 -5
  296. data/src/core/load_balancing/xds/cds.cc +76 -32
  297. data/src/core/load_balancing/xds/xds_cluster_impl.cc +3 -3
  298. data/src/core/load_balancing/xds/xds_override_host.cc +4 -4
  299. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  300. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +33 -33
  301. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -10
  302. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -3
  303. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +2 -2
  304. data/src/core/resolver/endpoint_addresses.cc +3 -3
  305. data/src/core/resolver/endpoint_addresses.h +3 -0
  306. data/src/core/resolver/fake/fake_resolver.cc +2 -2
  307. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +41 -54
  308. data/src/core/resolver/polling_resolver.cc +3 -3
  309. data/src/core/resolver/resolver_registry.cc +5 -4
  310. data/src/core/resolver/xds/xds_dependency_manager.cc +5 -5
  311. data/src/core/resolver/xds/xds_resolver.cc +9 -9
  312. data/src/core/server/server.cc +38 -38
  313. data/src/core/server/server_call_tracer_filter.h +4 -4
  314. data/src/core/server/server_config_selector_filter.cc +2 -2
  315. data/src/core/server/xds_server_config_fetcher.cc +9 -8
  316. data/src/core/service_config/service_config_impl.h +2 -2
  317. data/src/core/telemetry/call_tracer.cc +39 -49
  318. data/src/core/telemetry/call_tracer.h +199 -22
  319. data/src/core/telemetry/histogram.h +205 -0
  320. data/src/core/telemetry/instrument.cc +719 -0
  321. data/src/core/telemetry/instrument.h +932 -0
  322. data/src/core/telemetry/metrics.cc +13 -5
  323. data/src/core/telemetry/metrics.h +3 -1
  324. data/src/core/telemetry/stats_data.cc +0 -19
  325. data/src/core/telemetry/stats_data.h +0 -19
  326. data/src/core/transport/auth_context.cc +2 -2
  327. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +78 -45
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +1 -0
  329. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +3 -3
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +39 -31
  331. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +3 -3
  332. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +3 -3
  333. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +7 -7
  334. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
  335. data/src/core/tsi/fake_transport_security.cc +4 -4
  336. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +4 -4
  337. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +9 -9
  338. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +3 -3
  339. data/src/core/tsi/ssl_transport_security.cc +26 -25
  340. data/src/core/tsi/ssl_transport_security_utils.cc +9 -9
  341. data/src/core/util/chunked_vector.h +4 -4
  342. data/src/core/util/event_log.cc +2 -2
  343. data/src/core/util/gcp_metadata_query.cc +2 -2
  344. data/src/core/util/grpc_check.cc +22 -0
  345. data/src/core/util/grpc_check.h +103 -0
  346. data/src/core/util/http_client/httpcli.cc +3 -3
  347. data/src/core/util/http_client/parser.cc +4 -4
  348. data/src/core/util/latent_see.h +7 -4
  349. data/src/core/util/lru_cache.h +4 -4
  350. data/src/core/util/memory_usage.h +16 -0
  351. data/src/core/util/posix/directory_reader.cc +3 -2
  352. data/src/core/util/posix/sync.cc +24 -24
  353. data/src/core/util/postmortem_emit.cc +52 -0
  354. data/src/core/util/postmortem_emit.h +30 -0
  355. data/src/core/util/ref_counted_ptr.h +5 -0
  356. data/src/core/util/trie_lookup.h +170 -0
  357. data/src/core/util/unique_ptr_with_bitset.h +5 -5
  358. data/src/core/xds/grpc/xds_bootstrap_grpc.h +6 -1
  359. data/src/core/xds/grpc/xds_certificate_provider.cc +3 -3
  360. data/src/core/xds/grpc/xds_client_grpc.cc +34 -15
  361. data/src/core/xds/grpc/xds_client_grpc.h +4 -1
  362. data/src/core/xds/grpc/xds_cluster_parser.cc +2 -2
  363. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  364. data/src/core/xds/grpc/xds_endpoint_parser.cc +2 -2
  365. data/src/core/xds/grpc/xds_http_filter_registry.cc +4 -3
  366. data/src/core/xds/grpc/xds_listener_parser.cc +3 -3
  367. data/src/core/xds/grpc/xds_matcher.cc +277 -0
  368. data/src/core/xds/grpc/xds_matcher.h +432 -0
  369. data/src/core/xds/grpc/xds_matcher_action.cc +47 -0
  370. data/src/core/xds/grpc/xds_matcher_action.h +48 -0
  371. data/src/core/xds/grpc/xds_matcher_context.cc +29 -0
  372. data/src/core/xds/grpc/xds_matcher_context.h +46 -0
  373. data/src/core/xds/grpc/xds_matcher_input.cc +79 -0
  374. data/src/core/xds/grpc/xds_matcher_input.h +105 -0
  375. data/src/core/xds/grpc/xds_matcher_parse.cc +356 -0
  376. data/src/core/xds/grpc/xds_matcher_parse.h +39 -0
  377. data/src/core/xds/grpc/xds_metadata.cc +4 -3
  378. data/src/core/xds/grpc/xds_route_config_parser.cc +6 -6
  379. data/src/core/xds/grpc/xds_routing.cc +3 -3
  380. data/src/core/xds/grpc/xds_transport_grpc.cc +10 -10
  381. data/src/core/xds/xds_client/lrs_client.cc +6 -6
  382. data/src/core/xds/xds_client/xds_client.cc +9 -9
  383. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  384. data/src/ruby/lib/grpc/version.rb +1 -1
  385. data/third_party/abseil-cpp/absl/container/internal/node_slot_policy.h +95 -0
  386. data/third_party/abseil-cpp/absl/container/node_hash_map.h +687 -0
  387. metadata +37 -2
@@ -31,6 +31,9 @@
31
31
  namespace grpc_core {
32
32
 
33
33
  std::optional<Http2SettingsFrame> Http2SettingsManager::MaybeSendUpdate() {
34
+ if (!IsPreviousSettingsPromiseResolved()) {
35
+ return std::nullopt;
36
+ }
34
37
  switch (update_state_) {
35
38
  case UpdateState::kSending:
36
39
  return std::nullopt;
@@ -22,6 +22,7 @@
22
22
 
23
23
  #include <cstdint>
24
24
  #include <optional>
25
+ #include <queue>
25
26
 
26
27
  #include "absl/functional/function_ref.h"
27
28
  #include "absl/strings/string_view.h"
@@ -29,6 +30,7 @@
29
30
  #include "src/core/ext/transport/chttp2/transport/frame.h"
30
31
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
31
32
  #include "src/core/ext/transport/chttp2/transport/http2_status.h"
33
+ #include "src/core/lib/channel/channel_args.h"
32
34
  #include "src/core/util/useful.h"
33
35
 
34
36
  namespace grpc_core {
@@ -80,6 +82,13 @@ class Http2SettingsManager {
80
82
  // This function is not idempotent.
81
83
  GRPC_MUST_USE_RESULT bool AckLastSend();
82
84
 
85
+ GRPC_MUST_USE_RESULT bool IsPreviousSettingsPromiseResolved() const {
86
+ return did_previous_settings_promise_resolve_;
87
+ }
88
+ void SetPreviousSettingsPromiseResolved(const bool value) {
89
+ did_previous_settings_promise_resolve_ = value;
90
+ }
91
+
83
92
  private:
84
93
  struct CountUpdates {
85
94
  http2::Http2ErrorCode IsUpdatePermitted(const uint16_t setting_id,
@@ -135,6 +144,8 @@ class Http2SettingsManager {
135
144
  Http2Settings local_;
136
145
  Http2Settings sent_;
137
146
  Http2Settings acked_;
147
+
148
+ bool did_previous_settings_promise_resolve_ = true;
138
149
  };
139
150
 
140
151
  } // namespace grpc_core
@@ -0,0 +1,179 @@
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_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
20
+ #define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+ #include <stdint.h>
24
+
25
+ #include <cstdint>
26
+ #include <optional>
27
+ #include <queue>
28
+
29
+ #include "absl/functional/function_ref.h"
30
+ #include "absl/strings/string_view.h"
31
+ #include "src/core/channelz/property_list.h"
32
+ #include "src/core/ext/transport/chttp2/transport/frame.h"
33
+ #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
34
+ #include "src/core/ext/transport/chttp2/transport/http2_settings_manager.h"
35
+ #include "src/core/ext/transport/chttp2/transport/http2_status.h"
36
+ #include "src/core/lib/channel/channel_args.h"
37
+ #include "src/core/lib/promise/race.h"
38
+ #include "src/core/lib/promise/sleep.h"
39
+ #include "src/core/lib/promise/try_seq.h"
40
+ #include "src/core/util/grpc_check.h"
41
+ #include "src/core/util/time.h"
42
+ #include "src/core/util/useful.h"
43
+ namespace grpc_core {
44
+
45
+ // Timeout for getting an ack back on settings changes
46
+ #define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
47
+
48
+ #define GRPC_SETTINGS_TIMEOUT_DLOG DLOG(INFO)
49
+
50
+ // This class can only be used only from a promise based HTTP2 transports
51
+ // general_party_ .
52
+ // This class is designed with the assumption that only 1 SETTINGS frame will be
53
+ // in flight at a time. And we do not send a second SETTINGS frame till we
54
+ // receive and process the SETTINGS ACK.
55
+ class SettingsTimeoutManager {
56
+ public:
57
+ // Assumption : This would be set only once in the life of the transport.
58
+ inline void SetSettingsTimeout(const ChannelArgs& channel_args,
59
+ const Duration keepalive_timeout) {
60
+ timeout_ =
61
+ channel_args.GetDurationFromIntMillis(GRPC_ARG_SETTINGS_TIMEOUT)
62
+ .value_or(std::max(keepalive_timeout * 2, Duration::Minutes(1)));
63
+ }
64
+
65
+ // To be called when a promise based Transport receives an a SETTINGS ACK
66
+ // frame.
67
+ inline void OnSettingsAckReceived() { RecordReceivedAck(); }
68
+
69
+ // This returns a promise which must be spawned on transports general party.
70
+ // This must be spawned soon after the transport sends a SETTINGS frame on the
71
+ // endpoint.
72
+ // If we don't get an ACK before timeout, the caller MUST close the transport.
73
+ auto WaitForSettingsTimeout() {
74
+ GRPC_SETTINGS_TIMEOUT_DLOG
75
+ << "SettingsTimeoutManager::WaitForSettingsTimeout Factory";
76
+ StartSettingsTimeoutTimer();
77
+ // TODO(tjagtap) : [PH2][P1] : Make this a ref counted class and manage the
78
+ // lifetime
79
+ return AssertResultType<absl::Status>(
80
+ Race(
81
+ [this]() -> Poll<absl::Status> {
82
+ GRPC_SETTINGS_TIMEOUT_DLOG
83
+ << "SettingsTimeoutManager::WaitForSettingsTimeout Race";
84
+ // This Promise will "win" the race if we receive the SETTINGS
85
+ // ACK from the peer within the timeout time.
86
+ if (DidReceiveAck()) {
87
+ GRPC_DCHECK(
88
+ sent_time_ +
89
+ (timeout_ *
90
+ 1.1 /* 10% grace time for this promise to be scheduled*/) >
91
+ Timestamp::Now())
92
+ << "Should have timed out";
93
+ RemoveReceivedAck();
94
+ return absl::OkStatus();
95
+ }
96
+ AddWaitingForAck();
97
+ return Pending{};
98
+ },
99
+ // This promise will "Win" the Race if timeout is crossed and we did
100
+ // not receive the ACK. The transport must close when this happens.
101
+ TrySeq(Sleep(timeout_), [sent_time = sent_time_,
102
+ timeout = timeout_]() {
103
+ GRPC_SETTINGS_TIMEOUT_DLOG
104
+ << "SettingsTimeoutManager::WaitForSettingsTimeout Timeout"
105
+ " triggered. Transport will close. Sent Time : "
106
+ << sent_time << " Timeout Time : " << (sent_time + timeout)
107
+ << " Current Time " << Timestamp::Now();
108
+ return absl::CancelledError(
109
+ std::string(RFC9113::kSettingsTimeout));
110
+ })));
111
+ }
112
+
113
+ private:
114
+ inline void StartSettingsTimeoutTimer() {
115
+ GRPC_SETTINGS_TIMEOUT_DLOG
116
+ << "SettingsTimeoutManager::StartSettingsTimeoutTimer "
117
+ "did_register_waker_ "
118
+ << did_register_waker_
119
+ << " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
120
+ GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
121
+ GRPC_DCHECK(!did_register_waker_);
122
+ sent_time_ = Timestamp::Now();
123
+ }
124
+ inline bool DidReceiveAck() {
125
+ GRPC_SETTINGS_TIMEOUT_DLOG
126
+ << "SettingsTimeoutManager::DidReceiveAck did_register_waker_ "
127
+ << did_register_waker_
128
+ << " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
129
+ return number_of_acks_unprocessed_ > 0;
130
+ }
131
+ inline void AddWaitingForAck() {
132
+ GRPC_SETTINGS_TIMEOUT_DLOG
133
+ << "SettingsTimeoutManager::AddWaitingForAck did_register_waker_ "
134
+ << did_register_waker_
135
+ << " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
136
+ if (!did_register_waker_) {
137
+ GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
138
+ waker_ = GetContext<Activity>()->MakeNonOwningWaker();
139
+ did_register_waker_ = true;
140
+ }
141
+ GRPC_DCHECK(did_register_waker_);
142
+ }
143
+ inline void RecordReceivedAck() {
144
+ GRPC_SETTINGS_TIMEOUT_DLOG
145
+ << "SettingsTimeoutManager::RecordReceivedAck did_register_waker_ "
146
+ << did_register_waker_
147
+ << " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
148
+ GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
149
+ ++number_of_acks_unprocessed_;
150
+ if (did_register_waker_) {
151
+ // It is possible that we receive the ACK before WaitForSettingsTimeout is
152
+ // scheduled. That is why we do this inside an if.
153
+ waker_.Wakeup();
154
+ did_register_waker_ = false;
155
+ }
156
+ GRPC_DCHECK(!did_register_waker_);
157
+ }
158
+ inline void RemoveReceivedAck() {
159
+ GRPC_SETTINGS_TIMEOUT_DLOG
160
+ << "SettingsTimeoutManager::RemoveReceivedAck did_register_waker_ "
161
+ << did_register_waker_
162
+ << " number_of_acks_unprocessed_ : " << number_of_acks_unprocessed_;
163
+ --number_of_acks_unprocessed_;
164
+ GRPC_DCHECK_EQ(number_of_acks_unprocessed_, 0);
165
+ GRPC_DCHECK(!did_register_waker_);
166
+ }
167
+
168
+ Duration timeout_;
169
+ // We don't actually use this for the timeout. We are just keeping this as
170
+ // book keeping for better debuggability.
171
+ Timestamp sent_time_ = Timestamp::InfFuture();
172
+ Waker waker_;
173
+ bool did_register_waker_ = false;
174
+ int number_of_acks_unprocessed_ = 0;
175
+ };
176
+
177
+ } // namespace grpc_core
178
+
179
+ #endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_HTTP2_SETTINGS_PROMISES_H
@@ -23,6 +23,8 @@
23
23
 
24
24
  #include "src/core/call/call_spine.h"
25
25
  #include "src/core/call/metadata_info.h"
26
+ #include "src/core/channelz/channelz.h"
27
+ #include "src/core/ext/transport/chttp2/transport/flow_control.h"
26
28
  #include "src/core/ext/transport/chttp2/transport/frame.h"
27
29
  #include "src/core/lib/promise/mpsc.h"
28
30
  #include "src/core/lib/promise/party.h"
@@ -52,69 +54,95 @@ void InitLocalSettings(Http2Settings& settings, const bool is_client) {
52
54
  }
53
55
 
54
56
  void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
55
- Http2Settings& settings,
57
+ Http2Settings& local_settings,
58
+ chttp2::TransportFlowControl& flow_control,
56
59
  const bool is_client) {
57
60
  if (channel_args.Contains(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)) {
58
- settings.SetHeaderTableSize(
61
+ local_settings.SetHeaderTableSize(
59
62
  channel_args.GetInt(GRPC_ARG_HTTP2_HPACK_TABLE_SIZE_DECODER)
60
63
  .value_or(-1));
61
64
  }
62
65
 
63
66
  if (channel_args.Contains(GRPC_ARG_MAX_CONCURRENT_STREAMS)) {
64
67
  if (!is_client) {
65
- settings.SetMaxConcurrentStreams(
68
+ local_settings.SetMaxConcurrentStreams(
66
69
  channel_args.GetInt(GRPC_ARG_MAX_CONCURRENT_STREAMS).value_or(-1));
67
70
  } else {
68
71
  // We do not allow the channel arg to alter our 0 setting for
69
- // MAX_CONCURRENT_STREAMS for clients because we dont support PUSH_PROMISE
72
+ // MAX_CONCURRENT_STREAMS for clients because we don't support
73
+ // PUSH_PROMISE
70
74
  LOG(WARNING) << "ChannelArg GRPC_ARG_MAX_CONCURRENT_STREAMS is not "
71
75
  "available on clients";
72
76
  }
73
77
  }
74
78
 
75
79
  if (channel_args.Contains(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)) {
76
- settings.SetInitialWindowSize(
77
- channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES)
78
- .value_or(-1));
79
- // TODO(tjagtap) [PH2][P2] : Also set this for flow control.
80
- // Refer to read_channel_args() in chttp2_transport.cc for more details.
80
+ int value =
81
+ channel_args.GetInt(GRPC_ARG_HTTP2_STREAM_LOOKAHEAD_BYTES).value_or(-1);
82
+ if (value >= 0) {
83
+ local_settings.SetInitialWindowSize(value);
84
+ flow_control.set_target_initial_window_size(value);
85
+ }
81
86
  }
82
87
 
83
- settings.SetMaxHeaderListSize(GetHardLimitFromChannelArgs(channel_args));
88
+ local_settings.SetMaxHeaderListSize(
89
+ GetHardLimitFromChannelArgs(channel_args));
84
90
 
85
91
  if (channel_args.Contains(GRPC_ARG_HTTP2_MAX_FRAME_SIZE)) {
86
- settings.SetMaxFrameSize(
92
+ local_settings.SetMaxFrameSize(
87
93
  channel_args.GetInt(GRPC_ARG_HTTP2_MAX_FRAME_SIZE).value_or(-1));
88
94
  }
89
95
 
90
96
  if (channel_args
91
97
  .GetBool(GRPC_ARG_EXPERIMENTAL_HTTP2_PREFERRED_CRYPTO_FRAME_SIZE)
92
98
  .value_or(false)) {
93
- settings.SetPreferredReceiveCryptoMessageSize(INT_MAX);
99
+ local_settings.SetPreferredReceiveCryptoMessageSize(INT_MAX);
94
100
  }
95
101
 
96
102
  if (channel_args.Contains(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY)) {
97
- settings.SetAllowTrueBinaryMetadata(
103
+ local_settings.SetAllowTrueBinaryMetadata(
98
104
  channel_args.GetInt(GRPC_ARG_HTTP2_ENABLE_TRUE_BINARY).value_or(-1) !=
99
105
  0);
100
106
  }
101
107
 
102
- settings.SetAllowSecurityFrame(
108
+ local_settings.SetAllowSecurityFrame(
103
109
  channel_args.GetBool(GRPC_ARG_SECURITY_FRAME_ALLOWED).value_or(false));
104
110
 
105
111
  GRPC_HTTP2_COMMON_DLOG
106
112
  << "Http2Settings: {"
107
- << "header_table_size: " << settings.header_table_size()
108
- << ", max_concurrent_streams: " << settings.max_concurrent_streams()
109
- << ", initial_window_size: " << settings.initial_window_size()
110
- << ", max_frame_size: " << settings.max_frame_size()
111
- << ", max_header_list_size: " << settings.max_header_list_size()
113
+ << "header_table_size: " << local_settings.header_table_size()
114
+ << ", max_concurrent_streams: " << local_settings.max_concurrent_streams()
115
+ << ", initial_window_size: " << local_settings.initial_window_size()
116
+ << ", max_frame_size: " << local_settings.max_frame_size()
117
+ << ", max_header_list_size: " << local_settings.max_header_list_size()
112
118
  << ", preferred_receive_crypto_message_size: "
113
- << settings.preferred_receive_crypto_message_size()
114
- << ", enable_push: " << settings.enable_push()
119
+ << local_settings.preferred_receive_crypto_message_size()
120
+ << ", enable_push: " << local_settings.enable_push()
115
121
  << ", allow_true_binary_metadata: "
116
- << settings.allow_true_binary_metadata()
117
- << ", allow_security_frame: " << settings.allow_security_frame() << "}";
122
+ << local_settings.allow_true_binary_metadata()
123
+ << ", allow_security_frame: " << local_settings.allow_security_frame()
124
+ << "}";
125
+ }
126
+
127
+ RefCountedPtr<channelz::SocketNode> CreateChannelzSocketNode(
128
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
129
+ event_engine_endpoint,
130
+ const ChannelArgs& args) {
131
+ if (args.GetBool(GRPC_ARG_ENABLE_CHANNELZ)
132
+ .value_or(GRPC_ENABLE_CHANNELZ_DEFAULT)) {
133
+ auto local_addr = grpc_event_engine::experimental::ResolvedAddressToString(
134
+ event_engine_endpoint->GetLocalAddress());
135
+ auto peer_addr = grpc_event_engine::experimental::ResolvedAddressToString(
136
+ event_engine_endpoint->GetPeerAddress());
137
+ GRPC_HTTP2_COMMON_DLOG << "CreateChannelzSocketNode: local_addr: "
138
+ << local_addr.value_or("unknown")
139
+ << " peer_addr: " << peer_addr.value_or("unknown");
140
+ return MakeRefCounted<channelz::SocketNode>(
141
+ local_addr.value_or("unknown"), peer_addr.value_or("unknown"),
142
+ absl::StrCat("http2", " ", peer_addr.value_or("unknown")),
143
+ args.GetObjectRef<channelz::SocketNode::Security>());
144
+ }
145
+ return nullptr;
118
146
  }
119
147
 
120
148
  } // namespace http2
@@ -24,8 +24,11 @@
24
24
 
25
25
  #include "src/core/call/call_spine.h"
26
26
  #include "src/core/call/metadata_info.h"
27
+ #include "src/core/channelz/channelz.h"
28
+ #include "src/core/ext/transport/chttp2/transport/flow_control.h"
27
29
  #include "src/core/ext/transport/chttp2/transport/frame.h"
28
30
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
31
+ #include "src/core/lib/event_engine/tcp_socket_utils.h"
29
32
  #include "src/core/lib/promise/mpsc.h"
30
33
  #include "src/core/lib/promise/party.h"
31
34
  #include "src/core/lib/transport/promise_endpoint.h"
@@ -49,12 +52,9 @@ namespace http2 {
49
52
  #define GRPC_HTTP2_COMMON_DLOG \
50
53
  DLOG_IF(INFO, GRPC_TRACE_FLAG_ENABLED(http2_ph2_transport))
51
54
 
52
- // Timeout for getting an ack back on settings changes
53
- #define GRPC_ARG_SETTINGS_TIMEOUT "grpc.http2.settings_timeout"
54
-
55
- // TODO(akshitpatel) : [PH2][P2] : Choose appropriate size later.
56
- constexpr int kMpscSize = 10;
55
+ // TODO(akshitpatel) : [PH2][P4] : Choose appropriate size later.
57
56
  constexpr uint32_t kStreamQueueSize = /*1 MB*/ 1024u * 1024u;
57
+ constexpr uint32_t kMaxWriteSize = /*10 MB*/ 10u * 1024u * 1024u;
58
58
 
59
59
  enum class HttpStreamState : uint8_t {
60
60
  // https://www.rfc-editor.org/rfc/rfc9113.html#name-stream-states
@@ -68,7 +68,14 @@ enum class HttpStreamState : uint8_t {
68
68
  void InitLocalSettings(Http2Settings& settings, const bool is_client);
69
69
 
70
70
  void ReadSettingsFromChannelArgs(const ChannelArgs& channel_args,
71
- Http2Settings& settings, const bool is_client);
71
+ Http2Settings& local_settings,
72
+ chttp2::TransportFlowControl& flow_control,
73
+ const bool is_client);
74
+
75
+ RefCountedPtr<channelz::SocketNode> CreateChannelzSocketNode(
76
+ std::shared_ptr<grpc_event_engine::experimental::EventEngine::Endpoint>
77
+ event_engine_endpoint,
78
+ const ChannelArgs& args);
72
79
 
73
80
  } // namespace http2
74
81
  } // namespace grpc_core