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
@@ -25,6 +25,7 @@
25
25
  #include <limits.h>
26
26
 
27
27
  #include "absl/log/check.h"
28
+ #include "absl/log/log.h"
28
29
 
29
30
  #include <grpc/slice_buffer.h>
30
31
  #include <grpc/support/alloc.h>
@@ -33,8 +34,6 @@
33
34
  #include <grpc/support/string_util.h>
34
35
 
35
36
  #include "src/core/lib/address_utils/sockaddr_utils.h"
36
- #include "src/core/lib/gpr/string.h"
37
- #include "src/core/lib/gpr/useful.h"
38
37
  #include "src/core/lib/gprpp/crash.h"
39
38
  #include "src/core/lib/iomgr/iocp_windows.h"
40
39
  #include "src/core/lib/iomgr/sockaddr.h"
@@ -45,6 +44,8 @@
45
44
  #include "src/core/lib/iomgr/timer.h"
46
45
  #include "src/core/lib/slice/slice_internal.h"
47
46
  #include "src/core/lib/slice/slice_string_helpers.h"
47
+ #include "src/core/util/string.h"
48
+ #include "src/core/util/useful.h"
48
49
 
49
50
  #if defined(__MSYS__) && defined(GPR_ARCH_64)
50
51
  // Nasty workaround for nasty bug when using the 64 bits msys compiler
@@ -54,8 +55,6 @@
54
55
  #define GRPC_FIONBIO FIONBIO
55
56
  #endif
56
57
 
