grpc 1.64.3 → 1.65.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) 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 +220 -112
  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 +8 -25
  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 +131 -107
  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 +32 -43
  82. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
  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 +56 -32
  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 +9 -17
  100. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
  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 +10 -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 +13 -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 +19 -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 +23 -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 +6 -9
  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/experiments.cc +35 -151
  168. data/src/core/lib/experiments/experiments.h +12 -45
  169. data/src/core/lib/gprpp/bitset.h +1 -1
  170. data/src/core/lib/gprpp/crash.cc +2 -3
  171. data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
  172. data/src/core/lib/gprpp/dump_args.cc +54 -0
  173. data/src/core/lib/gprpp/dump_args.h +69 -0
  174. data/src/core/lib/gprpp/glob.cc +70 -0
  175. data/src/core/lib/gprpp/glob.h +29 -0
  176. data/src/core/lib/gprpp/per_cpu.cc +1 -1
  177. data/src/core/lib/gprpp/posix/stat.cc +3 -4
  178. data/src/core/lib/gprpp/posix/thd.cc +8 -9
  179. data/src/core/lib/gprpp/ref_counted.h +30 -22
  180. data/src/core/lib/gprpp/single_set_ptr.h +5 -3
  181. data/src/core/lib/gprpp/status_helper.cc +11 -30
  182. data/src/core/lib/gprpp/status_helper.h +3 -31
  183. data/src/core/lib/gprpp/time.cc +3 -4
  184. data/src/core/lib/gprpp/time.h +3 -2
  185. data/src/core/lib/gprpp/unique_type_name.h +1 -1
  186. data/src/core/lib/gprpp/validation_errors.cc +10 -1
  187. data/src/core/lib/gprpp/validation_errors.h +11 -0
  188. data/src/core/lib/gprpp/windows/stat.cc +3 -4
  189. data/src/core/lib/gprpp/windows/thd.cc +3 -2
  190. data/src/core/lib/gprpp/work_serializer.cc +48 -57
  191. data/src/core/lib/iomgr/buffer_list.cc +4 -2
  192. data/src/core/lib/iomgr/call_combiner.cc +18 -27
  193. data/src/core/lib/iomgr/call_combiner.h +1 -3
  194. data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
  195. data/src/core/lib/iomgr/closure.h +2 -4
  196. data/src/core/lib/iomgr/combiner.cc +6 -8
  197. data/src/core/lib/iomgr/combiner.h +0 -2
  198. data/src/core/lib/iomgr/endpoint.cc +0 -6
  199. data/src/core/lib/iomgr/endpoint.h +0 -2
  200. data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
  201. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  202. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  203. data/src/core/lib/iomgr/error.cc +13 -21
  204. data/src/core/lib/iomgr/error.h +1 -1
  205. data/src/core/lib/iomgr/ev_apple.cc +3 -5
  206. data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
  207. data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
  208. data/src/core/lib/iomgr/ev_posix.cc +8 -9
  209. data/src/core/lib/iomgr/ev_posix.h +10 -7
  210. data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
  211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
  212. data/src/core/lib/iomgr/exec_ctx.cc +2 -2
  213. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  214. data/src/core/lib/iomgr/executor.cc +6 -15
  215. data/src/core/lib/iomgr/executor.h +1 -1
  216. data/src/core/lib/iomgr/fork_posix.cc +8 -10
  217. data/src/core/lib/iomgr/fork_windows.cc +3 -1
  218. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
  219. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
  220. data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
  221. data/src/core/lib/iomgr/iocp_windows.cc +4 -3
  222. data/src/core/lib/iomgr/iomgr.cc +13 -17
  223. data/src/core/lib/iomgr/lockfree_event.cc +3 -5
  224. data/src/core/lib/iomgr/pollset.h +0 -2
  225. data/src/core/lib/iomgr/pollset_windows.cc +0 -2
  226. data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
  227. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  228. data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
  229. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  230. data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
  231. data/src/core/lib/iomgr/socket_windows.cc +4 -6
  232. data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
  233. data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
  234. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
  235. data/src/core/lib/iomgr/tcp_posix.cc +57 -84
  236. data/src/core/lib/iomgr/tcp_posix.h +0 -2
  237. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  238. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
  239. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
  240. data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
  241. data/src/core/lib/iomgr/tcp_windows.cc +25 -41
  242. data/src/core/lib/iomgr/timer_generic.cc +17 -20
  243. data/src/core/lib/iomgr/timer_heap.cc +1 -1
  244. data/src/core/lib/iomgr/timer_manager.cc +17 -30
  245. data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
  246. data/src/core/lib/iomgr/vsock.cc +1 -1
  247. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
  248. data/src/core/lib/promise/activity.h +27 -4
  249. data/src/core/lib/promise/cancel_callback.h +24 -0
  250. data/src/core/lib/promise/context.h +11 -0
  251. data/src/core/lib/promise/detail/basic_seq.h +1 -2
  252. data/src/core/lib/promise/detail/join_state.h +354 -398
  253. data/src/core/lib/promise/detail/promise_like.h +6 -5
  254. data/src/core/lib/promise/detail/seq_state.h +1178 -1178
  255. data/src/core/lib/promise/for_each.h +6 -6
  256. data/src/core/lib/promise/interceptor_list.h +6 -7
  257. data/src/core/lib/promise/latch.h +9 -9
  258. data/src/core/lib/promise/map.h +17 -0
  259. data/src/core/lib/promise/observable.h +182 -0
  260. data/src/core/lib/promise/party.cc +7 -8
  261. data/src/core/lib/promise/party.h +10 -8
  262. data/src/core/lib/promise/pipe.h +16 -35
  263. data/src/core/lib/promise/promise.h +1 -0
  264. data/src/core/lib/promise/status_flag.h +2 -0
  265. data/src/core/lib/resource_quota/arena.cc +56 -79
  266. data/src/core/lib/resource_quota/arena.h +118 -209
  267. data/src/core/lib/resource_quota/memory_quota.cc +12 -13
  268. data/src/core/lib/resource_quota/memory_quota.h +2 -3
  269. data/src/core/lib/resource_quota/periodic_update.cc +1 -1
  270. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  271. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  272. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
  273. data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
  274. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
  275. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
  276. data/src/core/lib/security/authorization/matchers.cc +3 -3
  277. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
  278. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
  279. data/src/core/lib/security/context/security_context.cc +12 -13
  280. data/src/core/lib/security/context/security_context.h +31 -8
  281. data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
  282. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
  283. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
  284. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
  285. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
  286. data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
  287. data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
  288. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
  289. data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
  290. data/src/core/lib/security/credentials/credentials.cc +6 -6
  291. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
  292. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
  293. data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
  294. data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
  295. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
  296. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
  297. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
  298. data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
  299. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
  300. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
  301. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
  302. data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
  303. data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
  304. data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
  305. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
  307. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
  308. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
  309. data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
  310. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  312. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
  313. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
  314. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
  315. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  316. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
  317. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
  318. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
  319. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
  320. data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
  321. data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
  322. data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
  323. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
  324. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
  325. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
  326. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
  327. data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
  328. data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
  329. data/src/core/lib/security/security_connector/security_connector.cc +1 -4
  330. data/src/core/lib/security/security_connector/security_connector.h +1 -3
  331. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
  332. data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
  333. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
  334. data/src/core/lib/security/transport/auth_filters.h +1 -0
  335. data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
  336. data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
  337. data/src/core/lib/security/util/json_util.h +1 -1
  338. data/src/core/lib/slice/slice.h +1 -1
  339. data/src/core/lib/slice/slice_refcount.h +2 -4
  340. data/src/core/lib/slice/slice_string_helpers.cc +1 -1
  341. data/src/core/lib/surface/api_trace.h +1 -3
  342. data/src/core/lib/surface/call.cc +64 -3738
  343. data/src/core/lib/surface/call.h +41 -143
  344. data/src/core/lib/surface/call_log_batch.cc +1 -1
  345. data/src/core/lib/surface/call_utils.cc +276 -0
  346. data/src/core/lib/surface/call_utils.h +449 -0
  347. data/src/core/lib/surface/channel.cc +8 -3
  348. data/src/core/lib/surface/channel.h +10 -7
  349. data/src/core/lib/surface/channel_create.cc +14 -6
  350. data/src/core/lib/surface/channel_create.h +3 -2
  351. data/src/core/lib/surface/channel_init.cc +21 -77
  352. data/src/core/lib/surface/channel_init.h +19 -97
  353. data/src/core/lib/surface/client_call.cc +419 -0
  354. data/src/core/lib/surface/client_call.h +180 -0
  355. data/src/core/lib/surface/completion_queue.cc +28 -33
  356. data/src/core/lib/surface/completion_queue.h +0 -8
  357. data/src/core/lib/surface/filter_stack_call.cc +1157 -0
  358. data/src/core/lib/surface/filter_stack_call.h +369 -0
  359. data/src/core/lib/surface/init.cc +7 -6
  360. data/src/core/lib/surface/lame_client.cc +1 -1
  361. data/src/core/lib/surface/legacy_channel.cc +40 -27
  362. data/src/core/lib/surface/legacy_channel.h +9 -18
  363. data/src/core/lib/surface/server_call.cc +222 -0
  364. data/src/core/lib/surface/server_call.h +167 -0
  365. data/src/core/lib/surface/version.cc +2 -2
  366. data/src/core/lib/transport/bdp_estimator.cc +3 -5
  367. data/src/core/lib/transport/bdp_estimator.h +2 -4
  368. data/src/core/lib/transport/call_arena_allocator.h +9 -7
  369. data/src/core/lib/transport/call_destination.h +76 -0
  370. data/src/core/lib/transport/call_filters.cc +28 -10
  371. data/src/core/lib/transport/call_filters.h +128 -22
  372. data/src/core/lib/transport/call_spine.cc +5 -6
  373. data/src/core/lib/transport/call_spine.h +159 -334
  374. data/src/core/lib/transport/connectivity_state.cc +8 -10
  375. data/src/core/lib/transport/connectivity_state.h +0 -2
  376. data/src/core/lib/transport/interception_chain.cc +155 -0
  377. data/src/core/lib/transport/interception_chain.h +236 -0
  378. data/src/core/lib/transport/metadata_batch.h +10 -1
  379. data/src/core/lib/transport/metadata_info.h +1 -1
  380. data/src/core/lib/transport/transport.cc +3 -6
  381. data/src/core/lib/transport/transport.h +43 -40
  382. data/src/core/load_balancing/child_policy_handler.cc +8 -8
  383. data/src/core/load_balancing/endpoint_list.cc +5 -5
  384. data/src/core/load_balancing/endpoint_list.h +1 -1
  385. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
  386. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
  387. data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
  388. data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
  389. data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
  390. data/src/core/load_balancing/health_check_client.cc +10 -13
  391. data/src/core/load_balancing/lb_policy.cc +5 -8
  392. data/src/core/load_balancing/lb_policy.h +19 -3
  393. data/src/core/load_balancing/lb_policy_factory.h +1 -1
  394. data/src/core/load_balancing/lb_policy_registry.cc +2 -3
  395. data/src/core/load_balancing/lb_policy_registry.h +1 -1
  396. data/src/core/load_balancing/oob_backend_metric.cc +2 -4
  397. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
  398. data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
  399. data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
  400. data/src/core/load_balancing/priority/priority.cc +26 -28
  401. data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
  402. data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
  403. data/src/core/load_balancing/rls/rls.cc +82 -82
  404. data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
  405. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
  406. data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
  407. data/src/core/load_balancing/xds/cds.cc +14 -16
  408. data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
  409. data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
  410. data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
  411. data/src/core/load_balancing/xds/xds_override_host.h +3 -3
  412. data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
  413. data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
  414. data/src/core/resolver/binder/binder_resolver.cc +3 -2
  415. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
  416. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  417. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
  418. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
  419. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  420. data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
  421. data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
  422. data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
  423. data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
  424. data/src/core/resolver/endpoint_addresses.cc +1 -1
  425. data/src/core/resolver/fake/fake_resolver.cc +1 -1
  426. data/src/core/resolver/fake/fake_resolver.h +1 -1
  427. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
  428. data/src/core/resolver/polling_resolver.cc +30 -35
  429. data/src/core/resolver/resolver.cc +2 -6
  430. data/src/core/resolver/resolver.h +0 -2
  431. data/src/core/resolver/resolver_registry.cc +6 -8
  432. data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
  433. data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
  434. data/src/core/resolver/xds/xds_resolver.cc +13 -15
  435. data/src/core/server/server.cc +269 -389
  436. data/src/core/server/server.h +37 -19
  437. data/src/core/server/server_call_tracer_filter.cc +7 -14
  438. data/src/core/server/server_config_selector.h +1 -1
  439. data/src/core/server/server_config_selector_filter.cc +3 -3
  440. data/src/core/server/server_interface.h +2 -0
  441. data/src/core/server/xds_channel_stack_modifier.cc +1 -1
  442. data/src/core/server/xds_channel_stack_modifier.h +1 -1
  443. data/src/core/server/xds_server_config_fetcher.cc +1 -4
  444. data/src/core/service_config/service_config.h +1 -1
  445. data/src/core/service_config/service_config_call_data.h +13 -11
  446. data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
  447. data/src/core/service_config/service_config_impl.cc +5 -5
  448. data/src/core/service_config/service_config_impl.h +1 -1
  449. data/src/core/service_config/service_config_parser.cc +3 -6
  450. data/src/core/service_config/service_config_parser.h +1 -1
  451. data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
  452. data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
  453. data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
  454. data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
  455. data/src/core/telemetry/metrics.cc +178 -0
  456. data/src/core/telemetry/metrics.h +562 -0
  457. data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
  458. data/src/core/{lib/debug → telemetry}/stats.h +5 -5
  459. data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
  460. data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
  461. data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
  462. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
  463. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
  464. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
  465. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  466. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
  467. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
  468. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
  469. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  470. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
  471. data/src/core/tsi/fake_transport_security.cc +14 -17
  472. data/src/core/tsi/local_transport_security.cc +6 -5
  473. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
  474. data/src/core/tsi/ssl_transport_security.cc +76 -81
  475. data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
  476. data/src/core/tsi/ssl_transport_security_utils.h +11 -0
  477. data/src/core/tsi/transport_security.cc +0 -4
  478. data/src/core/tsi/transport_security.h +0 -2
  479. data/src/core/tsi/transport_security_interface.h +0 -4
  480. data/src/core/{lib/gpr → util}/alloc.h +3 -3
  481. data/src/core/{lib/gpr → util}/android/log.cc +0 -19
  482. data/src/core/{lib/gpr → util}/atm.cc +1 -1
  483. data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
  484. data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
  485. data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
  486. data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
  487. data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
  488. data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
  489. data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
  490. data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
  491. data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
  492. data/src/core/{lib/http → util/http_client}/parser.h +5 -6
  493. data/src/core/{lib → util}/json/json.h +5 -4
  494. data/src/core/{lib → util}/json/json_args.h +5 -5
  495. data/src/core/{lib → util}/json/json_channel_args.h +6 -6
  496. data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
  497. data/src/core/{lib → util}/json/json_object_loader.h +7 -7
  498. data/src/core/{lib → util}/json/json_reader.cc +3 -2
  499. data/src/core/{lib → util}/json/json_reader.h +6 -6
  500. data/src/core/{lib → util}/json/json_util.cc +4 -4
  501. data/src/core/{lib → util}/json/json_util.h +6 -6
  502. data/src/core/{lib → util}/json/json_writer.cc +3 -3
  503. data/src/core/{lib → util}/json/json_writer.h +6 -6
  504. data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
  505. data/src/core/util/log.cc +165 -0
  506. data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
  507. data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
  508. data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
  509. data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
  510. data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
  511. data/src/core/{lib/gpr → util}/spinlock.h +3 -3
  512. data/src/core/{lib/gpr → util}/string.cc +2 -2
  513. data/src/core/{lib/gpr → util}/string.h +3 -3
  514. data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
  515. data/src/core/{lib/gpr → util}/time_precise.h +3 -3
  516. data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
  517. data/src/core/{lib/gpr → util}/useful.h +3 -3
  518. data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
  519. data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
  520. data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
  521. data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
  522. data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
  523. data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
  524. data/src/core/xds/grpc/certificate_provider_store.h +4 -4
  525. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
  526. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
  527. data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
  528. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
  529. data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
  530. data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
  531. data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
  532. data/src/core/xds/grpc/xds_client_grpc.h +2 -2
  533. data/src/core/xds/grpc/xds_cluster.cc +4 -5
  534. data/src/core/xds/grpc/xds_cluster.h +1 -1
  535. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
  536. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
  537. data/src/core/xds/grpc/xds_common_types.cc +1 -1
  538. data/src/core/xds/grpc/xds_common_types.h +1 -1
  539. data/src/core/xds/grpc/xds_endpoint.cc +4 -5
  540. data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
  541. data/src/core/xds/grpc/xds_http_filters.h +2 -2
  542. data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
  543. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
  544. data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
  545. data/src/core/xds/grpc/xds_listener.cc +4 -6
  546. data/src/core/xds/grpc/xds_route_config.cc +7 -8
  547. data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
  548. data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
  549. data/src/core/xds/xds_client/xds_api.cc +5 -9
  550. data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
  551. data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
  552. data/src/core/xds/xds_client/xds_client.cc +39 -45
  553. data/src/core/xds/xds_client/xds_client.h +0 -3
  554. data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
  555. data/src/core/xds/xds_client/xds_client_stats.h +2 -2
  556. data/src/ruby/bin/math_pb.rb +1 -22
  557. data/src/ruby/ext/grpc/rb_call.c +8 -1
  558. data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
  559. data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
  560. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
  561. data/src/ruby/ext/grpc/rb_server.c +39 -22
  562. data/src/ruby/lib/grpc/version.rb +1 -1
  563. data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
  564. data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
  565. data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
  566. data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
  567. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
  568. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
  569. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
  570. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
  571. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
  572. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
  573. data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
  576. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
  577. data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
  579. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
  580. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
  581. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
  582. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
  583. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
  589. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
  590. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
  591. data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
  592. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
  593. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
  594. data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
  595. metadata +103 -93
  596. data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
  597. data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
  598. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
  599. data/src/core/handshaker/security/tsi_error.cc +0 -31
  600. data/src/core/handshaker/security/tsi_error.h +0 -30
  601. data/src/core/lib/channel/channel_stack_trace.cc +0 -19
  602. data/src/core/lib/channel/channel_stack_trace.h +0 -24
  603. data/src/core/lib/channel/context.h +0 -105
  604. data/src/core/lib/channel/metrics.cc +0 -334
  605. data/src/core/lib/channel/metrics.h +0 -365
  606. data/src/core/lib/event_engine/trace.cc +0 -25
  607. data/src/core/lib/gpr/log.cc +0 -166
  608. data/src/core/lib/iomgr/ev_windows.cc +0 -30
  609. data/src/core/lib/promise/trace.cc +0 -20
  610. data/src/core/lib/promise/trace.h +0 -24
  611. data/src/core/lib/resource_quota/trace.cc +0 -19
  612. data/src/core/lib/resource_quota/trace.h +0 -24
  613. data/src/core/lib/slice/slice_refcount.cc +0 -20
  614. data/src/core/lib/surface/api_trace.cc +0 -25
  615. data/src/core/lib/surface/call_trace.h +0 -24
  616. data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
  617. data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
  618. data/src/core/lib/transport/batch_builder.cc +0 -172
  619. data/src/core/lib/transport/batch_builder.h +0 -474
  620. data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
  621. data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
  622. data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
  623. /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
  624. /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
  625. /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
  626. /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
  627. /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
  628. /data/src/core/{lib/gpr → util}/sync.cc +0 -0
  629. /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
  630. /data/src/core/{lib/gpr → util}/time.cc +0 -0
  631. /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
  632. /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -29,6 +29,7 @@
