grpc 1.64.0 → 1.65.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (658) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +57 -58
  3. data/include/grpc/event_engine/event_engine.h +13 -6
  4. data/include/grpc/impl/channel_arg_names.h +7 -3
  5. data/include/grpc/module.modulemap +1 -0
  6. data/include/grpc/passive_listener.h +62 -0
  7. data/include/grpc/support/log.h +7 -17
  8. data/include/grpc/support/port_platform.h +3 -0
  9. data/src/core/channelz/channel_trace.cc +1 -1
  10. data/src/core/channelz/channel_trace.h +1 -1
  11. data/src/core/channelz/channelz.cc +3 -3
  12. data/src/core/channelz/channelz.h +7 -7
  13. data/src/core/channelz/channelz_registry.cc +4 -3
  14. data/src/core/client_channel/backup_poller.cc +4 -5
  15. data/src/core/client_channel/client_channel.cc +1324 -0
  16. data/src/core/client_channel/client_channel.h +243 -0
  17. data/src/core/client_channel/client_channel_filter.cc +266 -709
  18. data/src/core/client_channel/client_channel_filter.h +11 -64
  19. data/src/core/client_channel/client_channel_internal.h +16 -5
  20. data/src/core/client_channel/client_channel_plugin.cc +1 -14
  21. data/src/core/client_channel/client_channel_service_config.h +3 -3
  22. data/src/core/client_channel/config_selector.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +1 -1
  24. data/src/core/client_channel/dynamic_filters.cc +3 -3
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
  27. data/src/core/client_channel/load_balanced_call_destination.h +49 -0
  28. data/src/core/client_channel/retry_filter.cc +2 -9
  29. data/src/core/client_channel/retry_filter.h +2 -7
  30. data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
  31. data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
  32. data/src/core/client_channel/retry_service_config.cc +4 -5
  33. data/src/core/client_channel/retry_service_config.h +3 -3
  34. data/src/core/client_channel/subchannel.cc +230 -119
  35. data/src/core/client_channel/subchannel.h +31 -18
  36. data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
  37. data/src/core/client_channel/subchannel_pool_interface.h +2 -4
  38. data/src/core/client_channel/subchannel_stream_client.cc +36 -49
  39. data/src/core/client_channel/subchannel_stream_client.h +2 -4
  40. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
  41. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
  42. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
  43. data/src/core/ext/filters/census/grpc_context.cc +2 -4
  44. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
  45. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
  46. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
  47. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
  48. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
  49. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
  50. data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
  51. data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
  52. data/src/core/ext/filters/http/client_authority_filter.h +1 -0
  53. data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
  54. data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
  55. data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
  56. data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
  57. data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
  58. data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
  59. data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
  60. data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
  61. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
  62. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
  63. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
  64. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
  65. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
  66. data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
  67. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +11 -26
  68. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
  69. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
  70. data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
  71. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +137 -113
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
  73. data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
  74. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
  75. data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
  76. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
  78. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
  79. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
  80. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +5 -7
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -1
  83. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
  84. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  85. data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
  86. data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
  87. data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
  88. data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
  89. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
  93. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
  94. data/src/core/ext/transport/inproc/inproc_transport.cc +58 -34
  95. data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
  96. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
  97. data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
  98. data/src/core/handshaker/handshaker.cc +6 -14
  99. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +11 -19
  100. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +10 -12
  101. data/src/core/handshaker/security/secure_endpoint.cc +38 -32
  102. data/src/core/handshaker/security/secure_endpoint.h +0 -2
  103. data/src/core/handshaker/security/security_handshaker.cc +25 -37
  104. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
  105. data/src/core/lib/address_utils/parse_address.cc +27 -39
  106. data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
  107. data/src/core/lib/avl/avl.h +1 -1
  108. data/src/core/lib/channel/channel_args.cc +13 -17
  109. data/src/core/lib/channel/channel_args.h +19 -8
  110. data/src/core/lib/channel/channel_stack.cc +5 -63
  111. data/src/core/lib/channel/channel_stack.h +13 -37
  112. data/src/core/lib/channel/channel_stack_builder.h +0 -5
  113. data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
  114. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
  115. data/src/core/lib/channel/connected_channel.cc +37 -676
  116. data/src/core/lib/channel/promise_based_filter.cc +41 -47
  117. data/src/core/lib/channel/promise_based_filter.h +124 -477
  118. data/src/core/lib/channel/status_util.cc +1 -1
  119. data/src/core/lib/compression/compression.cc +1 -1
  120. data/src/core/lib/compression/message_compress.cc +6 -6
  121. data/src/core/lib/config/config_vars.cc +3 -8
  122. data/src/core/lib/config/config_vars.h +1 -5
  123. data/src/core/lib/debug/event_log.h +1 -1
  124. data/src/core/lib/debug/trace.cc +43 -59
  125. data/src/core/lib/debug/trace.h +2 -97
  126. data/src/core/lib/debug/trace_flags.cc +255 -0
  127. data/src/core/lib/debug/trace_flags.h +133 -0
  128. data/src/core/lib/debug/trace_impl.h +115 -0
  129. data/src/core/lib/event_engine/ares_resolver.cc +5 -7
  130. data/src/core/lib/event_engine/ares_resolver.h +1 -3
  131. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
  132. data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
  133. data/src/core/lib/event_engine/event_engine.cc +29 -4
  134. data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
  135. data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
  136. data/src/core/lib/event_engine/forkable.cc +4 -5
  137. data/src/core/lib/event_engine/forkable.h +0 -11
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +11 -11
  139. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
  140. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
  141. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
  142. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
  143. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
  144. data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
  145. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
  146. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
  147. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +19 -17
  148. data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
  149. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
  150. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
  151. data/src/core/lib/event_engine/shim.cc +1 -1
  152. data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
  153. data/src/core/lib/event_engine/thread_local.h +1 -1
  154. data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
  155. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +20 -21
  156. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
  157. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
  158. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
  159. data/src/core/lib/event_engine/trace.h +6 -17
  160. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  161. data/src/core/lib/event_engine/windows/win_socket.cc +25 -17
  162. data/src/core/lib/event_engine/windows/win_socket.h +4 -5
  163. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -13
  164. data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
  165. data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
  166. data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
  167. data/src/core/lib/experiments/config.cc +11 -9
  168. data/src/core/lib/experiments/experiments.cc +35 -151
  169. data/src/core/lib/experiments/experiments.h +13 -47
  170. data/src/core/lib/gprpp/bitset.h +1 -1
  171. data/src/core/lib/gprpp/crash.cc +2 -3
  172. data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
  173. data/src/core/lib/gprpp/dump_args.cc +54 -0
  174. data/src/core/lib/gprpp/dump_args.h +69 -0
  175. data/src/core/lib/gprpp/glob.cc +70 -0
  176. data/src/core/lib/gprpp/glob.h +29 -0
  177. data/src/core/lib/gprpp/per_cpu.cc +1 -1
  178. data/src/core/lib/gprpp/posix/stat.cc +3 -4
  179. data/src/core/lib/gprpp/posix/thd.cc +8 -9
  180. data/src/core/lib/gprpp/ref_counted.h +30 -22
  181. data/src/core/lib/gprpp/single_set_ptr.h +5 -3
  182. data/src/core/lib/gprpp/status_helper.cc +11 -30
  183. data/src/core/lib/gprpp/status_helper.h +3 -31
  184. data/src/core/lib/gprpp/time.cc +3 -4
  185. data/src/core/lib/gprpp/time.h +3 -2
  186. data/src/core/lib/gprpp/unique_type_name.h +1 -1
  187. data/src/core/lib/gprpp/validation_errors.cc +10 -1
  188. data/src/core/lib/gprpp/validation_errors.h +11 -0
  189. data/src/core/lib/gprpp/windows/stat.cc +3 -4
  190. data/src/core/lib/gprpp/windows/thd.cc +3 -2
  191. data/src/core/lib/gprpp/work_serializer.cc +48 -57
  192. data/src/core/lib/iomgr/buffer_list.cc +4 -2
  193. data/src/core/lib/iomgr/call_combiner.cc +18 -27
  194. data/src/core/lib/iomgr/call_combiner.h +1 -3
  195. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  196. data/src/core/lib/iomgr/closure.h +2 -4
  197. data/src/core/lib/iomgr/combiner.cc +6 -8
  198. data/src/core/lib/iomgr/combiner.h +0 -2
  199. data/src/core/lib/iomgr/endpoint.cc +0 -6
  200. data/src/core/lib/iomgr/endpoint.h +0 -2
  201. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
  202. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  203. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  204. data/src/core/lib/iomgr/error.cc +13 -21
  205. data/src/core/lib/iomgr/error.h +1 -1
  206. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  207. data/src/core/lib/iomgr/ev_epoll1_linux.cc +44 -43
  208. data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
  209. data/src/core/lib/iomgr/ev_posix.cc +8 -9
  210. data/src/core/lib/iomgr/ev_posix.h +10 -7
  211. data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
  212. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
  213. data/src/core/lib/iomgr/exec_ctx.cc +2 -2
  214. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  215. data/src/core/lib/iomgr/executor.cc +6 -15
  216. data/src/core/lib/iomgr/executor.h +1 -1
  217. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  218. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  219. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  220. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  221. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  222. data/src/core/lib/iomgr/iocp_windows.cc +4 -3
  223. data/src/core/lib/iomgr/iomgr.cc +13 -17
  224. data/src/core/lib/iomgr/lockfree_event.cc +3 -5
  225. data/src/core/lib/iomgr/pollset.h +0 -2
  226. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  227. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  228. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  229. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  230. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  231. data/src/core/lib/iomgr/socket_utils_common_posix.cc +25 -32
  232. data/src/core/lib/iomgr/socket_windows.cc +4 -6
  233. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  234. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
  235. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
  236. data/src/core/lib/iomgr/tcp_posix.cc +57 -84
  237. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  238. data/src/core/lib/iomgr/tcp_server_posix.cc +12 -15
  239. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
  240. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
  241. data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
  242. data/src/core/lib/iomgr/tcp_windows.cc +25 -41
  243. data/src/core/lib/iomgr/timer_generic.cc +17 -20
  244. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  245. data/src/core/lib/iomgr/timer_manager.cc +17 -30
  246. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  247. data/src/core/lib/iomgr/vsock.cc +1 -1
  248. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  249. data/src/core/lib/promise/activity.h +27 -4
  250. data/src/core/lib/promise/cancel_callback.h +24 -0
  251. data/src/core/lib/promise/context.h +11 -0
  252. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  253. data/src/core/lib/promise/detail/join_state.h +354 -398
  254. data/src/core/lib/promise/detail/promise_like.h +13 -6
  255. data/src/core/lib/promise/detail/seq_state.h +1178 -1178
  256. data/src/core/lib/promise/for_each.h +6 -6
  257. data/src/core/lib/promise/interceptor_list.h +6 -7
  258. data/src/core/lib/promise/latch.h +9 -9
  259. data/src/core/lib/promise/map.h +17 -0
  260. data/src/core/lib/promise/observable.h +182 -0
  261. data/src/core/lib/promise/party.cc +11 -12
  262. data/src/core/lib/promise/party.h +10 -8
  263. data/src/core/lib/promise/pipe.h +16 -35
  264. data/src/core/lib/promise/promise.h +1 -0
  265. data/src/core/lib/promise/status_flag.h +2 -0
  266. data/src/core/lib/resource_quota/arena.cc +56 -79
  267. data/src/core/lib/resource_quota/arena.h +118 -209
  268. data/src/core/lib/resource_quota/memory_quota.cc +12 -13
  269. data/src/core/lib/resource_quota/memory_quota.h +2 -3
  270. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  271. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  272. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  273. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  274. data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
  275. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
  276. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
  277. data/src/core/lib/security/authorization/matchers.cc +3 -3
  278. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  279. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
  280. data/src/core/lib/security/context/security_context.cc +12 -13
  281. data/src/core/lib/security/context/security_context.h +31 -8
  282. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  283. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
  284. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  285. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
  286. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  287. data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
  288. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  289. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
  290. data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
  291. data/src/core/lib/security/credentials/credentials.cc +6 -6
  292. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
  293. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  294. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  295. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  296. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
  297. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
  298. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
  299. data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
  300. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  301. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
  302. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
  303. data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
  304. data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
  305. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
  307. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
  308. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
  309. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  310. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
  312. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  313. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  314. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
  315. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
  316. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  317. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
  318. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
  319. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
  320. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
  321. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  322. data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
  323. data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
  324. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
  325. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
  326. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
  327. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
  328. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  329. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
  330. data/src/core/lib/security/security_connector/security_connector.cc +1 -4
  331. data/src/core/lib/security/security_connector/security_connector.h +1 -3
  332. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
  333. data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
  334. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
  335. data/src/core/lib/security/transport/auth_filters.h +1 -0
  336. data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
  337. data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
  338. data/src/core/lib/security/util/json_util.h +1 -1
  339. data/src/core/lib/slice/slice.h +1 -1
  340. data/src/core/lib/slice/slice_refcount.h +2 -4
  341. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  342. data/src/core/lib/surface/api_trace.h +1 -3
  343. data/src/core/lib/surface/call.cc +64 -3739
  344. data/src/core/lib/surface/call.h +41 -143
  345. data/src/core/lib/surface/call_log_batch.cc +1 -1
  346. data/src/core/lib/surface/call_utils.cc +276 -0
  347. data/src/core/lib/surface/call_utils.h +449 -0
  348. data/src/core/lib/surface/channel.cc +8 -3
  349. data/src/core/lib/surface/channel.h +10 -7
  350. data/src/core/lib/surface/channel_create.cc +14 -6
  351. data/src/core/lib/surface/channel_create.h +3 -2
  352. data/src/core/lib/surface/channel_init.cc +21 -77
  353. data/src/core/lib/surface/channel_init.h +19 -97
  354. data/src/core/lib/surface/client_call.cc +419 -0
  355. data/src/core/lib/surface/client_call.h +180 -0
  356. data/src/core/lib/surface/completion_queue.cc +28 -33
  357. data/src/core/lib/surface/completion_queue.h +0 -8
  358. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  359. data/src/core/lib/surface/filter_stack_call.h +369 -0
  360. data/src/core/lib/surface/init.cc +7 -6
  361. data/src/core/lib/surface/lame_client.cc +1 -1
  362. data/src/core/lib/surface/legacy_channel.cc +43 -30
  363. data/src/core/lib/surface/legacy_channel.h +9 -18
  364. data/src/core/lib/surface/server_call.cc +222 -0
  365. data/src/core/lib/surface/server_call.h +167 -0
  366. data/src/core/lib/surface/version.cc +2 -2
  367. data/src/core/lib/transport/bdp_estimator.cc +3 -5
  368. data/src/core/lib/transport/bdp_estimator.h +2 -4
  369. data/src/core/lib/transport/call_arena_allocator.h +9 -7
  370. data/src/core/lib/transport/call_destination.h +76 -0
  371. data/src/core/lib/transport/call_filters.cc +28 -10
  372. data/src/core/lib/transport/call_filters.h +128 -22
  373. data/src/core/lib/transport/call_spine.cc +5 -6
  374. data/src/core/lib/transport/call_spine.h +159 -334
  375. data/src/core/lib/transport/connectivity_state.cc +8 -10
  376. data/src/core/lib/transport/connectivity_state.h +0 -2
  377. data/src/core/lib/transport/interception_chain.cc +155 -0
  378. data/src/core/lib/transport/interception_chain.h +236 -0
  379. data/src/core/lib/transport/metadata_batch.h +10 -1
  380. data/src/core/lib/transport/metadata_info.h +1 -1
  381. data/src/core/lib/transport/transport.cc +3 -6
  382. data/src/core/lib/transport/transport.h +43 -40
  383. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  384. data/src/core/load_balancing/endpoint_list.cc +5 -5
  385. data/src/core/load_balancing/endpoint_list.h +1 -1
  386. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
  387. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
  388. data/src/core/load_balancing/grpclb/grpclb.cc +39 -44
  389. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
  390. data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
  391. data/src/core/load_balancing/health_check_client.cc +10 -13
  392. data/src/core/load_balancing/lb_policy.cc +5 -8
  393. data/src/core/load_balancing/lb_policy.h +19 -3
  394. data/src/core/load_balancing/lb_policy_factory.h +1 -1
  395. data/src/core/load_balancing/lb_policy_registry.cc +2 -3
  396. data/src/core/load_balancing/lb_policy_registry.h +1 -1
  397. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  398. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
  399. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
  400. data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
  401. data/src/core/load_balancing/priority/priority.cc +26 -28
  402. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
  403. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  404. data/src/core/load_balancing/rls/rls.cc +82 -82
  405. data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
  406. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
  407. data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
  408. data/src/core/load_balancing/xds/cds.cc +14 -16
  409. data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
  410. data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
  411. data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
  412. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  413. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  414. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  415. data/src/core/resolver/binder/binder_resolver.cc +3 -2
  416. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
  417. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  418. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
  419. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
  420. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  421. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
  422. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
  423. data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
  424. data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
  425. data/src/core/resolver/endpoint_addresses.cc +1 -1
  426. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  427. data/src/core/resolver/fake/fake_resolver.h +1 -1
  428. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  429. data/src/core/resolver/polling_resolver.cc +30 -35
  430. data/src/core/resolver/resolver.cc +2 -6
  431. data/src/core/resolver/resolver.h +0 -2
  432. data/src/core/resolver/resolver_registry.cc +6 -8
  433. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  434. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
  435. data/src/core/resolver/xds/xds_resolver.cc +13 -15
  436. data/src/core/server/server.cc +269 -389
  437. data/src/core/server/server.h +37 -19
  438. data/src/core/server/server_call_tracer_filter.cc +7 -14
  439. data/src/core/server/server_config_selector.h +1 -1
  440. data/src/core/server/server_config_selector_filter.cc +3 -3
  441. data/src/core/server/server_interface.h +2 -0
  442. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  443. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  444. data/src/core/server/xds_server_config_fetcher.cc +1 -4
  445. data/src/core/service_config/service_config.h +1 -1
  446. data/src/core/service_config/service_config_call_data.h +13 -11
  447. data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
  448. data/src/core/service_config/service_config_impl.cc +5 -5
  449. data/src/core/service_config/service_config_impl.h +1 -1
  450. data/src/core/service_config/service_config_parser.cc +3 -6
  451. data/src/core/service_config/service_config_parser.h +1 -1
  452. data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
  453. data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
  454. data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
  455. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
  456. data/src/core/telemetry/metrics.cc +178 -0
  457. data/src/core/telemetry/metrics.h +562 -0
  458. data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
  459. data/src/core/{lib/debug → telemetry}/stats.h +5 -5
  460. data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
  461. data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
  462. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
  463. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
  464. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
  465. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
  466. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  467. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
  468. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  469. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
  470. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  471. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
  472. data/src/core/tsi/fake_transport_security.cc +14 -17
  473. data/src/core/tsi/local_transport_security.cc +6 -5
  474. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
  475. data/src/core/tsi/ssl_transport_security.cc +76 -81
  476. data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
  477. data/src/core/tsi/ssl_transport_security_utils.h +11 -0
  478. data/src/core/tsi/transport_security.cc +0 -4
  479. data/src/core/tsi/transport_security.h +0 -2
  480. data/src/core/tsi/transport_security_interface.h +0 -4
  481. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  482. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  483. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  484. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
  485. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
  486. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
  487. data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
  488. data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
  489. data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
  490. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
  491. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
  492. data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
  493. data/src/core/{lib/http → util/http_client}/parser.h +5 -6
  494. data/src/core/{lib → util}/json/json.h +5 -4
  495. data/src/core/{lib → util}/json/json_args.h +5 -5
  496. data/src/core/{lib → util}/json/json_channel_args.h +6 -6
  497. data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
  498. data/src/core/{lib → util}/json/json_object_loader.h +7 -7
  499. data/src/core/{lib → util}/json/json_reader.cc +3 -2
  500. data/src/core/{lib → util}/json/json_reader.h +6 -6
  501. data/src/core/{lib → util}/json/json_util.cc +4 -4
  502. data/src/core/{lib → util}/json/json_util.h +6 -6
  503. data/src/core/{lib → util}/json/json_writer.cc +3 -3
  504. data/src/core/{lib → util}/json/json_writer.h +6 -6
  505. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  506. data/src/core/util/log.cc +167 -0
  507. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  508. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  509. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  510. data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
  511. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
  512. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  513. data/src/core/{lib/gpr → util}/string.cc +2 -2
  514. data/src/core/{lib/gpr → util}/string.h +3 -3
  515. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  516. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  517. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  518. data/src/core/{lib/gpr → util}/useful.h +3 -3
  519. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  520. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  521. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  522. data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
  523. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  524. data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
  525. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  526. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  527. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
  528. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  529. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
  530. data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
  531. data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
  532. data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
  533. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  534. data/src/core/xds/grpc/xds_cluster.cc +4 -5
  535. data/src/core/xds/grpc/xds_cluster.h +1 -1
  536. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  537. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  538. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  539. data/src/core/xds/grpc/xds_common_types.h +1 -1
  540. data/src/core/xds/grpc/xds_endpoint.cc +4 -5
  541. data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
  542. data/src/core/xds/grpc/xds_http_filters.h +2 -2
  543. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
  544. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
  545. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  546. data/src/core/xds/grpc/xds_listener.cc +4 -6
  547. data/src/core/xds/grpc/xds_route_config.cc +7 -8
  548. data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
  549. data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
  550. data/src/core/xds/xds_client/xds_api.cc +5 -9
  551. data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
  552. data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
  553. data/src/core/xds/xds_client/xds_client.cc +39 -45
  554. data/src/core/xds/xds_client/xds_client.h +0 -3
  555. data/src/core/xds/xds_client/xds_client_stats.cc +20 -18
  556. data/src/core/xds/xds_client/xds_client_stats.h +2 -2
  557. data/src/ruby/bin/math_pb.rb +1 -22
  558. data/src/ruby/ext/grpc/rb_call.c +8 -1
  559. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  560. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  561. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  562. data/src/ruby/ext/grpc/rb_server.c +39 -22
  563. data/src/ruby/lib/grpc/version.rb +1 -1
  564. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  565. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  566. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  567. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  568. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  569. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  570. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  571. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  572. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
  573. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +3 -5
  574. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +7 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  576. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c +4 -1
  577. data/third_party/boringssl-with-bazel/src/crypto/cpu_intel.c +0 -15
  578. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +7 -61
  579. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1539 -0
  580. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  581. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
  582. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
  583. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +21 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +31 -7
  586. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -2
  587. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
  588. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  589. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +5 -0
  590. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  591. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +6 -4
  592. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
  593. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
  594. data/third_party/boringssl-with-bazel/src/crypto/internal.h +29 -10
  595. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +1 -0
  596. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  597. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  598. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  599. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
  600. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  601. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -11
  602. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +131 -0
  603. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/kyber.h +10 -0
  604. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +26 -12
  605. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +83 -33
  606. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  607. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -8
  608. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +4 -4
  609. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  610. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +14 -13
  611. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +22 -16
  612. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -1
  613. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +2 -1
  614. data/third_party/boringssl-with-bazel/src/ssl/internal.h +19 -25
  615. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +1 -0
  616. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +38 -27
  617. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +59 -20
  618. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +1 -1
  619. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +2 -1
  620. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +1 -1
  621. metadata +103 -93
  622. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  623. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  624. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  625. data/src/core/handshaker/security/tsi_error.cc +0 -31
  626. data/src/core/handshaker/security/tsi_error.h +0 -30
  627. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  628. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  629. data/src/core/lib/channel/context.h +0 -105
  630. data/src/core/lib/channel/metrics.cc +0 -334
  631. data/src/core/lib/channel/metrics.h +0 -365
  632. data/src/core/lib/event_engine/trace.cc +0 -25
  633. data/src/core/lib/gpr/log.cc +0 -166
  634. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  635. data/src/core/lib/promise/trace.cc +0 -20
  636. data/src/core/lib/promise/trace.h +0 -24
  637. data/src/core/lib/resource_quota/trace.cc +0 -19
  638. data/src/core/lib/resource_quota/trace.h +0 -24
  639. data/src/core/lib/slice/slice_refcount.cc +0 -20
  640. data/src/core/lib/surface/api_trace.cc +0 -25
  641. data/src/core/lib/surface/call_trace.h +0 -24
  642. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  643. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  644. data/src/core/lib/transport/batch_builder.cc +0 -172
  645. data/src/core/lib/transport/batch_builder.h +0 -474
  646. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  647. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  648. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  649. /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
  650. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  651. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  652. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  653. /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
  654. /data/src/core/{lib/gpr → util}/sync.cc +0 -0
  655. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  656. /data/src/core/{lib/gpr → util}/time.cc +0 -0
  657. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
  658. /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -33,8 +33,6 @@