57
- extern grpc_core::TraceFlag grpc_tcp_trace;
58
-
59
58
  grpc_error_handle grpc_tcp_set_non_block(SOCKET sock) {
60
59
  int status;
61
60
  uint32_t param = 1;
@@ -124,7 +123,6 @@ typedef struct grpc_tcp {
124
123
  // to protect ourselves when requesting a shutdown.
125
124
  gpr_mu mu;
126
125
  int shutting_down;
127
- grpc_error_handle shutdown_error;
128
126
 
129
127
  std::string peer_string;
130
128
  std::string local_address;
@@ -142,7 +140,7 @@ static void tcp_free(grpc_tcp* tcp) {
142
140
  #define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
143
141
  static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
144
142
  int line) {
145
- if (grpc_tcp_trace.enabled()) {
143
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
146
144
  gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
147
145
  gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
148
146
  "TCP unref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
@@ -155,7 +153,7 @@ static void tcp_unref(grpc_tcp* tcp, const char* reason, const char* file,
155
153
 
156
154
  static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
157
155
  int line) {
158
- if (grpc_tcp_trace.enabled()) {
156
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
159
157
  gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
160
158
  gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
161
159
  "TCP ref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
@@ -182,7 +180,7 @@ static void on_read(void* tcpp, grpc_error_handle error) {
182
180
  grpc_winsocket* socket = tcp->socket;
183
181
  grpc_winsocket_callback_info* info = &socket->read_info;
184
182
 
185
- if (grpc_tcp_trace.enabled()) {
183
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
186
184
  gpr_log(GPR_INFO, "TCP:%p on_read", tcp);
187
185
  }
188
186
 
@@ -203,27 +201,24 @@ static void on_read(void* tcpp, grpc_error_handle error) {
203
201
  }
204
202
  CHECK((size_t)info->bytes_transferred == tcp->read_slices->length);
205
203
 
206
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
207
- gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
204
+ if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
208
205
  size_t i;
209
206
  for (i = 0; i < tcp->read_slices->count; i++) {
210
207
  char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
211
208
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
212
- gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp,
213
- tcp->peer_string.c_str(), dump);
209
+ VLOG(2) << "READ " << tcp << " (peer=" << tcp->peer_string
210
+ << "): " << dump;
214
211
  gpr_free(dump);
215
212
  }
216
213
  }
217
214
  } else {
218
- if (grpc_tcp_trace.enabled()) {
215
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
219
216
  gpr_log(GPR_INFO, "TCP:%p unref read_slice", tcp);
220
217
  }
221
218
  grpc_slice_buffer_reset_and_unref(tcp->read_slices);
222
219
  error = grpc_error_set_int(
223
- tcp->shutting_down
224
- ? GRPC_ERROR_CREATE_REFERENCING("TCP stream shutting down",
225
- &tcp->shutdown_error, 1)
226
- : GRPC_ERROR_CREATE("End of TCP stream"),
220
+ tcp->shutting_down ? GRPC_ERROR_CREATE("TCP stream shutting down")
221
+ : GRPC_ERROR_CREATE("End of TCP stream"),
227
222
  grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE);
228
223
  }
229
224
  }
@@ -248,17 +243,16 @@ static void win_read(grpc_endpoint* ep, grpc_slice_buffer* read_slices,
248
243
  WSABUF buffers[MAX_WSABUF_COUNT];
249
244
  size_t i;
250
245
 
251
- if (grpc_tcp_trace.enabled()) {
246
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
252
247
  gpr_log(GPR_INFO, "TCP:%p win_read", tcp);
253
248
  }
254
249
 
255
250
  if (tcp->shutting_down) {
256
251
  grpc_core::ExecCtx::Run(
257
252
  DEBUG_LOCATION, cb,
258
- grpc_error_set_int(
259
- GRPC_ERROR_CREATE_REFERENCING("TCP socket is shutting down",
260
- &tcp->shutdown_error, 1),
261
- grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE));
253
+ grpc_error_set_int(GRPC_ERROR_CREATE("TCP socket is shutting down"),
254
+ grpc_core::StatusIntProperty::kRpcStatus,
255
+ GRPC_STATUS_UNAVAILABLE));
262
256
  return;
263
257
  }
264
258
 
@@ -320,7 +314,7 @@ static void on_write(void* tcpp, grpc_error_handle error) {
320
314
  grpc_winsocket_callback_info* info = &handle->write_info;
321
315
  grpc_closure* cb;
322
316
 
323
- if (grpc_tcp_trace.enabled()) {
317
+ if (GRPC_TRACE_FLAG_ENABLED(tcp)) {
324
318
  gpr_log(GPR_INFO, "TCP:%p on_write", tcp);
325
319
  }
326
320
 
@@ -356,14 +350,13 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
356
350
  WSABUF* buffers = local_buffers;
357
351
  size_t len, async_buffers_offset = 0;
358
352
 
359
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace) &&
360
- gpr_should_log(GPR_LOG_SEVERITY_INFO)) {
353
+ if (GRPC_TRACE_FLAG_ENABLED(tcp) && ABSL_VLOG_IS_ON(2)) {
361
354
  size_t i;
362
355
  for (i = 0; i < slices->count; i++) {
363
356
  char* data =
364
357
  grpc_dump_slice(slices->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
365
- gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string.c_str(),
366
- data);
358
+ VLOG(2) << "WRITE " << tcp << " (peer=" << tcp->peer_string
359
+ << "): " << data;
367
360
  gpr_free(data);
368
361
  }
369
362
  }
@@ -371,10 +364,9 @@ static void win_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
371
364
  if (tcp->shutting_down) {
372
365
  grpc_core::ExecCtx::Run(
373
366
  DEBUG_LOCATION, cb,
374
- grpc_error_set_int(
375
- GRPC_ERROR_CREATE_REFERENCING("TCP socket is shutting down",
376
- &tcp->shutdown_error, 1),
377
- grpc_core::StatusIntProperty::kRpcStatus, GRPC_STATUS_UNAVAILABLE));
367
+ grpc_error_set_int(GRPC_ERROR_CREATE("TCP socket is shutting down"),
368
+ grpc_core::StatusIntProperty::kRpcStatus,
369
+ GRPC_STATUS_UNAVAILABLE));
378
370
  return;
379
371
  }
380
372
 
@@ -479,21 +471,14 @@ static void win_delete_from_pollset_set(grpc_endpoint* /* ep */,
479
471
  // we're not going to protect against these. However the IO Completion Port
480
472
  // callback will happen from another thread, so we need to protect against
481
473
  // concurrent access of the data structure in that regard.
482
- static void win_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
474
+ static void win_destroy(grpc_endpoint* ep) {
483
475
  grpc_tcp* tcp = (grpc_tcp*)ep;
484
476
  gpr_mu_lock(&tcp->mu);
485
477
  // At that point, what may happen is that we're already inside the IOCP
486
478
  // callback. See the comments in on_read and on_write.
487
- if (!tcp->shutting_down) {
488
- tcp->shutting_down = 1;
489
- tcp->shutdown_error = why;
490
- }
479
+ tcp->shutting_down = 1;
491
480
  grpc_winsocket_shutdown(tcp->socket);
492
481
  gpr_mu_unlock(&tcp->mu);
493
- }
494
-
495
- static void win_destroy(grpc_endpoint* ep) {
496
- grpc_tcp* tcp = (grpc_tcp*)ep;
497
482
  grpc_slice_buffer_reset_and_unref(&tcp->last_read_buffer);
498
483
  TCP_UNREF(tcp, "destroy");
499
484
  }
@@ -517,7 +502,6 @@ static grpc_endpoint_vtable vtable = {win_read,
517
502
  win_add_to_pollset,
518
503
  win_add_to_pollset_set,
519
504
  win_delete_from_pollset_set,
520
- win_shutdown,
521
505
  win_destroy,
522
506
  win_get_peer,
523
507
  win_get_local_address,
@@ -31,8 +31,6 @@
31
31
  #include <grpc/support/sync.h>
32
32
 
33
33
  #include "src/core/lib/debug/trace.h"
34
- #include "src/core/lib/gpr/spinlock.h"
35
- #include "src/core/lib/gpr/useful.h"
36
34
  #include "src/core/lib/gprpp/crash.h"
37
35
  #include "src/core/lib/gprpp/manual_constructor.h"
38
36
  #include "src/core/lib/gprpp/time.h"
@@ -41,6 +39,8 @@
41
39
  #include "src/core/lib/iomgr/port.h"
42
40
  #include "src/core/lib/iomgr/timer.h"
43
41
  #include "src/core/lib/iomgr/timer_heap.h"
42
+ #include "src/core/util/spinlock.h"
43
+ #include "src/core/util/useful.h"
44
44
 
45
45
  #define INVALID_HEAP_INDEX 0xffffffffu
46
46
 
@@ -48,9 +48,6 @@
48
48
  #define MIN_QUEUE_WINDOW_DURATION 0.01
49
49
  #define MAX_QUEUE_WINDOW_DURATION 1.0
50
50
 
51
- grpc_core::TraceFlag grpc_timer_trace(false, "timer");
52
- grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
53
-
54
51
  // A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
55
52
  // deadlines earlier than 'queue_deadline_cap' are maintained in the heap and
56
53
  // others are maintained in the list (unordered). This helps to keep the number
@@ -337,7 +334,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
337
334
  timer->hash_table_next = nullptr;
338
335
  #endif
339
336
 
340
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
337
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
341
338
  gpr_log(GPR_DEBUG, "TIMER %p: SET %" PRId64 " now %" PRId64 " call %p[%p]",
342
339
  timer, deadline.milliseconds_after_process_epoch(),
343
340
  grpc_core::Timestamp::Now().milliseconds_after_process_epoch(),
@@ -373,7 +370,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
373
370
  timer->heap_index = INVALID_HEAP_INDEX;
374
371
  list_join(&shard->list, timer);
375
372
  }
376
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
373
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
377
374
  gpr_log(GPR_DEBUG,
378
375
  " .. add to shard %d with queue_deadline_cap=%" PRId64
379
376
  " => is_first_timer=%s",
@@ -396,7 +393,7 @@ static void timer_init(grpc_timer* timer, grpc_core::Timestamp deadline,
396
393
  // grpc_timer_check.
397
394
  if (is_first_timer) {
398
395
  gpr_mu_lock(&g_shared_mutables.mu);
399
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
396
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
400
397
  gpr_log(GPR_DEBUG, " .. old shard min_deadline=%" PRId64,
401
398
  shard->min_deadline.milliseconds_after_process_epoch());
402
399
  }
@@ -438,7 +435,7 @@ static void timer_cancel(grpc_timer* timer) {
438
435
 
439
436
  timer_shard* shard = &g_shards[grpc_core::HashPointer(timer, g_num_shards)];
440
437
  gpr_mu_lock(&shard->mu);
441
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
438
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
442
439
  gpr_log(GPR_DEBUG, "TIMER %p: CANCEL pending=%s", timer,
443
440
  timer->pending ? "true" : "false");
444
441
  }
@@ -479,7 +476,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
479
476
  std::max(now, shard->queue_deadline_cap) +
480
477
  grpc_core::Duration::FromSecondsAsDouble(deadline_delta);
481
478
 
482
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
479
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
483
480
  gpr_log(GPR_DEBUG, " .. shard[%d]->queue_deadline_cap --> %" PRId64,
484
481
  static_cast<int>(shard - g_shards),
485
482
  shard->queue_deadline_cap.milliseconds_after_process_epoch());
@@ -491,7 +488,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
491
488
  timer->deadline);
492
489
 
493
490
  if (timer_deadline < shard->queue_deadline_cap) {
494
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
491
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
495
492
  gpr_log(GPR_DEBUG, " .. add timer with deadline %" PRId64 " to heap",
496
493
  timer_deadline.milliseconds_after_process_epoch());
497
494
  }
@@ -508,7 +505,7 @@ static bool refill_heap(timer_shard* shard, grpc_core::Timestamp now) {
508
505
  static grpc_timer* pop_one(timer_shard* shard, grpc_core::Timestamp now) {
509
506
  grpc_timer* timer;
510
507
  for (;;) {
511
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
508
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
512
509
  gpr_log(GPR_DEBUG, " .. shard[%d]: heap_empty=%s",
513
510
  static_cast<int>(shard - g_shards),
514
511
  grpc_timer_heap_is_empty(&shard->heap) ? "true" : "false");
@@ -521,14 +518,14 @@ static grpc_timer* pop_one(timer_shard* shard, grpc_core::Timestamp now) {
521
518
  auto timer_deadline =
522
519
  grpc_core::Timestamp::FromMillisecondsAfterProcessEpoch(
523
520
  timer->deadline);
524
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
521
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
525
522
  gpr_log(GPR_DEBUG,
526
523
  " .. check top timer deadline=%" PRId64 " now=%" PRId64,
527
524
  timer_deadline.milliseconds_after_process_epoch(),
528
525
  now.milliseconds_after_process_epoch());
529
526
  }
530
527
  if (timer_deadline > now) return nullptr;
531
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_trace)) {
528
+ if (GRPC_TRACE_FLAG_ENABLED(timer)) {
532
529
  gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRId64 "ms late", timer,
533
530
  (now - timer_deadline).millis());
534
531
  }
@@ -552,7 +549,7 @@ static size_t pop_timers(timer_shard* shard, grpc_core::Timestamp now,
552
549
  }
553
550
  *new_min_deadline = compute_min_deadline(shard);
554
551
  gpr_mu_unlock(&shard->mu);
555
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
552
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
556
553
  gpr_log(GPR_DEBUG, " .. shard[%d] popped %" PRIdPTR,
557
554
  static_cast<int>(shard - g_shards), n);
558
555
  }
@@ -591,7 +588,7 @@ static grpc_timer_check_result run_some_expired_timers(
591
588
  gpr_mu_lock(&g_shared_mutables.mu);
592
589
  result = GRPC_TIMERS_CHECKED_AND_EMPTY;
593
590
 
594
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
591
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
595
592
  gpr_log(
596
593
  GPR_DEBUG, " .. shard[%d]->min_deadline = %" PRId64,
597
594
  static_cast<int>(g_shard_queue[0] - g_shards),
@@ -610,7 +607,7 @@ static grpc_timer_check_result run_some_expired_timers(
610
607
  result = GRPC_TIMERS_FIRED;
611
608
  }
612
609
 
613
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
610
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
614
611
  gpr_log(
615
612
  GPR_DEBUG,
616
613
  " .. result --> %d"
@@ -670,7 +667,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
670
667
  if (next != nullptr) {
671
668
  *next = std::min(*next, min_timer);
672
669
  }
673
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
670
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
674
671
  gpr_log(GPR_DEBUG, "TIMER CHECK SKIP: now=%" PRId64 " min_timer=%" PRId64,
675
672
  now.milliseconds_after_process_epoch(),
676
673
  min_timer.milliseconds_after_process_epoch());
@@ -684,7 +681,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
684
681
  : GRPC_ERROR_CREATE("Shutting down timer system");
685
682
 
686
683
  // tracing
687
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
684
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
688
685
  std::string next_str;
689
686
  if (next == nullptr) {
690
687
  next_str = "NULL";
@@ -712,7 +709,7 @@ static grpc_timer_check_result timer_check(grpc_core::Timestamp* next) {
712
709
  grpc_timer_check_result r =
713
710
  run_some_expired_timers(now, next, shutdown_error);
714
711
  // tracing
715
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
712
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
716
713
  std::string next_str;
717
714
  if (next == nullptr) {
718
715
  next_str = "NULL";
@@ -23,8 +23,8 @@
23
23
  #include <grpc/support/alloc.h>
24
24
  #include <grpc/support/port_platform.h>
25
25
 
26
- #include "src/core/lib/gpr/useful.h"
27
26
  #include "src/core/lib/iomgr/port.h"
27
+ #include "src/core/util/useful.h"
28
28
 
29
29
  // Adjusts a heap so as to move a hole at position i closer to the root,
30
30
  // until a suitable position is found for element t. Then, copies t into that
@@ -21,6 +21,7 @@
21
21
  #include <inttypes.h>
22
22
 
23
23
  #include "absl/log/check.h"
24
+ #include "absl/log/log.h"
24
25
 
25
26
  #include <grpc/support/alloc.h>
26
27
  #include <grpc/support/log.h>
@@ -36,8 +37,6 @@ struct completed_thread {
36
37
  completed_thread* next;
37
38
  };
38
39
 
39
- extern grpc_core::TraceFlag grpc_timer_check_trace;
40
-
41
40
  // global mutex
42
41
  static gpr_mu g_mu;
43
42
  // are we multi-threaded
@@ -88,9 +87,7 @@ static void start_timer_thread_and_unlock(void) {
88
87
  ++g_waiter_count;
89
88
  ++g_thread_count;
90
89
  gpr_mu_unlock(&g_mu);
91
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
92
- gpr_log(GPR_INFO, "Spawn timer thread");
93
- }
90
+ GRPC_TRACE_LOG(timer_check, INFO) << "Spawn timer thread";
94
91
  completed_thread* ct =
95
92
  static_cast<completed_thread*>(gpr_malloc(sizeof(*ct)));
96
93
  ct->thd = grpc_core::Thread("grpc_global_timer", timer_thread, ct);
@@ -124,17 +121,13 @@ static void run_some_timers() {
124
121
  // if there's no thread waiting with a timeout, kick an existing untimed
125
122
  // waiter so that the next deadline is not missed
126
123
  if (!g_has_timed_waiter) {
127
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
128
- gpr_log(GPR_INFO, "kick untimed waiter");
129
- }
124
+ GRPC_TRACE_LOG(timer_check, INFO) << "kick untimed waiter";
130
125
  gpr_cv_signal(&g_cv_wait);
131
126
  }
132
127
  gpr_mu_unlock(&g_mu);
133
128
  }
134
129
  // without our lock, flush the exec_ctx
135
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
136
- gpr_log(GPR_INFO, "flush exec_ctx");
137
- }
130
+ GRPC_TRACE_LOG(timer_check, INFO) << "flush exec_ctx";
138
131
  grpc_core::ExecCtx::Get()->Flush();
139
132
  gpr_mu_lock(&g_mu);
140
133
  // garbage collect any threads that are dead
@@ -187,7 +180,7 @@ static bool wait_until(grpc_core::Timestamp next) {
187
180
  g_has_timed_waiter = true;
188
181
  g_timed_waiter_deadline = next;
189
182
 
190
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
183
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
191
184
  grpc_core::Duration wait_time = next - grpc_core::Timestamp::Now();
192
185
  gpr_log(GPR_INFO, "sleep for a %" PRId64 " milliseconds",
193
186
  wait_time.millis());
@@ -197,14 +190,14 @@ static bool wait_until(grpc_core::Timestamp next) {
197
190
  }
198
191
  }
199
192
 
200
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace) &&
193
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check) &&
201
194
  next == grpc_core::Timestamp::InfFuture()) {
202
- gpr_log(GPR_INFO, "sleep until kicked");
195
+ LOG(INFO) << "sleep until kicked";
203
196
  }
204
197
 
205
198
  gpr_cv_wait(&g_cv_wait, &g_mu, next.as_timespec(GPR_CLOCK_MONOTONIC));
206
199
 
207
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
200
+ if (GRPC_TRACE_FLAG_ENABLED(timer_check)) {
208
201
  gpr_log(GPR_INFO, "wait ended: was_timed:%d kicked:%d",
209
202
  my_timed_waiter_generation == g_timed_waiter_generation,
210
203
  g_kicked);
@@ -250,9 +243,8 @@ static void timer_main_loop() {
250
243
 
251
244
  // Consequently, we can just sleep forever here and be happy at some
252
245
  // saved wakeup cycles.
253
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
254
- gpr_log(GPR_INFO, "timers not checked: expect another thread to");
255
- }
246
+ GRPC_TRACE_LOG(timer_check, INFO)
247
+ << "timers not checked: expect another thread to";
256
248
  next = grpc_core::Timestamp::InfFuture();
257
249
  ABSL_FALLTHROUGH_INTENDED;
258
250
  case GRPC_TIMERS_CHECKED_AND_EMPTY:
@@ -276,9 +268,7 @@ static void timer_thread_cleanup(completed_thread* ct) {
276
268
  ct->next = g_completed_threads;
277
269
  g_completed_threads = ct;
278
270
  gpr_mu_unlock(&g_mu);
279
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
280
- gpr_log(GPR_INFO, "End timer thread");
281
- }
271
+ GRPC_TRACE_LOG(timer_check, INFO) << "End timer thread";
282
272
  }
283
273
 
284
274
  static void timer_thread(void* completed_thread_ptr) {
@@ -317,20 +307,17 @@ void grpc_timer_manager_init(void) {
317
307
 
318
308
  static void stop_threads(void) {
319
309
  gpr_mu_lock(&g_mu);
320
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
321
- gpr_log(GPR_INFO, "stop timer threads: threaded=%d", g_threaded);
322
- }
310
+ GRPC_TRACE_LOG(timer_check, INFO)
311
+ << "stop timer threads: threaded=" << g_threaded;
323
312
  if (g_threaded) {
324
313
  g_threaded = false;
325
314
  gpr_cv_broadcast(&g_cv_wait);
326
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
327
- gpr_log(GPR_INFO, "num timer threads: %d", g_thread_count);
328
- }
315
+ GRPC_TRACE_LOG(timer_check, INFO)
316
+ << "num timer threads: " << g_thread_count;
329
317
  while (g_thread_count > 0) {
330
318
  gpr_cv_wait(&g_cv_shutdown, &g_mu, gpr_inf_future(GPR_CLOCK_MONOTONIC));
331
- if (GRPC_TRACE_FLAG_ENABLED(grpc_timer_check_trace)) {
332
- gpr_log(GPR_INFO, "num timer threads: %d", g_thread_count);
333
- }
319
+ GRPC_TRACE_LOG(timer_check, INFO)
320
+ << "num timer threads: " << g_thread_count;
334
321
  gc_completed_threads();
335
322
  }
336
323
  }
@@ -40,11 +40,11 @@
40
40
  #include <grpc/support/log.h>
41
41
 
42
42
  #include "src/core/lib/address_utils/parse_address.h"
43
- #include "src/core/lib/gpr/useful.h"
44
43
  #include "src/core/lib/gprpp/crash.h"
45
44
  #include "src/core/lib/iomgr/sockaddr.h"
46
45
  #include "src/core/lib/iomgr/unix_sockets_posix.h"
47
46
  #include "src/core/lib/transport/error_utils.h"
47
+ #include "src/core/util/useful.h"
48
48
 
49
49
  void grpc_create_socketpair_if_unix(int sv[2]) {
50
50
  #ifdef GPR_WINDOWS
@@ -31,10 +31,10 @@
31
31
  #include <grpc/support/log.h>
32
32
 
33
33
  #include "src/core/lib/address_utils/parse_address.h"
34
- #include "src/core/lib/gpr/useful.h"
35
34
  #include "src/core/lib/gprpp/crash.h"
36
35
  #include "src/core/lib/iomgr/sockaddr.h"
37
36
  #include "src/core/lib/transport/error_utils.h"
37
+ #include "src/core/util/useful.h"
38
38
 
39
39
  absl::StatusOr<std::vector<grpc_resolved_address>> grpc_resolve_vsock_address(
40
40
  absl::string_view name) {
@@ -26,7 +26,7 @@
26
26
  #include <string.h>
27
27
  #include <unistd.h>
28
28
 
29
- #include <grpc/support/log.h>
29
+ #include "absl/log/log.h"
30
30
 
31
31
  #include "src/core/lib/gprpp/crash.h"
32
32
  #include "src/core/lib/gprpp/strerror.h"
@@ -38,8 +38,8 @@ static grpc_error_handle pipe_init(grpc_wakeup_fd* fd_info) {
38
38
  int pipefd[2];
39
39
  int r = pipe(pipefd);
40
40
  if (0 != r) {
41
- gpr_log(GPR_ERROR, "pipe creation failed (%d): %s", errno,
42
- grpc_core::StrError(errno).c_str());
41
+ LOG(ERROR) << "pipe creation failed (" << errno
42
+ << "): " << grpc_core::StrError(errno);
43
43
  return GRPC_OS_ERROR(errno, "pipe");
44
44
  }
45
45
  grpc_error_handle err;
@@ -26,6 +26,7 @@
26
26
  #include "absl/base/thread_annotations.h"
27
27
  #include "absl/log/check.h"
28
28
  #include "absl/status/status.h"
29
+ #include "absl/strings/str_cat.h"
29
30
  #include "absl/types/optional.h"
30
31
 
31
32
  #include <grpc/support/log.h>
@@ -121,6 +122,11 @@ class Waker {
121
122
  return wakeable_and_arg_.ActivityDebugTag();
122
123
  }
123
124
 
125
+ std::string DebugString() {
126
+ return absl::StrFormat("Waker{%p, %d}", wakeable_and_arg_.wakeable,
127
+ wakeable_and_arg_.wakeup_mask);
128
+ }
129
+
124
130
  // This is for tests to assert that a waker is occupied or not.
125
131
  bool is_unwakeable() const {
126
132
  return wakeable_and_arg_.wakeable == promise_detail::unwakeable();
@@ -283,6 +289,19 @@ class ContextHolder<std::unique_ptr<Context, Deleter>> {
283
289
  std::unique_ptr<Context, Deleter> value_;
284
290
  };
285
291
 
292
+ template <typename Context>
293
+ class ContextHolder<RefCountedPtr<Context>> {
294
+ public:
295
+ using ContextType = Context;
296
+
297
+ explicit ContextHolder(RefCountedPtr<Context> value)
298
+ : value_(std::move(value)) {}
299
+ Context* GetContext() { return value_.get(); }
300
+
301
+ private:
302
+ RefCountedPtr<Context> value_;
303
+ };
304
+
286
305
  template <>
287
306
  class Context<Activity> {
288
307
  public:
@@ -290,19 +309,23 @@ class Context<Activity> {
290
309
  };
291
310
 
292
311
  template <typename HeldContext>
293
- using ContextTypeFromHeld = typename ContextHolder<HeldContext>::ContextType;
312
+ using ContextTypeFromHeld = typename ContextHolder<
313
+ typename std::remove_reference<HeldContext>::type>::ContextType;
294
314
 
295
315
  template <typename... Contexts>
296
- class ActivityContexts : public ContextHolder<Contexts>... {
316
+ class ActivityContexts
317
+ : public ContextHolder<typename std::remove_reference<Contexts>::type>... {
297
318
  public:
298
319
  explicit ActivityContexts(Contexts&&... contexts)
299
- : ContextHolder<Contexts>(std::forward<Contexts>(contexts))... {}
320
+ : ContextHolder<typename std::remove_reference<Contexts>::type>(
321
+ std::forward<Contexts>(contexts))... {}
300
322
 
301
323
  class ScopedContext : public Context<ContextTypeFromHeld<Contexts>>... {
302
324
  public:
303
325
  explicit ScopedContext(ActivityContexts* contexts)
304
326
  : Context<ContextTypeFromHeld<Contexts>>(
305
- static_cast<ContextHolder<Contexts>*>(contexts)
327
+ static_cast<ContextHolder<
328
+ typename std::remove_reference<Contexts>::type>*>(contexts)
306
329
  ->GetContext())... {
307
330
  // Silence `unused-but-set-parameter` in case of Contexts = {}
308
331
  (void)contexts;
@@ -17,7 +17,9 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include "src/core/lib/promise/context.h"
20
21
  #include "src/core/lib/promise/detail/promise_like.h"
22
+ #include "src/core/lib/resource_quota/arena.h"
21
23
 
22
24
  namespace grpc_core {
23
25
 
@@ -31,6 +33,7 @@ class Handler {
31
33
  Handler& operator=(const Handler&) = delete;
32
34
  ~Handler() {
33
35
  if (!done_) {
36
+ promise_detail::Context<Arena> ctx(arena_.get());
34
37
  fn_();
35
38
  }
36
39
  }
@@ -48,6 +51,13 @@ class Handler {
48
51
 
49
52
  private:
50
53
  Fn fn_;
54
+ // Since cancellation happens at destruction time we need to either capture
55
+ // context here (via the arena), or make sure that no promise is destructed
56
+ // without an Arena context on the stack. The latter is an eternal game of
57
+ // whackamole, so we're choosing the former for now.
58
+ // TODO(ctiller): re-evaluate at some point in the future.
59
+ RefCountedPtr<Arena> arena_ =
60
+ HasContext<Arena>() ? GetContext<Arena>()->Ref() : nullptr;
51
61
  bool done_ = false;
52
62
  };
53
63
 
@@ -70,6 +80,20 @@ auto OnCancel(MainFn main_fn, CancelFn cancel_fn) {
70
80
  };
71
81
  }
72
82
 
83
+ // Similar to OnCancel, but returns a factory that uses main_fn to construct the
84
+ // resulting promise. If the factory is dropped without being called, cancel_fn
85
+ // is called.
86
+ template <typename MainFn, typename CancelFn>
87
+ auto OnCancelFactory(MainFn main_fn, CancelFn cancel_fn) {
88
+ return [on_cancel =
89
+ cancel_callback_detail::Handler<CancelFn>(std::move(cancel_fn)),
90
+ main_fn = std::move(main_fn)]() mutable {
91
+ auto r = main_fn();
92
+ on_cancel.Done();
93
+ return r;
94
+ };
95
+ };
96
+
73
97
  } // namespace grpc_core
74
98
 
75
99
  #endif // GRPC_SRC_CORE_LIB_PROMISE_CANCEL_CALLBACK_H
@@ -119,6 +119,17 @@ T* GetContext() {
119
119
  return p;
120
120
  }
121
121
 
122
+ // Retrieve the current value of a context, or nullptr if the value is unset.
123
+ template <typename T>
124
+ T* MaybeGetContext() {
125
+ return promise_detail::Context<T>::get();
126
+ }
127
+
128
+ template <typename T>
129
+ void SetContext(T* p) {
130
+ promise_detail::Context<T>::set(p);
131
+ }
132
+
122
133
  // Given a promise and a context, return a promise that has that context set.
123
134
  template <typename T, typename F>
124
135
  promise_detail::WithContext<T, F> WithContext(F f, T* context) {