29
29
  #include <vector>
30
30
 
31
31
  #include "absl/log/check.h"
32
+ #include "absl/log/log.h"
32
33
  #include "absl/strings/match.h"
33
34
  #include "absl/strings/str_cat.h"
34
35
  #include "absl/strings/str_format.h"
@@ -36,11 +37,10 @@
36
37
 
37
38
  #include <grpc/impl/channel_arg_names.h>
38
39
  #include <grpc/support/alloc.h>
39
- #include <grpc/support/log.h>
40
40
  #include <grpc/support/port_platform.h>
41
41
  #include <grpc/support/string_util.h>
42
42
 
43
- #include "src/core/lib/gpr/useful.h"
43
+ #include "src/core/util/useful.h"
44
44
 
45
45
  namespace grpc_core {
46
46
 
@@ -264,8 +264,7 @@ absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
264
264
  if (v == nullptr) return absl::nullopt;
265
265
  auto i = v->GetIfInt();
266
266
  if (!i.has_value()) {
267
- gpr_log(GPR_ERROR, "%s ignored: it must be an integer",
268
- std::string(name).c_str());
267
+ LOG(ERROR) << name << " ignored: it must be an integer";
269
268
  return absl::nullopt;
270
269
  }
271
270
  switch (*i) {
@@ -274,8 +273,8 @@ absl::optional<bool> ChannelArgs::GetBool(absl::string_view name) const {
274
273
  case 1:
275
274
  return true;
276
275
  default:
277
- gpr_log(GPR_ERROR, "%s treated as bool but set to %d (assuming true)",
278
- std::string(name).c_str(), *i);
276
+ LOG(ERROR) << name << " treated as bool but set to " << *i
277
+ << " (assuming true)";
279
278
  return true;
280
279
  }
281
280
  }
@@ -557,17 +556,15 @@ int grpc_channel_arg_get_integer(const grpc_arg* arg,
557
556
  const grpc_integer_options options) {
558
557
  if (arg == nullptr) return options.default_value;
559
558
  if (arg->type != GRPC_ARG_INTEGER) {
560
- gpr_log(GPR_ERROR, "%s ignored: it must be an integer", arg->key);
559
+ LOG(ERROR) << arg->key << " ignored: it must be an integer";
561
560
  return options.default_value;
562
561
  }
563
562
  if (arg->value.integer < options.min_value) {
564
- gpr_log(GPR_ERROR, "%s ignored: it must be >= %d", arg->key,
565
- options.min_value);
563
+ LOG(ERROR) << arg->key << " ignored: it must be >= " << options.min_value;
566
564
  return options.default_value;
567
565
  }
568
566
  if (arg->value.integer > options.max_value) {
569
- gpr_log(GPR_ERROR, "%s ignored: it must be <= %d", arg->key,
570
- options.max_value);
567
+ LOG(ERROR) << arg->key << " ignored: it must be <= " << options.max_value;
571
568
  return options.default_value;
572
569
  }
573
570
  return arg->value.integer;
@@ -583,7 +580,7 @@ int grpc_channel_args_find_integer(const grpc_channel_args* args,
583
580
  char* grpc_channel_arg_get_string(const grpc_arg* arg) {
584
581
  if (arg == nullptr) return nullptr;
585
582
  if (arg->type != GRPC_ARG_STRING) {
586
- gpr_log(GPR_ERROR, "%s ignored: it must be an string", arg->key);
583
+ LOG(ERROR) << arg->key << " ignored: it must be an string";
587
584
  return nullptr;
588
585
  }
589
586
  return arg->value.string;
@@ -598,7 +595,7 @@ char* grpc_channel_args_find_string(const grpc_channel_args* args,
598
595
  bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value) {
599
596
  if (arg == nullptr) return default_value;
600
597
  if (arg->type != GRPC_ARG_INTEGER) {
601
- gpr_log(GPR_ERROR, "%s ignored: it must be an integer", arg->key);
598
+ LOG(ERROR) << arg->key << " ignored: it must be an integer";
602
599
  return default_value;
603
600
  }
604
601
  switch (arg->value.integer) {
@@ -607,8 +604,8 @@ bool grpc_channel_arg_get_bool(const grpc_arg* arg, bool default_value) {
607
604
  case 1:
608
605
  return true;
609
606
  default:
610
- gpr_log(GPR_ERROR, "%s treated as bool but set to %d (assuming true)",
611
- arg->key, arg->value.integer);
607
+ LOG(ERROR) << arg->key << " treated as bool but set to "
608
+ << arg->value.integer << " (assuming true)";
612
609
  return true;
613
610
  }
614
611
  }
@@ -667,8 +664,7 @@ ChannelArgs ChannelArgsBuiltinPrecondition(const grpc_channel_args* src) {
667
664
  if (key == GRPC_ARG_PRIMARY_USER_AGENT_STRING ||
668
665
  key == GRPC_ARG_SECONDARY_USER_AGENT_STRING) {
669
666
  if (src->args[i].type != GRPC_ARG_STRING) {
670
- gpr_log(GPR_ERROR, "Channel argument '%s' should be a string",
671
- std::string(key).c_str());
667
+ LOG(ERROR) << "Channel argument '" << key << "' should be a string";
672
668
  } else {
673
669
  concatenated_values[key].push_back(src->args[i].value.string);
674
670
  }
@@ -38,7 +38,6 @@
38
38
  #include <grpc/support/port_platform.h>
39
39
 
40
40
  #include "src/core/lib/avl/avl.h"
41
- #include "src/core/lib/gpr/useful.h"
42
41
  #include "src/core/lib/gprpp/debug_location.h"
43
42
  #include "src/core/lib/gprpp/dual_ref_counted.h"
44
43
  #include "src/core/lib/gprpp/ref_counted.h"
@@ -46,6 +45,7 @@
46
45
  #include "src/core/lib/gprpp/ref_counted_string.h"
47
46
  #include "src/core/lib/gprpp/time.h"
48
47
  #include "src/core/lib/surface/channel_stack_type.h"
48
+ #include "src/core/util/useful.h"
49
49
 
50
50
  // TODO(hork): When we're ready to allow setting via a channel arg from the
51
51
  // application, replace this with a macro in
@@ -83,6 +83,16 @@ inline int PointerCompare(void* a_ptr, const grpc_arg_pointer_vtable* a_vtable,
83
83
  // before the crt refcount base class.
84
84
  template <typename T>
85
85
  using RefType = absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
86
+
87
+ template <typename T, typename Ignored = void /* for SFINAE */>
88
+ struct IsRawPointerTagged {
89
+ static constexpr bool kValue = false;
90
+ };
91
+ template <typename T>
92
+ struct IsRawPointerTagged<T,
93
+ absl::void_t<typename T::RawPointerChannelArgTag>> {
94
+ static constexpr bool kValue = true;
95
+ };
86
96
  } // namespace channel_args_detail
87
97
 
88
98
  // Specialization for ref-counted pointers.
@@ -91,13 +101,14 @@ using RefType = absl::remove_cvref_t<decltype(*std::declval<T>().Ref())>;
91
101
  template <typename T>
92
102
  struct ChannelArgTypeTraits<
93
103
  T, absl::enable_if_t<
94
- std::is_base_of<RefCounted<channel_args_detail::RefType<T>>,
95
- channel_args_detail::RefType<T>>::value ||
96
- std::is_base_of<RefCounted<channel_args_detail::RefType<T>,
97
- NonPolymorphicRefCount>,
98
- channel_args_detail::RefType<T>>::value ||
99
- std::is_base_of<DualRefCounted<channel_args_detail::RefType<T>>,
100
- channel_args_detail::RefType<T>>::value,
104
+ !channel_args_detail::IsRawPointerTagged<T>::kValue &&
105
+ (std::is_base_of<RefCounted<channel_args_detail::RefType<T>>,
106
+ channel_args_detail::RefType<T>>::value ||
107
+ std::is_base_of<RefCounted<channel_args_detail::RefType<T>,
108
+ NonPolymorphicRefCount>,
109
+ channel_args_detail::RefType<T>>::value ||
110
+ std::is_base_of<DualRefCounted<channel_args_detail::RefType<T>>,
111
+ channel_args_detail::RefType<T>>::value),
101
112
  void>> {
102
113
  static const grpc_arg_pointer_vtable* VTable() {
103
114
  static const grpc_arg_pointer_vtable tbl = {
@@ -24,20 +24,18 @@
24
24
  #include <utility>
25
25
 
26
26
  #include "absl/log/check.h"
27
+ #include "absl/log/log.h"
27
28
 
28
29
  #include <grpc/support/log.h>
29
30
  #include <grpc/support/port_platform.h>
30
31
 
31
32
  #include "src/core/lib/channel/channel_args.h"
32
33
  #include "src/core/lib/channel/channel_fwd.h"
33
- #include "src/core/lib/channel/channel_stack_trace.h"
34
- #include "src/core/lib/gpr/alloc.h"
35
34
  #include "src/core/lib/surface/channel_init.h"
35
+ #include "src/core/util/alloc.h"
36
36
 
37
37
  using grpc_event_engine::experimental::EventEngine;
38
38
 
39
- grpc_core::TraceFlag grpc_trace_channel(false, "channel");
40
-
41
39
  static int register_get_name_fn = []() {
42
40
  grpc_core::NameFromChannelFilter = [](const grpc_channel_filter* filter) {
43
41
  return filter->name;
@@ -120,11 +118,10 @@ grpc_error_handle grpc_channel_stack_init(
120
118
  const grpc_channel_filter** filters, size_t filter_count,
121
119
  const grpc_core::ChannelArgs& channel_args, const char* name,
122
120
  grpc_channel_stack* stack) {
123
- if (grpc_trace_channel_stack.enabled()) {
124
- gpr_log(GPR_INFO, "CHANNEL_STACK: init %s", name);
121
+ if (GRPC_TRACE_FLAG_ENABLED(channel_stack)) {
122
+ LOG(INFO) << "CHANNEL_STACK: init " << name;
125
123
  for (size_t i = 0; i < filter_count; i++) {
126
- gpr_log(GPR_INFO, "CHANNEL_STACK: filter %s%s", filters[i]->name,
127
- filters[i]->make_call_promise ? " [promise-capable]" : "");
124
+ LOG(INFO) << "CHANNEL_STACK: filter " << filters[i]->name;
128
125
  }
129
126
  }
130
127
 
@@ -296,61 +293,6 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
296
293
  void grpc_channel_stack_no_post_init(grpc_channel_stack*,
297
294
  grpc_channel_element*) {}
298
295
 
299
- namespace {
300
-
301
- grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
302
- return [elem](grpc_core::CallArgs args) {
303
- return elem->filter->make_call_promise(elem, std::move(args),
304
- ClientNext(elem + 1));
305
- };
306
- }
307
-
308
- grpc_core::NextPromiseFactory ServerNext(grpc_channel_element* elem) {
309
- return [elem](grpc_core::CallArgs args) {
310
- return elem->filter->make_call_promise(elem, std::move(args),
311
- ServerNext(elem - 1));
312
- };
313
- }
314
-
315
- } // namespace
316
-
317
- grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
318
- grpc_channel_stack::MakeClientCallPromise(grpc_core::CallArgs call_args) {
319
- return ClientNext(grpc_channel_stack_element(this, 0))(std::move(call_args));
320
- }
321
-
322
- grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
323
- grpc_channel_stack::MakeServerCallPromise(grpc_core::CallArgs call_args) {
324
- return ServerNext(grpc_channel_stack_element(this, this->count - 1))(
325
- std::move(call_args));
326
- }
327
-
328
- void grpc_channel_stack::InitClientCallSpine(
329
- grpc_core::CallSpineInterface* call) {
330
- for (size_t i = 0; i < count; i++) {
331
- auto* elem = grpc_channel_stack_element(this, i);
332
- if (elem->filter->init_call == nullptr) {
333
- grpc_core::Crash(
334
- absl::StrCat("Filter '", elem->filter->name,
335
- "' does not support the call-v3 interface"));
336
- }
337
- elem->filter->init_call(elem, call);
338
- }
339
- }
340
-
341
- void grpc_channel_stack::InitServerCallSpine(
342
- grpc_core::CallSpineInterface* call) {
343
- for (size_t i = 0; i < count; i++) {
344
- auto* elem = grpc_channel_stack_element(this, count - 1 - i);
345
- if (elem->filter->init_call == nullptr) {
346
- grpc_core::Crash(
347
- absl::StrCat("Filter '", elem->filter->name,
348
- "' does not support the call-v3 interface"));
349
- }
350
- elem->filter->init_call(elem, call);
351
- }
352
- }
353
-
354
296
  void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
355
297
  grpc_call_element* elem,
356
298
  grpc_transport_stream_op_batch* op) {
@@ -59,10 +59,7 @@
59
59
 
60
60
  #include "src/core/lib/channel/channel_args.h"
61
61
  #include "src/core/lib/channel/channel_fwd.h"
62
- #include "src/core/lib/channel/context.h"
63
- #include "src/core/lib/channel/metrics.h"
64
62
  #include "src/core/lib/debug/trace.h"
65
- #include "src/core/lib/gpr/time_precise.h"
66
63
  #include "src/core/lib/gprpp/manual_constructor.h"
67
64
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
68
65
  #include "src/core/lib/gprpp/time.h"
@@ -74,6 +71,8 @@
74
71
  #include "src/core/lib/resource_quota/arena.h"
75
72
  #include "src/core/lib/transport/call_final_info.h"
76
73
  #include "src/core/lib/transport/transport.h"
74
+ #include "src/core/telemetry/metrics.h"
75
+ #include "src/core/util/time_precise.h"
77
76
 
78
77
  struct grpc_channel_element_args {
79
78
  grpc_channel_stack* channel_stack;
@@ -84,7 +83,6 @@ struct grpc_channel_element_args {
84
83
  struct grpc_call_element_args {
85
84
  grpc_call_stack* call_stack;
86
85
  const void* server_transport_data;
87
- grpc_call_context_element* context;
88
86
  const grpc_slice& path;
89
87
  gpr_cycle_counter start_time; // Note: not populated in subchannel stack.
90
88
  grpc_core::Timestamp deadline;
@@ -107,24 +105,6 @@ struct grpc_channel_filter {
107
105
  // See grpc_call_next_op on how to call the next element in the stack
108
106
  void (*start_transport_stream_op_batch)(grpc_call_element* elem,
109
107
  grpc_transport_stream_op_batch* op);
110
- // Create a promise to execute one call.
111
- // If this is non-null, it may be used in preference to
112
- // start_transport_stream_op_batch.
113
- // If this is used in preference to start_transport_stream_op_batch, the
114
- // following can be omitted also:
115
- // - calling init_call_elem, destroy_call_elem, set_pollset_or_pollset_set
116
- // - allocation of memory for call data
117
- // There is an on-going migration to move all filters to providing this, and
118
- // then to drop start_transport_stream_op_batch.
119
- grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle> (*make_call_promise)(
120
- grpc_channel_element* elem, grpc_core::CallArgs call_args,
121
- grpc_core::NextPromiseFactory next_promise_factory);
122
- // Register interceptors into a call.
123
- // If this is non-null it may be used in preference to make_call_promise.
124
- // There is an on-going migration to move all filters to providing this, and
125
- // then to drop start_transport_stream_op_batch.
126
- void (*init_call)(grpc_channel_element* elem,
127
- grpc_core::CallSpineInterface* call_spine);
128
108
  // Called to handle channel level operations - e.g. new calls, or transport
129
109
  // closure.
130
110
  // See grpc_channel_next_op on how to call the next element in the stack
@@ -230,18 +210,11 @@ struct grpc_channel_stack {
230
210
  // full C++-ification for now.
231
211
  void IncrementRefCount();
232
212
  void Unref();
213
+ void Unref(const grpc_core::DebugLocation& location, const char* reason);
233
214
  grpc_core::RefCountedPtr<grpc_channel_stack> Ref() {
234
215
  IncrementRefCount();
235
216
  return grpc_core::RefCountedPtr<grpc_channel_stack>(this);
236
217
  }
237
-
238
- grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
239
- MakeClientCallPromise(grpc_core::CallArgs call_args);
240
- grpc_core::ArenaPromise<grpc_core::ServerMetadataHandle>
241
- MakeServerCallPromise(grpc_core::CallArgs call_args);
242
-
243
- void InitClientCallSpine(grpc_core::CallSpineInterface* call);
244
- void InitServerCallSpine(grpc_core::CallSpineInterface* call);
245
218
  };
246
219
 
247
220
  // A call stack tracks a set of related filters for one call, and guarantees
@@ -346,6 +319,11 @@ inline void grpc_channel_stack::Unref() {
346
319
  GRPC_CHANNEL_STACK_UNREF(this, "smart_pointer");
347
320
  }
348
321
 
322
+ inline void grpc_channel_stack::Unref(const grpc_core::DebugLocation&,
323
+ const char* reason) {
324
+ GRPC_CHANNEL_STACK_UNREF(this, reason);
325
+ }
326
+
349
327
  inline void grpc_call_stack::IncrementRefCount() {
350
328
  GRPC_CALL_STACK_REF(this, "smart_pointer");
351
329
  }
@@ -386,13 +364,11 @@ void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
386
364
  void grpc_channel_stack_no_post_init(grpc_channel_stack* stk,
387
365
  grpc_channel_element* elem);
388
366
 
389
- extern grpc_core::TraceFlag grpc_trace_channel;
390
-
391
- #define GRPC_CALL_LOG_OP(sev, elem, op) \
392
- do { \
393
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_channel)) { \
394
- grpc_call_log_op(sev, elem, op); \
395
- } \
367
+ #define GRPC_CALL_LOG_OP(sev, elem, op) \
368
+ do { \
369
+ if (GRPC_TRACE_FLAG_ENABLED(channel)) { \
370
+ grpc_call_log_op(sev, elem, op); \
371
+ } \
396
372
  } while (0)
397
373
 
398
374
  #endif // GRPC_SRC_CORE_LIB_CHANNEL_CHANNEL_STACK_H
@@ -74,11 +74,6 @@ class ChannelStackBuilder {
74
74
  // Helper to add a filter to the end of the stack.
75
75
  void AppendFilter(const grpc_channel_filter* filter);
76
76
 
77
- // Determine whether a promise-based call stack is able to be built.
78
- // Iterates each filter and ensures that there's a promise factory there.
79
- // This will go away once the promise conversion is completed.
80
- virtual bool IsPromising() const = 0;
81
-
82
77
  // Build the channel stack.
83
78
  // After success, *result holds the new channel stack,
84
79
  // prefix_bytes are allocated before the channel stack,
@@ -46,7 +46,6 @@
46
46
  #include "src/core/lib/promise/activity.h"
47
47
  #include "src/core/lib/promise/arena_promise.h"
48
48
  #include "src/core/lib/promise/poll.h"
49
- #include "src/core/lib/surface/call_trace.h"
50
49
  #include "src/core/lib/surface/channel_stack_type.h"
51
50
  #include "src/core/lib/transport/error_utils.h"
52
51
  #include "src/core/lib/transport/metadata_batch.h"
@@ -54,153 +53,12 @@
54
53
 
55
54
  namespace grpc_core {
56
55
 
57
- namespace {
58
-
59
- const grpc_channel_filter* PromiseTracingFilterFor(
60
- const grpc_channel_filter* filter) {
61
- struct DerivedFilter : public grpc_channel_filter {
62
- explicit DerivedFilter(const grpc_channel_filter* filter)
63
- : grpc_channel_filter{
64
- // start_transport_stream_op_batch:
65
- grpc_call_next_op,
66
- // make_call_promise:
67
- [](grpc_channel_element* elem, CallArgs call_args,
68
- NextPromiseFactory next_promise_factory)
69
- -> ArenaPromise<ServerMetadataHandle> {
70
- auto* source_filter =
71
- static_cast<const DerivedFilter*>(elem->filter)->filter;
72
- gpr_log(
73
- GPR_DEBUG,
74
- "%s[%s] CreateCallPromise: client_initial_metadata=%s",
75
- GetContext<Activity>()->DebugTag().c_str(),
76
- source_filter->name,
77
- call_args.client_initial_metadata->DebugString().c_str());
78
- return [source_filter, child = next_promise_factory(
79
- std::move(call_args))]() mutable {
80
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: begin",
81
- GetContext<Activity>()->DebugTag().c_str(),
82
- source_filter->name);
83
- auto r = child();
84
- if (auto* p = r.value_if_ready()) {
85
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: done: %s",
86
- GetContext<Activity>()->DebugTag().c_str(),
87
- source_filter->name, (*p)->DebugString().c_str());
88
- } else {
89
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: <<pending>>",
90
- GetContext<Activity>()->DebugTag().c_str(),
91
- source_filter->name);
92
- }
93
- return r;
94
- };
95
- },
96
- /* init_call: */
97
- [](grpc_channel_element* elem, CallSpineInterface* call) {
98
- auto* c = DownCast<PipeBasedCallSpine*>(call);
99
- auto* source_filter =
100
- static_cast<const DerivedFilter*>(elem->filter)->filter;
101
- c->client_initial_metadata().receiver.InterceptAndMap(
102
- [source_filter](ClientMetadataHandle md) {
103
- gpr_log(GPR_DEBUG, "%s[%s] OnClientInitialMetadata: %s",
104
- GetContext<Activity>()->DebugTag().c_str(),
105
- source_filter->name, md->DebugString().c_str());
106
- return md;
107
- });
108
- c->client_to_server_messages().receiver.InterceptAndMap(
109
- [source_filter](MessageHandle msg) {
110
- gpr_log(GPR_DEBUG, "%s[%s] OnClientToServerMessage: %s",
111
- GetContext<Activity>()->DebugTag().c_str(),
112
- source_filter->name, msg->DebugString().c_str());
113
- return msg;
114
- });
115
- c->server_initial_metadata().sender.InterceptAndMap(
116
- [source_filter](ServerMetadataHandle md) {
117
- gpr_log(GPR_DEBUG, "%s[%s] OnServerInitialMetadata: %s",
118
- GetContext<Activity>()->DebugTag().c_str(),
119
- source_filter->name, md->DebugString().c_str());
120
- return md;
121
- });
122
- c->server_to_client_messages().sender.InterceptAndMap(
123
- [source_filter](MessageHandle msg) {
124
- gpr_log(GPR_DEBUG, "%s[%s] OnServerToClientMessage: %s",
125
- GetContext<Activity>()->DebugTag().c_str(),
126
- source_filter->name, msg->DebugString().c_str());
127
- return msg;
128
- });
129
- },
130
- grpc_channel_next_op,
131
- /* sizeof_call_data: */ 0,
132
- // init_call_elem:
133
- [](grpc_call_element*, const grpc_call_element_args*) {
134
- return absl::OkStatus();
135
- },
136
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
137
- // destroy_call_elem:
138
- [](grpc_call_element*, const grpc_call_final_info*,
139
- grpc_closure*) {},
140
- // sizeof_channel_data:
141
- 0,
142
- // init_channel_elem:
143
- [](grpc_channel_element*, grpc_channel_element_args*) {
144
- return absl::OkStatus();
145
- },
146
- // post_init_channel_elem:
147
- [](grpc_channel_stack*, grpc_channel_element*) {},
148
- // destroy_channel_elem:
149
- [](grpc_channel_element*) {}, grpc_channel_next_get_info,
150
- // name:
151
- nullptr},
152
- filter(filter),
153
- name_str(absl::StrCat(filter->name, ".trace")) {
154
- this->name = name_str.c_str();
155
- }
156
- const grpc_channel_filter* const filter;
157
- const std::string name_str;
158
- };
159
- struct Globals {
160
- Mutex mu;
161
- absl::flat_hash_map<const grpc_channel_filter*,
162
- std::unique_ptr<DerivedFilter>>
163
- map ABSL_GUARDED_BY(mu);
164
- };
165
- auto* globals = NoDestructSingleton<Globals>::Get();
166
- MutexLock lock(&globals->mu);
167
- auto it = globals->map.find(filter);
168
- if (it != globals->map.end()) return it->second.get();
169
- return globals->map.emplace(filter, std::make_unique<DerivedFilter>(filter))
170
- .first->second.get();
171
- }
172
-
173
- } // namespace
174
-
175
- bool ChannelStackBuilderImpl::IsPromising() const {
176
- for (const auto* filter : stack()) {
177
- if (filter->make_call_promise == nullptr) return false;
178
- }
179
- return true;
180
- }
181
-
182
56
  absl::StatusOr<RefCountedPtr<grpc_channel_stack>>
183
57
  ChannelStackBuilderImpl::Build() {
184
58
  std::vector<const grpc_channel_filter*> stack;
185
- const bool is_promising = IsPromising();
186
- const bool is_client =
187
- grpc_channel_stack_type_is_client(channel_stack_type());
188
- const bool client_promise_tracing =
189
- is_client && is_promising && grpc_call_trace.enabled();
190
- const bool server_promise_tracing =
191
- !is_client && is_promising && grpc_call_trace.enabled();
192
59
 
193
60
  for (const auto* filter : this->stack()) {
194
- if (client_promise_tracing) {
195
- stack.push_back(PromiseTracingFilterFor(filter));
196
- }
197
61
  stack.push_back(filter);
198
- if (server_promise_tracing) {
199
- stack.push_back(PromiseTracingFilterFor(filter));
200
- }
201
- }
202
- if (server_promise_tracing) {
203
- stack.pop_back(); // connected_channel must be last => can't be traced
204
62
  }
205
63
 
206
64
  // calculate the size of the channel stack
@@ -34,8 +34,6 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
34
34
  public:
35
35
  using ChannelStackBuilder::ChannelStackBuilder;
36
36
 
37
- bool IsPromising() const override;
38
-
39
37
  // Build the channel stack.
40
38
  // After success, *result holds the new channel stack,
41
39
  // prefix_bytes are allocated before the channel stack,