33
33
  #include "src/core/lib/debug/trace.h"
34
34
  #include "src/core/lib/gprpp/time.h"
35
35
 
36
- extern grpc_core::TraceFlag grpc_ping_trace;
37
-
38
36
  namespace grpc_core {
39
37
 
40
38
  class Chttp2PingCallbacks {
@@ -35,16 +35,18 @@
35
35
  namespace grpc_core {
36
36
 
37
37
  namespace {
38
- int g_default_max_pings_without_data = 2;
38
+ int g_default_max_pings_without_data_sent = 2;
39
+ constexpr Duration kThrottleIntervalWithoutDataSent = Duration::Minutes(1);
39
40
  absl::optional<int> g_default_max_inflight_pings;
40
41
  } // namespace
41
42
 
42
43
  Chttp2PingRatePolicy::Chttp2PingRatePolicy(const ChannelArgs& args,
43
44
  bool is_client)
44
- : max_pings_without_data_(
45
+ : max_pings_without_data_sent_(
45
46
  is_client
46
- ? std::max(0, args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
47
- .value_or(g_default_max_pings_without_data))
47
+ ? std::max(0,
48
+ args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
49
+ .value_or(g_default_max_pings_without_data_sent))
48
50
  : 0),
49
51
  // Configuration via channel arg dominates, otherwise if the multiping
50
52
  // experiment is enabled we use 100, otherwise 1.
@@ -54,18 +56,15 @@ Chttp2PingRatePolicy::Chttp2PingRatePolicy(const ChannelArgs& args,
54
56
  IsMultipingEnabled() ? 100 : 1)))) {}
55
57
 
56
58
  void Chttp2PingRatePolicy::SetDefaults(const ChannelArgs& args) {
57
- g_default_max_pings_without_data =
59
+ g_default_max_pings_without_data_sent =
58
60
  std::max(0, args.GetInt(GRPC_ARG_HTTP2_MAX_PINGS_WITHOUT_DATA)
59
- .value_or(g_default_max_pings_without_data));
61
+ .value_or(g_default_max_pings_without_data_sent));
60
62
  g_default_max_inflight_pings = args.GetInt(GRPC_ARG_HTTP2_MAX_INFLIGHT_PINGS);
61
63
  }
62
64
 
63
65
  Chttp2PingRatePolicy::RequestSendPingResult
64
66
  Chttp2PingRatePolicy::RequestSendPing(Duration next_allowed_ping_interval,
65
67
  size_t inflight_pings) const {
66
- if (max_pings_without_data_ != 0 && pings_before_data_required_ == 0) {
67
- return TooManyRecentPings{};
68
- }
69
68
  if (max_inflight_pings_ > 0 &&
70
69
  inflight_pings > static_cast<size_t>(max_inflight_pings_)) {
71
70
  return TooManyRecentPings{};
@@ -77,12 +76,29 @@ Chttp2PingRatePolicy::RequestSendPing(Duration next_allowed_ping_interval,
77
76
  return TooSoon{next_allowed_ping_interval, last_ping_sent_time_,
78
77
  next_allowed_ping - now};
79
78
  }
79
+ // Throttle pings to 1 minute if we haven't sent any data recently
80
+ if (max_pings_without_data_sent_ != 0 &&
81
+ pings_before_data_sending_required_ == 0) {
82
+ if (IsMaxPingsWoDataThrottleEnabled()) {
83
+ const Timestamp next_allowed_ping =
84
+ last_ping_sent_time_ + kThrottleIntervalWithoutDataSent;
85
+ if (next_allowed_ping > now) {
86
+ return TooSoon{kThrottleIntervalWithoutDataSent, last_ping_sent_time_,
87
+ next_allowed_ping - now};
88
+ }
89
+ } else {
90
+ return TooManyRecentPings{};
91
+ }
92
+ }
93
+
80
94
  return SendGranted{};
81
95
  }
82
96
 
83
97
  void Chttp2PingRatePolicy::SentPing() {
84
98
  last_ping_sent_time_ = Timestamp::Now();
85
- if (pings_before_data_required_) --pings_before_data_required_;
99
+ if (pings_before_data_sending_required_ > 0) {
100
+ --pings_before_data_sending_required_;
101
+ }
86
102
  }
87
103
 
88
104
  void Chttp2PingRatePolicy::ReceivedDataFrame() {
@@ -90,13 +106,13 @@ void Chttp2PingRatePolicy::ReceivedDataFrame() {
90
106
  }
91
107
 
92
108
  void Chttp2PingRatePolicy::ResetPingsBeforeDataRequired() {
93
- pings_before_data_required_ = max_pings_without_data_;
109
+ pings_before_data_sending_required_ = max_pings_without_data_sent_;
94
110
  }
95
111
 
96
112
  std::string Chttp2PingRatePolicy::GetDebugString() const {
97
113
  return absl::StrCat(
98
- "max_pings_without_data: ", max_pings_without_data_,
99
- ", pings_before_data_required: ", pings_before_data_required_,
114
+ "max_pings_without_data: ", max_pings_without_data_sent_,
115
+ ", pings_before_data_required: ", pings_before_data_sending_required_,
100
116
  ", last_ping_sent_time_: ", last_ping_sent_time_.ToString());
101
117
  }
102
118
 
@@ -70,13 +70,14 @@ class Chttp2PingRatePolicy {
70
70
  void ReceivedDataFrame();
71
71
  std::string GetDebugString() const;
72
72
 
73
- int TestOnlyMaxPingsWithoutData() const { return max_pings_without_data_; }
73
+ int TestOnlyMaxPingsWithoutData() const {
74
+ return max_pings_without_data_sent_;
75
+ }
74
76
 
75
77
  private:
76
- const int max_pings_without_data_;
78
+ const int max_pings_without_data_sent_;
77
79
  const int max_inflight_pings_;
78
- // No pings allowed before receiving a header or data frame.
79
- int pings_before_data_required_ = 0;
80
+ int pings_before_data_sending_required_ = 0;
80
81
  Timestamp last_ping_sent_time_ = Timestamp::InfPast();
81
82
  };
82
83
 
@@ -44,8 +44,6 @@ static const char* stream_list_id_string(grpc_chttp2_stream_list_id id) {
44
44
  GPR_UNREACHABLE_CODE(return "unknown");
45
45
  }
46
46
 
47
- grpc_core::TraceFlag grpc_trace_http2_stream_state(false, "http2_stream_state");
48
-
49
47
  // core list management
50
48
 
51
49
  static bool stream_list_empty(grpc_chttp2_transport* t,
@@ -70,7 +68,7 @@ static bool stream_list_pop(grpc_chttp2_transport* t,
70
68
  s->included.clear(id);
71
69
  }
72
70
  *stream = s;
73
- if (s && GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
71
+ if (s && GRPC_TRACE_FLAG_ENABLED(http2_stream_state)) {
74
72
  gpr_log(GPR_INFO, "%p[%d][%s]: pop from %s", t, s->id,
75
73
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
76
74
  }
@@ -92,7 +90,7 @@ static void stream_list_remove(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
92
90
  } else {
93
91
  t->lists[id].tail = s->links[id].prev;
94
92
  }
95
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
93
+ if (GRPC_TRACE_FLAG_ENABLED(http2_stream_state)) {
96
94
  gpr_log(GPR_INFO, "%p[%d][%s]: remove from %s", t, s->id,
97
95
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
98
96
  }
@@ -124,7 +122,7 @@ static void stream_list_add_tail(grpc_chttp2_transport* t,
124
122
  }
125
123
  t->lists[id].tail = s;
126
124
  s->included.set(id);
127
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_http2_stream_state)) {
125
+ if (GRPC_TRACE_FLAG_ENABLED(http2_stream_state)) {
128
126
  gpr_log(GPR_INFO, "%p[%d][%s]: add to %s", t, s->id,
129
127
  t->is_client ? "cli" : "svr", stream_list_id_string(id));
130
128
  }
@@ -47,19 +47,14 @@
47
47
  #include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
48
48
  #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
49
49
  #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
50
- #include "src/core/ext/transport/chttp2/transport/http_trace.h"
51
50
  #include "src/core/ext/transport/chttp2/transport/internal.h"
52
51
  #include "src/core/ext/transport/chttp2/transport/legacy_frame.h"
53
52
  #include "src/core/ext/transport/chttp2/transport/max_concurrent_streams_policy.h"
54
53
  #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h"
55
54
  #include "src/core/ext/transport/chttp2/transport/ping_rate_policy.h"
56
55
  #include "src/core/ext/transport/chttp2/transport/write_size_policy.h"
57
- #include "src/core/lib/channel/call_tracer.h"
58
- #include "src/core/lib/debug/stats.h"
59
- #include "src/core/lib/debug/stats_data.h"
60
56
  #include "src/core/lib/debug/trace.h"
61
57
  #include "src/core/lib/experiments/experiments.h"
62
- #include "src/core/lib/gpr/useful.h"
63
58
  #include "src/core/lib/gprpp/match.h"
64
59
  #include "src/core/lib/gprpp/ref_counted.h"
65
60
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -73,6 +68,10 @@
73
68
  #include "src/core/lib/transport/http2_errors.h"
74
69
  #include "src/core/lib/transport/metadata_batch.h"
75
70
  #include "src/core/lib/transport/transport.h"
71
+ #include "src/core/telemetry/call_tracer.h"
72
+ #include "src/core/telemetry/stats.h"
73
+ #include "src/core/telemetry/stats_data.h"
74
+ #include "src/core/util/useful.h"
76
75
 
77
76
  // IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
78
77
 
@@ -133,10 +132,10 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
133
132
  t->channelz_socket->RecordKeepaliveSent();
134
133
  }
135
134
  grpc_core::global_stats().IncrementHttp2PingsSent();
136
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
137
- GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
138
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace) ||
139
- GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) {
135
+ if (GRPC_TRACE_FLAG_ENABLED(http) ||
136
+ GRPC_TRACE_FLAG_ENABLED(bdp_estimator) ||
137
+ GRPC_TRACE_FLAG_ENABLED(http_keepalive) ||
138
+ GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
140
139
  gpr_log(GPR_INFO, "%s[%p]: Ping %" PRIx64 " sent [%s]: %s",
141
140
  t->is_client ? "CLIENT" : "SERVER", t, id,
142
141
  std::string(t->peer_string.as_string_view()).c_str(),
@@ -145,10 +144,10 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
145
144
  },
146
145
  [t](grpc_core::Chttp2PingRatePolicy::TooManyRecentPings) {
147
146
  // need to receive something of substance before sending a ping again
148
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
149
- GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
150
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace) ||
151
- GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) {
147
+ if (GRPC_TRACE_FLAG_ENABLED(http) ||
148
+ GRPC_TRACE_FLAG_ENABLED(bdp_estimator) ||
149
+ GRPC_TRACE_FLAG_ENABLED(http_keepalive) ||
150
+ GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
152
151
  gpr_log(GPR_INFO,
153
152
  "%s[%p]: Ping delayed [%s]: too many recent pings: %s",
154
153
  t->is_client ? "CLIENT" : "SERVER", t,
@@ -158,10 +157,10 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
158
157
  },
159
158
  [t](grpc_core::Chttp2PingRatePolicy::TooSoon too_soon) {
160
159
  // not enough elapsed time between successive pings
161
- if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace) ||
162
- GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
163
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace) ||
164
- GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace)) {
160
+ if (GRPC_TRACE_FLAG_ENABLED(http) ||
161
+ GRPC_TRACE_FLAG_ENABLED(bdp_estimator) ||
162
+ GRPC_TRACE_FLAG_ENABLED(http_keepalive) ||
163
+ GRPC_TRACE_FLAG_ENABLED(http2_ping)) {
165
164
  gpr_log(
166
165
  GPR_INFO,
167
166
  "%s[%p]: Ping delayed [%s]: not enough time elapsed since last "
@@ -207,7 +206,7 @@ static bool update_list(grpc_chttp2_transport* t, int64_t send_bytes,
207
206
 
208
207
  static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
209
208
  const char* staller) {
210
- if (GRPC_TRACE_FLAG_ENABLED(grpc_flowctl_trace)) {
209
+ if (GRPC_TRACE_FLAG_ENABLED(flowctl)) {
211
210
  gpr_log(
212
211
  GPR_DEBUG,
213
212
  "%s:%p stream %d moved to stalled list by %s. This is FULLY expected "
@@ -682,10 +681,10 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
682
681
  grpc_core::GrpcHttp2GetCopyContextFn();
683
682
  if (copy_context_fn != nullptr &&
684
683
  grpc_core::GrpcHttp2GetWriteTimestampsCallback() != nullptr) {
685
- t->cl->emplace_back(copy_context_fn(s->context),
686
- outbuf_relative_start_pos, num_stream_bytes,
687
- s->byte_counter, s->write_counter - 1,
688
- s->tcp_tracer);
684
+ t->context_list->emplace_back(copy_context_fn(s->arena),
685
+ outbuf_relative_start_pos,
686
+ num_stream_bytes, s->byte_counter,
687
+ s->write_counter - 1, s->tcp_tracer);
689
688
  }
690
689
  }
691
690
  outbuf_relative_start_pos += num_stream_bytes;
@@ -728,7 +727,7 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) {
728
727
  grpc_core::ExecCtx exec_ctx;
729
728
  grpc_chttp2_ping_timeout(t);
730
729
  });
731
- if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace) && id.has_value()) {
730
+ if (GRPC_TRACE_FLAG_ENABLED(http2_ping) && id.has_value()) {
732
731
  gpr_log(GPR_INFO,
733
732
  "%s[%p]: Set ping timeout timer of %s for ping id %" PRIx64,
734
733
  t->is_client ? "CLIENT" : "SERVER", t, timeout.ToString().c_str(),
@@ -740,8 +739,8 @@ void grpc_chttp2_end_write(grpc_chttp2_transport* t, grpc_error_handle error) {
740
739
  t->keepalive_ping_timeout_handle !=
741
740
  grpc_event_engine::experimental::EventEngine::TaskHandle::
742
741
  kInvalid) {
743
- if (GRPC_TRACE_FLAG_ENABLED(grpc_ping_trace) ||
744
- GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
742
+ if (GRPC_TRACE_FLAG_ENABLED(http2_ping) ||
743
+ GRPC_TRACE_FLAG_ENABLED(http_keepalive)) {
745
744
  gpr_log(GPR_INFO, "%s[%p]: Set keepalive ping timeout timer of %s",
746
745
  t->is_client ? "CLIENT" : "SERVER", t,
747
746
  t->keepalive_timeout.ToString().c_str());
@@ -28,6 +28,7 @@
28
28
  #include "src/core/lib/gprpp/crash.h"
29
29
  #include "src/core/lib/promise/promise.h"
30
30
  #include "src/core/lib/promise/try_seq.h"
31
+ #include "src/core/lib/resource_quota/resource_quota.h"
31
32
  #include "src/core/lib/surface/channel_create.h"
32
33
  #include "src/core/lib/transport/transport.h"
33
34
  #include "src/core/server/server.h"
@@ -35,11 +36,22 @@
35
36
  namespace grpc_core {
36
37
 
37
38
  namespace {
38
- class InprocServerTransport final : public RefCounted<InprocServerTransport>,
39
- public ServerTransport {
39
+ class InprocClientTransport;
40
+
41
+ class InprocServerTransport final : public ServerTransport {
40
42
  public:
41
- void SetAcceptor(Acceptor* acceptor) override {
42
- acceptor_ = acceptor;
43
+ explicit InprocServerTransport(const ChannelArgs& args)
44
+ : event_engine_(
45
+ args.GetObjectRef<grpc_event_engine::experimental::EventEngine>()),
46
+ call_arena_allocator_(MakeRefCounted<CallArenaAllocator>(
47
+ args.GetObject<ResourceQuota>()
48
+ ->memory_quota()
49
+ ->CreateMemoryAllocator("inproc_server"),
50
+ 1024)) {}
51
+
52
+ void SetCallDestination(
53
+ RefCountedPtr<UnstartedCallDestination> unstarted_call_handler) override {
54
+ unstarted_call_handler_ = unstarted_call_handler;
43
55
  ConnectionState expect = ConnectionState::kInitial;
44
56
  state_.compare_exchange_strong(expect, ConnectionState::kReady,
45
57
  std::memory_order_acq_rel,
@@ -58,8 +70,8 @@ class InprocServerTransport final : public RefCounted<InprocServerTransport>,
58
70
  void SetPollset(grpc_stream*, grpc_pollset*) override {}
59
71
  void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {}
60
72
  void PerformOp(grpc_transport_op* op) override {
61
- gpr_log(GPR_INFO, "inproc server op: %s",
62
- grpc_transport_op_string(op).c_str());
73
+ GRPC_TRACE_LOG(inproc, INFO)
74
+ << "inproc server op: " << grpc_transport_op_string(op);
63
75
  if (op->start_connectivity_watch != nullptr) {
64
76
  MutexLock lock(&state_tracker_mu_);
65
77
  state_tracker_.AddWatcher(op->start_connectivity_watch_state,
@@ -73,7 +85,6 @@ class InprocServerTransport final : public RefCounted<InprocServerTransport>,
73
85
  Crash("set_accept_stream not supported on inproc transport");
74
86
  }
75
87
  }
76
- grpc_endpoint* GetEndpoint() override { return nullptr; }
77
88
 
78
89
  void Disconnect(absl::Status error) {
79
90
  if (disconnecting_.exchange(true, std::memory_order_relaxed)) return;
@@ -94,43 +105,54 @@ class InprocServerTransport final : public RefCounted<InprocServerTransport>,
94
105
  case ConnectionState::kReady:
95
106
  break;
96
107
  }
97
- return acceptor_->CreateCall(std::move(md), acceptor_->CreateArena());
108
+ auto server_call = MakeCallPair(std::move(md), event_engine_.get(),
109
+ call_arena_allocator_->MakeArena());
110
+ unstarted_call_handler_->StartCall(std::move(server_call.handler));
111
+ return std::move(server_call.initiator);
98
112
  }
99
113
 
114
+ OrphanablePtr<InprocClientTransport> MakeClientTransport();
115
+
100
116
  private:
101
117
  enum class ConnectionState : uint8_t { kInitial, kReady, kDisconnected };
102
118
 
103
119
  std::atomic<ConnectionState> state_{ConnectionState::kInitial};
104
120
  std::atomic<bool> disconnecting_{false};
105
- Acceptor* acceptor_;
121
+ RefCountedPtr<UnstartedCallDestination> unstarted_call_handler_;
106
122
  absl::Status disconnect_error_;
107
123
  Mutex state_tracker_mu_;
108
124
  ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(state_tracker_mu_){
109
125
  "inproc_server_transport", GRPC_CHANNEL_CONNECTING};
126
+ const std::shared_ptr<grpc_event_engine::experimental::EventEngine>
127
+ event_engine_;
128
+ const RefCountedPtr<CallArenaAllocator> call_arena_allocator_;
110
129
  };
111
130
 
112
131
  class InprocClientTransport final : public ClientTransport {
113
132
  public:
114
- void StartCall(CallHandler call_handler) override {
115
- call_handler.SpawnGuarded(
133
+ explicit InprocClientTransport(
134
+ RefCountedPtr<InprocServerTransport> server_transport)
135
+ : server_transport_(std::move(server_transport)) {}
136
+
137
+ void StartCall(CallHandler child_call_handler) override {
138
+ child_call_handler.SpawnGuarded(
116
139
  "pull_initial_metadata",
117
- TrySeq(call_handler.PullClientInitialMetadata(),
140
+ TrySeq(child_call_handler.PullClientInitialMetadata(),
118
141
  [server_transport = server_transport_,
119
- call_handler](ClientMetadataHandle md) {
120
- auto call_initiator =
142
+ child_call_handler](ClientMetadataHandle md) {
143
+ auto server_call_initiator =
121
144
  server_transport->AcceptCall(std::move(md));
122
- if (!call_initiator.ok()) return call_initiator.status();
123
- ForwardCall(call_handler, std::move(*call_initiator));
145
+ if (!server_call_initiator.ok()) {
146
+ return server_call_initiator.status();
147
+ }
148
+ ForwardCall(child_call_handler,
149
+ std::move(*server_call_initiator));
124
150
  return absl::OkStatus();
125
151
  }));
126
152
  }
127
153
 
128
154
  void Orphan() override { delete this; }
129
155
 
130
- OrphanablePtr<Transport> GetServerTransport() {
131
- return OrphanablePtr<Transport>(server_transport_->Ref().release());
132
- }
133
-
134
156
  FilterStackTransport* filter_stack_transport() override { return nullptr; }
135
157
  ClientTransport* client_transport() override { return this; }
136
158
  ServerTransport* server_transport() override { return nullptr; }
@@ -138,7 +160,6 @@ class InprocClientTransport final : public ClientTransport {
138
160
  void SetPollset(grpc_stream*, grpc_pollset*) override {}
139
161
  void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {}
140
162
  void PerformOp(grpc_transport_op*) override { Crash("unimplemented"); }
141
- grpc_endpoint* GetEndpoint() override { return nullptr; }
142
163
 
143
164
  private:
144
165
  ~InprocClientTransport() override {
@@ -146,18 +167,20 @@ class InprocClientTransport final : public ClientTransport {
146
167
  absl::UnavailableError("Client transport closed"));
147
168
  }
148
169
 
149
- RefCountedPtr<InprocServerTransport> server_transport_ =
150
- MakeRefCounted<InprocServerTransport>();
170
+ const RefCountedPtr<InprocServerTransport> server_transport_;
151
171
  };
152
172
 
153
173
  bool UsePromiseBasedTransport() {
154
- if (!IsPromiseBasedInprocTransportEnabled()) return false;
155
- CHECK(IsPromiseBasedClientCallEnabled());
156
- CHECK(IsPromiseBasedServerCallEnabled());
157
- return true;
174
+ return IsPromiseBasedInprocTransportEnabled();
175
+ }
176
+
177
+ OrphanablePtr<InprocClientTransport>
178
+ InprocServerTransport::MakeClientTransport() {
179
+ return MakeOrphanable<InprocClientTransport>(
180
+ RefAsSubclass<InprocServerTransport>());
158
181
  }
159
182
 
160
- OrphanablePtr<Channel> MakeLameChannel(absl::string_view why,
183
+ RefCountedPtr<Channel> MakeLameChannel(absl::string_view why,
161
184
  absl::Status error) {
162
185
  gpr_log(GPR_ERROR, "%s: %s", std::string(why).c_str(),
163
186
  std::string(error.message()).c_str());
@@ -166,13 +189,13 @@ OrphanablePtr<Channel> MakeLameChannel(absl::string_view why,
166
189
  if (grpc_error_get_int(error, StatusIntProperty::kRpcStatus, &integer)) {
167
190
  status = static_cast<grpc_status_code>(integer);
168
191
  }
169
- return OrphanablePtr<Channel>(Channel::FromC(grpc_lame_client_channel_create(
192
+ return RefCountedPtr<Channel>(Channel::FromC(grpc_lame_client_channel_create(
170
193
  nullptr, status, std::string(why).c_str())));
171
194
  }
172
195
 
173
- OrphanablePtr<Channel> MakeInprocChannel(Server* server,
196
+ RefCountedPtr<Channel> MakeInprocChannel(Server* server,
174
197
  ChannelArgs client_channel_args) {
175
- auto transports = MakeInProcessTransportPair();
198
+ auto transports = MakeInProcessTransportPair(server->channel_args());
176
199
  auto client_transport = std::move(transports.first);
177
200
  auto server_transport = std::move(transports.second);
178
201
  auto error =
@@ -197,9 +220,10 @@ OrphanablePtr<Channel> MakeInprocChannel(Server* server,
197
220
  } // namespace
198
221
 
199
222
  std::pair<OrphanablePtr<Transport>, OrphanablePtr<Transport>>
200
- MakeInProcessTransportPair() {
201
- auto client_transport = MakeOrphanable<InprocClientTransport>();
202
- auto server_transport = client_transport->GetServerTransport();
223
+ MakeInProcessTransportPair(const ChannelArgs& server_channel_args) {
224
+ auto server_transport =
225
+ MakeOrphanable<InprocServerTransport>(server_channel_args);
226
+ auto client_transport = server_transport->MakeClientTransport();
203
227
  return std::make_pair(std::move(client_transport),
204
228
  std::move(server_transport));
205
229
  }
@@ -25,12 +25,10 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
25
25
  const grpc_channel_args* args,
26
26
  void* reserved);
27
27
 
28
- extern grpc_core::TraceFlag grpc_inproc_trace;
29
-
30
28
  namespace grpc_core {
31
29
 
32
30
  std::pair<OrphanablePtr<Transport>, OrphanablePtr<Transport>>
33
- MakeInProcessTransportPair();
31
+ MakeInProcessTransportPair(const ChannelArgs& server_channel_args);
34
32
 
35
33
  }
36
34
 
@@ -28,6 +28,7 @@
28
28
  #include <utility>
29
29
 
30
30
  #include "absl/log/check.h"
31
+ #include "absl/log/log.h"
31
32
  #include "absl/status/status.h"
32
33
  #include "absl/status/statusor.h"
33
34
  #include "absl/strings/str_cat.h"
@@ -68,11 +69,11 @@
68
69
  #include "src/core/lib/transport/transport.h"
69
70
  #include "src/core/server/server.h"
70
71
 
71
- #define INPROC_LOG(...) \
72
- do { \
73
- if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) { \
74
- gpr_log(__VA_ARGS__); \
75
- } \
72
+ #define INPROC_LOG(...) \
73
+ do { \
74
+ if (GRPC_TRACE_FLAG_ENABLED(inproc)) { \
75
+ gpr_log(__VA_ARGS__); \
76
+ } \
76
77
  } while (0)
77
78
 
78
79
  namespace {
@@ -134,7 +135,6 @@ struct inproc_transport final : public grpc_core::FilterStackTransport {
134
135
  void SetPollsetSet(grpc_stream* stream,
135
136
  grpc_pollset_set* pollset_set) override;
136
137
  void PerformOp(grpc_transport_op* op) override;
137
- grpc_endpoint* GetEndpoint() override;
138
138
 
139
139
  size_t SizeOfStream() const override;
140
140
  bool HackyDisableStreamOpBatchCoalescingInConnectedChannel() const override {
@@ -319,7 +319,7 @@ void log_metadata(const grpc_metadata_batch* md_batch, bool is_client,
319
319
  std::string prefix = absl::StrCat(
320
320
  "INPROC:", is_initial ? "HDR:" : "TRL:", is_client ? "CLI:" : "SVR:");
321
321
  md_batch->Log([&prefix](absl::string_view key, absl::string_view value) {
322
- gpr_log(GPR_INFO, "%s", absl::StrCat(prefix, key, ": ", value).c_str());
322
+ LOG(INFO) << absl::StrCat(prefix, key, ": ", value);
323
323
  });
324
324
  }
325
325
 
@@ -352,7 +352,7 @@ class CopySink {
352
352
 
353
353
  void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
354
354
  grpc_metadata_batch* out_md, bool* markfilled) {
355
- if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
355
+ if (GRPC_TRACE_FLAG_ENABLED(inproc)) {
356
356
  log_metadata(metadata, s->t->is_client,
357
357
  metadata->get_pointer(grpc_core::WaitForReady()) != nullptr);
358
358
  }
@@ -949,7 +949,7 @@ void inproc_transport::PerformStreamOp(grpc_stream* gs,
949
949
  gpr_mu* mu = &s->t->mu->mu; // save aside in case s gets closed
950
950
  gpr_mu_lock(mu);
951
951
 
952
- if (GRPC_TRACE_FLAG_ENABLED(grpc_inproc_trace)) {
952
+ if (GRPC_TRACE_FLAG_ENABLED(inproc)) {
953
953
  if (op->send_initial_metadata) {
954
954
  log_metadata(op->payload->send_initial_metadata.send_initial_metadata,
955
955
  s->t->is_client, true);
@@ -1213,8 +1213,6 @@ void inproc_transport::SetPollsetSet(grpc_stream* /*gs*/,
1213
1213
  // Nothing to do here
1214
1214
  }
1215
1215
 
1216
- grpc_endpoint* inproc_transport::GetEndpoint() { return nullptr; }
1217
-
1218
1216
  //******************************************************************************
1219
1217
  // Main inproc transport functions
1220
1218
  //
@@ -1268,8 +1266,8 @@ grpc_channel* grpc_legacy_inproc_channel_create(grpc_server* server,
1268
1266
  "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1269
1267
  if (!new_channel.ok()) {
1270
1268
  CHECK(!channel);
1271
- gpr_log(GPR_ERROR, "Failed to create client channel: %s",
1272
- grpc_core::StatusToString(error).c_str());
1269
+ LOG(ERROR) << "Failed to create client channel: "
1270
+ << grpc_core::StatusToString(error);
1273
1271
  intptr_t integer;
1274
1272
  grpc_status_code status = GRPC_STATUS_INTERNAL;
1275
1273
  if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus,
@@ -1286,8 +1284,8 @@ grpc_channel* grpc_legacy_inproc_channel_create(grpc_server* server,
1286
1284
  }
1287
1285
  } else {
1288
1286
  CHECK(!channel);
1289
- gpr_log(GPR_ERROR, "Failed to create server channel: %s",
1290
- grpc_core::StatusToString(error).c_str());
1287
+ LOG(ERROR) << "Failed to create server channel: "
1288
+ << grpc_core::StatusToString(error);
1291
1289
  intptr_t integer;
1292
1290
  grpc_status_code status = GRPC_STATUS_INTERNAL;
1293
1291
  if (grpc_error_get_int(error, grpc_core::StatusIntProperty::kRpcStatus,
@@ -24,6 +24,4 @@ grpc_channel* grpc_legacy_inproc_channel_create(grpc_server* server,
24
24
  const grpc_channel_args* args,
25
25
  void* reserved);
26
26
 
27
- extern grpc_core::TraceFlag grpc_inproc_trace;
28
-
29
27
  #endif // GRPC_SRC_CORE_EXT_TRANSPORT_INPROC_LEGACY_INPROC_TRANSPORT_H
@@ -43,8 +43,6 @@
43
43
 
44
44
  namespace grpc_core {
45
45
 
46
- TraceFlag grpc_handshaker_trace(false, "handshaker");
47
-
48
46
  namespace {
49
47
 
50
48
  using ::grpc_event_engine::experimental::EventEngine;
@@ -62,13 +60,12 @@ std::string HandshakerArgsString(HandshakerArgs* args) {
62
60
  } // namespace
63
61
 
64
62
  HandshakeManager::HandshakeManager()
65
- : RefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)
66
- ? "HandshakeManager"
67
- : nullptr) {}
63
+ : RefCounted(GRPC_TRACE_FLAG_ENABLED(handshaker) ? "HandshakeManager"
64
+ : nullptr) {}
68
65
 
69
66
  void HandshakeManager::Add(RefCountedPtr<Handshaker> handshaker) {
70
67
  MutexLock lock(&mu_);
71
- if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) {
68
+ if (GRPC_TRACE_FLAG_ENABLED(handshaker)) {
72
69
  gpr_log(
73
70
  GPR_INFO,
74
71
  "handshake_manager %p: adding handshaker %s [%p] at index %" PRIuPTR,
@@ -94,7 +91,7 @@ void HandshakeManager::Shutdown(grpc_error_handle why) {
94
91
  // on_handshake_done callback.
95
92
  // Returns true if we've scheduled the on_handshake_done callback.
96
93
  bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
97
- if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) {
94
+ if (GRPC_TRACE_FLAG_ENABLED(handshaker)) {
98
95
  gpr_log(GPR_INFO,
99
96
  "handshake_manager %p: error=%s shutdown=%d index=%" PRIuPTR
100
97
  ", args=%s",
@@ -113,11 +110,6 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
113
110
  // a shutdown call while this callback was sitting on the ExecCtx
114
111
  // with no error.
115
112
  if (args_.endpoint != nullptr) {
116
- // TODO(roth): It is currently necessary to shutdown endpoints
117
- // before destroying then, even when we know that there are no
118
- // pending read/write callbacks. This should be fixed, at which
119
- // point this can be removed.
120
- grpc_endpoint_shutdown(args_.endpoint, error);
121
113
  grpc_endpoint_destroy(args_.endpoint);
122
114
  args_.endpoint = nullptr;
123
115
  }
@@ -128,7 +120,7 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
128
120
  }
129
121
  args_.args = ChannelArgs();
130
122
  }
131
- if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) {
123
+ if (GRPC_TRACE_FLAG_ENABLED(handshaker)) {
132
124
  gpr_log(GPR_INFO,
133
125
  "handshake_manager %p: handshaking complete -- scheduling "
134
126
  "on_handshake_done with error=%s",
@@ -141,7 +133,7 @@ bool HandshakeManager::CallNextHandshakerLocked(grpc_error_handle error) {
141
133
  is_shutdown_ = true;
142
134
  } else {
143
135
  auto handshaker = handshakers_[index_];
144
- if (GRPC_TRACE_FLAG_ENABLED(grpc_handshaker_trace)) {
136
+ if (GRPC_TRACE_FLAG_ENABLED(handshaker)) {
145
137
  gpr_log(
146
138
  GPR_INFO,
147
139
  "handshake_manager %p: calling handshaker %s [%p] at index %" PRIuPTR,