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
@@ -21,13 +21,14 @@
21
21
  #include <cstdint>
22
22
 
23
23
  #include "absl/log/check.h"
24
+ #include "absl/log/log.h"
24
25
 
25
- #include <grpc/support/log.h>
26
26
  #include <grpc/support/port_platform.h>
27
27
 
28
28
  #include "src/core/lib/gprpp/debug_location.h"
29
29
  #include "src/core/lib/gprpp/down_cast.h"
30
30
  #include "src/core/lib/gprpp/orphanable.h"
31
+ #include "src/core/lib/gprpp/ref_counted.h"
31
32
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
32
33
 
33
34
  namespace grpc_core {
@@ -46,15 +47,16 @@ namespace grpc_core {
46
47
  //
47
48
  // This will be used by CRTP (curiously-recurring template pattern), e.g.:
48
49
  // class MyClass : public RefCounted<MyClass> { ... };
49
- template <typename Child>
50
- class DualRefCounted {
50
+ //
51
+ // Impl & UnrefBehavior are as per RefCounted.
52
+ template <typename Child, typename Impl = PolymorphicRefCount,
53
+ typename UnrefBehavior = UnrefDelete>
54
+ class DualRefCounted : public Impl {
51
55
  public:
52
56
  // Not copyable nor movable.
53
57
  DualRefCounted(const DualRefCounted&) = delete;
54
58
  DualRefCounted& operator=(const DualRefCounted&) = delete;
55
59
 
56
- virtual ~DualRefCounted() = default;
57
-
58
60
  GRPC_MUST_USE_RESULT RefCountedPtr<Child> Ref() {
59
61
  IncrementRefCount();
60
62
  return RefCountedPtr<Child>(static_cast<Child*>(this));
@@ -91,8 +93,9 @@ class DualRefCounted {
91
93
  #ifndef NDEBUG
92
94
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
93
95
  if (trace_ != nullptr) {
94
- gpr_log(GPR_INFO, "%s:%p unref %d -> %d, weak_ref %d -> %d", trace_, this,
95
- strong_refs, strong_refs - 1, weak_refs, weak_refs + 1);
96
+ LOG(INFO) << trace_ << ":" << this << " unref " << strong_refs << " -> "
97
+ << strong_refs - 1 << ", weak_ref " << weak_refs << " -> "
98
+ << weak_refs + 1;
96
99
  }
97
100
  CHECK_GT(strong_refs, 0u);
98
101
  #endif
@@ -109,9 +112,10 @@ class DualRefCounted {
109
112
  #ifndef NDEBUG
110
113
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
111
114
  if (trace_ != nullptr) {
112
- gpr_log(GPR_INFO, "%s:%p %s:%d unref %d -> %d, weak_ref %d -> %d) %s",
113
- trace_, this, location.file(), location.line(), strong_refs,
114
- strong_refs - 1, weak_refs, weak_refs + 1, reason);
115
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
116
+ << location.line() << " unref " << strong_refs << " -> "
117
+ << strong_refs - 1 << ", weak_ref " << weak_refs << " -> "
118
+ << weak_refs + 1 << ") " << reason;
115
119
  }
116
120
  CHECK_GT(strong_refs, 0u);
117
121
  #else
@@ -133,8 +137,9 @@ class DualRefCounted {
133
137
  #ifndef NDEBUG
134
138
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
135
139
  if (trace_ != nullptr) {
136
- gpr_log(GPR_INFO, "%s:%p ref_if_non_zero %d -> %d (weak_refs=%d)",
137
- trace_, this, strong_refs, strong_refs + 1, weak_refs);
140
+ LOG(INFO) << trace_ << ":" << this << " ref_if_non_zero " << strong_refs
141
+ << " -> " << strong_refs + 1 << " (weak_refs=" << weak_refs
142
+ << ")";
138
143
  }
139
144
  #endif
140
145
  if (strong_refs == 0) return nullptr;
@@ -151,10 +156,10 @@ class DualRefCounted {
151
156
  #ifndef NDEBUG
152
157
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
153
158
  if (trace_ != nullptr) {
154
- gpr_log(GPR_INFO,
155
- "%s:%p %s:%d ref_if_non_zero %d -> %d (weak_refs=%d) %s",
156
- trace_, this, location.file(), location.line(), strong_refs,
157
- strong_refs + 1, weak_refs, reason);
159
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
160
+ << location.line() << " ref_if_non_zero " << strong_refs
161
+ << " -> " << strong_refs + 1 << " (weak_refs=" << weak_refs
162
+ << ") " << reason;
158
163
  }
159
164
  #else
160
165
  // Avoid unused-parameter warnings for debug-only parameters
@@ -209,13 +214,13 @@ class DualRefCounted {
209
214
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
210
215
  const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
211
216
  if (trace != nullptr) {
212
- gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)", trace, this,
213
- weak_refs, weak_refs - 1, strong_refs);
217
+ LOG(INFO) << trace << ":" << this << " weak_unref " << weak_refs << " -> "
218
+ << weak_refs - 1 << " (refs=" << strong_refs << ")";
214
219
  }
215
220
  CHECK_GT(weak_refs, 0u);
216
221
  #endif
217
222
  if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
218
- delete static_cast<Child*>(this);
223
+ unref_behavior_(static_cast<Child*>(this));
219
224
  }
220
225
  }
221
226
  void WeakUnref(const DebugLocation& location, const char* reason) {
@@ -231,9 +236,9 @@ class DualRefCounted {
231
236
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
232
237
  const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
233
238
  if (trace != nullptr) {
234
- gpr_log(GPR_INFO, "%s:%p %s:%d weak_unref %d -> %d (refs=%d) %s", trace,
235
- this, location.file(), location.line(), weak_refs, weak_refs - 1,
236
- strong_refs, reason);
239
+ LOG(INFO) << trace << ":" << this << " " << location.file() << ":"
240
+ << location.line() << " weak_unref " << weak_refs << " -> "
241
+ << weak_refs - 1 << " (refs=" << strong_refs << ") " << reason;
237
242
  }
238
243
  CHECK_GT(weak_refs, 0u);
239
244
  #else
@@ -242,7 +247,7 @@ class DualRefCounted {
242
247
  (void)reason;
243
248
  #endif
244
249
  if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
245
- delete static_cast<Child*>(this);
250
+ unref_behavior_(static_cast<const Child*>(this));
246
251
  }
247
252
  }
248
253
 
@@ -266,6 +271,9 @@ class DualRefCounted {
266
271
  // Ref count has dropped to zero, so the object is now orphaned.
267
272
  virtual void Orphaned() = 0;
268
273
 
274
+ // Note: Depending on the Impl used, this dtor can be implicitly virtual.
275
+ ~DualRefCounted() = default;
276
+
269
277
  private:
270
278
  // Allow RefCountedPtr<> to access IncrementRefCount().
271
279
  template <typename T>
@@ -293,8 +301,8 @@ class DualRefCounted {
293
301
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
294
302
  CHECK_NE(strong_refs, 0u);
295
303
  if (trace_ != nullptr) {
296
- gpr_log(GPR_INFO, "%s:%p ref %d -> %d; (weak_refs=%d)", trace_, this,
297
- strong_refs, strong_refs + 1, weak_refs);
304
+ LOG(INFO) << trace_ << ":" << this << " ref " << strong_refs << " -> "
305
+ << strong_refs + 1 << "; (weak_refs=" << weak_refs << ")";
298
306
  }
299
307
  #else
300
308
  refs_.fetch_add(MakeRefPair(1, 0), std::memory_order_relaxed);
@@ -308,9 +316,10 @@ class DualRefCounted {
308
316
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
309
317
  CHECK_NE(strong_refs, 0u);
310
318
  if (trace_ != nullptr) {
311
- gpr_log(GPR_INFO, "%s:%p %s:%d ref %d -> %d (weak_refs=%d) %s", trace_,
312
- this, location.file(), location.line(), strong_refs,
313
- strong_refs + 1, weak_refs, reason);
319
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
320
+ << location.line() << " ref " << strong_refs << " -> "
321
+ << strong_refs + 1 << " (weak_refs=" << weak_refs << ") "
322
+ << reason;
314
323
  }
315
324
  #else
316
325
  // Use conditionally-important parameters
@@ -327,9 +336,10 @@ class DualRefCounted {
327
336
  const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
328
337
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
329
338
  if (trace_ != nullptr) {
330
- gpr_log(GPR_INFO, "%s:%p weak_ref %d -> %d; (refs=%d)", trace_, this,
331
- weak_refs, weak_refs + 1, strong_refs);
339
+ LOG(INFO) << trace_ << ":" << this << " weak_ref " << weak_refs << " -> "
340
+ << weak_refs + 1 << "; (refs=" << strong_refs << ")";
332
341
  }
342
+ if (strong_refs == 0) CHECK_NE(weak_refs, 0u);
333
343
  #else
334
344
  refs_.fetch_add(MakeRefPair(0, 1), std::memory_order_relaxed);
335
345
  #endif
@@ -342,10 +352,11 @@ class DualRefCounted {
342
352
  const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
343
353
  const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
344
354
  if (trace_ != nullptr) {
345
- gpr_log(GPR_INFO, "%s:%p %s:%d weak_ref %d -> %d (refs=%d) %s", trace_,
346
- this, location.file(), location.line(), weak_refs, weak_refs + 1,
347
- strong_refs, reason);
355
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
356
+ << location.line() << " weak_ref " << weak_refs << " -> "
357
+ << weak_refs + 1 << " (refs=" << strong_refs << ") " << reason;
348
358
  }
359
+ if (strong_refs == 0) CHECK_NE(weak_refs, 0u);
349
360
  #else
350
361
  // Use conditionally-important parameters
351
362
  (void)location;
@@ -358,6 +369,7 @@ class DualRefCounted {
358
369
  const char* trace_;
359
370
  #endif
360
371
  std::atomic<uint64_t> refs_{0};
372
+ GPR_NO_UNIQUE_ADDRESS UnrefBehavior unref_behavior_;
361
373
  };
362
374
 
363
375
  } // namespace grpc_core
@@ -0,0 +1,54 @@
1
+ // Copyright 2024 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "src/core/lib/gprpp/dump_args.h"
16
+
17
+ #include "absl/log/check.h"
18
+ #include "absl/strings/ascii.h"
19
+ #include "absl/strings/string_view.h"
20
+
21
+ namespace grpc_core {
22
+ namespace dump_args_detail {
23
+
24
+ std::ostream& operator<<(std::ostream& out, const DumpArgs& args) {
25
+ // Parse the argument string into a vector of keys.
26
+ // #__VA_ARGS__ produces a stringified version of the arguments passed to the
27
+ // macro. It's comma separated, and we can use that to split the string into
28
+ // keys. Those keys might include parenthesis for e.g. argument lists, and so
29
+ // we need to skip commas that are inside parenthesis.
30
+ std::vector<absl::string_view> keys;
31
+ int depth = 0;
32
+ const char* start = args.arg_string_;
33
+ for (const char* p = args.arg_string_; *p; ++p) {
34
+ if (*p == '(') {
35
+ ++depth;
36
+ } else if (*p == ')') {
37
+ --depth;
38
+ } else if (*p == ',' && depth == 0) {
39
+ keys.push_back(absl::string_view(start, p - start));
40
+ start = p + 1;
41
+ }
42
+ }
43
+ keys.push_back(start);
44
+ CHECK_EQ(keys.size(), args.arg_dumpers_.size());
45
+ for (size_t i = 0; i < keys.size(); i++) {
46
+ if (i != 0) out << ", ";
47
+ out << absl::StripAsciiWhitespace(keys[i]) << " = ";
48
+ args.arg_dumpers_[i](out);
49
+ }
50
+ return out;
51
+ }
52
+
53
+ } // namespace dump_args_detail
54
+ } // namespace grpc_core
@@ -0,0 +1,69 @@
1
+ // Copyright 2024 gRPC authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
16
+ #define GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
17
+
18
+ #include <ostream>
19
+ #include <vector>
20
+
21
+ #include "absl/functional/any_invocable.h"
22
+
23
+ namespace grpc_core {
24
+ namespace dump_args_detail {
25
+
26
+ // Helper function... just ignore the initializer list passed into it.
27
+ // Allows doing 'statements' via parameter pack expansion in C++11 - given
28
+ // template <typename... Ts>:
29
+ // do_these_things({foo<Ts>()...});
30
+ // will execute foo<T>() for each T in Ts.
31
+ template <typename T>
32
+ void do_these_things(std::initializer_list<T>) {}
33
+
34
+ class DumpArgs {
35
+ public:
36
+ template <typename... Args>
37
+ explicit DumpArgs(const char* arg_string, const Args&... args)
38
+ : arg_string_(arg_string) {
39
+ do_these_things({AddDumper(&args)...});
40
+ }
41
+
42
+ friend std::ostream& operator<<(std::ostream& out, const DumpArgs& args);
43
+
44
+ private:
45
+ template <typename T>
46
+ int AddDumper(T* p) {
47
+ arg_dumpers_.push_back([p](std::ostream& os) { os << *p; });
48
+ return 0;
49
+ }
50
+
51
+ const char* arg_string_;
52
+ std::vector<absl::AnyInvocable<void(std::ostream&) const>> arg_dumpers_;
53
+ };
54
+
55
+ } // namespace dump_args_detail
56
+ } // namespace grpc_core
57
+
58
+ // Helper to print a list of variables and their values.
59
+ // Each type must be streamable to std::ostream.
60
+ // Usage:
61
+ // int a = 1;
62
+ // int b = 2;
63
+ // LOG(INFO) << GRPC_DUMP_ARGS(a, b)
64
+ // Output:
65
+ // a = 1, b = 2
66
+ #define GRPC_DUMP_ARGS(...) \
67
+ grpc_core::dump_args_detail::DumpArgs(#__VA_ARGS__, __VA_ARGS__)
68
+
69
+ #endif // GRPC_SRC_CORE_LIB_GPRPP_DUMP_ARGS_H
@@ -0,0 +1,70 @@
1
+ // Copyright 2024 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "absl/strings/string_view.h"
16
+
17
+ namespace grpc_core {
18
+
19
+ namespace {
20
+ bool IsGlob(absl::string_view trace_glob) {
21
+ return std::any_of(trace_glob.begin(), trace_glob.end(),
22
+ [](const char c) { return c == '?' || c == '*'; });
23
+ }
24
+ } // namespace
25
+
26
+ bool GlobMatch(absl::string_view name, absl::string_view pattern) {
27
+ if (!IsGlob(pattern)) return name == pattern;
28
+ size_t name_idx = 0;
29
+ size_t trace_idx = 0;
30
+ // pointers for iterative wildcard * matching.
31
+ size_t name_next_idx = name_idx;
32
+ size_t trace_next_idx = trace_idx;
33
+
34
+ while (trace_idx < pattern.length() || name_idx < name.length()) {
35
+ if (trace_idx < pattern.length()) {
36
+ switch (pattern.at(trace_idx)) {
37
+ case '?':
38
+ if (name_idx < name.length()) {
39
+ ++trace_idx;
40
+ ++name_idx;
41
+ continue;
42
+ }
43
+ break;
44
+ case '*':
45
+ trace_next_idx = trace_idx;
46
+ name_next_idx = name_idx + 1;
47
+ ++trace_idx;
48
+ continue;
49
+ default:
50
+ if (name_idx < name.length() &&
51
+ name.at(name_idx) == pattern.at(trace_idx)) {
52
+ ++trace_idx;
53
+ ++name_idx;
54
+ continue;
55
+ }
56
+ break;
57
+ }
58
+ }
59
+ // Failed to match a character. Restart if possible.
60
+ if (name_next_idx > 0 && name_next_idx <= name.length()) {
61
+ trace_idx = trace_next_idx;
62
+ name_idx = name_next_idx;
63
+ continue;
64
+ }
65
+ return false;
66
+ }
67
+ return true;
68
+ }
69
+
70
+ } // namespace grpc_core
@@ -0,0 +1,29 @@
1
+ // Copyright 2024 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
16
+ #define GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
17
+
18
+ #include "absl/strings/string_view.h"
19
+
20
+ namespace grpc_core {
21
+
22
+ // A basic glob matcher based on https://research.swtch.com/glob.
23
+ // This supports `?` (a single wildcard character), and `*` (multiple wildcard
24
+ // characters).
25
+ bool GlobMatch(absl::string_view name, absl::string_view pattern);
26
+
27
+ } // namespace grpc_core
28
+
29
+ #endif // GRPC_SRC_CORE_LIB_GPRPP_GLOB_H
@@ -17,7 +17,7 @@
17
17
  #include <grpc/support/cpu.h>
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
- #include "src/core/lib/gpr/useful.h"
20
+ #include "src/core/util/useful.h"
21
21
 
22
22
  namespace grpc_core {
23
23
 
@@ -28,8 +28,7 @@
28
28
  #include <sys/stat.h>
29
29
 
30
30
  #include "absl/log/check.h"
31
-
32
- #include <grpc/support/log.h>
31
+ #include "absl/log/log.h"
33
32
 
34
33
  #include "src/core/lib/gprpp/stat.h"
35
34
  #include "src/core/lib/gprpp/strerror.h"
@@ -42,8 +41,8 @@ absl::Status GetFileModificationTime(const char* filename, time_t* timestamp) {
42
41
  struct stat buf;
43
42
  if (stat(filename, &buf) != 0) {
44
43
  std::string error_msg = StrError(errno);
45
- gpr_log(GPR_ERROR, "stat failed for filename %s with error %s.", filename,
46
- error_msg.c_str());
44
+ LOG(ERROR) << "stat failed for filename " << filename << " with error "
45
+ << error_msg;
47
46
  return absl::Status(absl::StatusCode::kInternal, error_msg);
48
47
  }
49
48
  // Last file/directory modification time.
@@ -33,17 +33,17 @@
33
33
  #include <unistd.h>
34
34
 
35
35
  #include "absl/log/check.h"
36
+ #include "absl/log/log.h"
36
37
 
37
- #include <grpc/support/log.h>
38
38
  #include <grpc/support/sync.h>
39
39
  #include <grpc/support/thd_id.h>
40
40
  #include <grpc/support/time.h>
41
41
 
42
- #include "src/core/lib/gpr/useful.h"
43
42
  #include "src/core/lib/gprpp/crash.h"
44
43
  #include "src/core/lib/gprpp/fork.h"
45
44
  #include "src/core/lib/gprpp/strerror.h"
46
45
  #include "src/core/lib/gprpp/thd.h"
46
+ #include "src/core/util/useful.h"
47
47
 
48
48
  namespace grpc_core {
49
49
  namespace {
@@ -157,8 +157,7 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface {
157
157
  CHECK_EQ(pthread_attr_destroy(&attr), 0);
158
158
 
159
159
  if (!(*success)) {
160
- gpr_log(GPR_ERROR, "pthread_create failed: %s",
161
- StrError(pthread_create_err).c_str());
160
+ LOG(ERROR) << "pthread_create failed: " << StrError(pthread_create_err);
162
161
  // don't use gpr_free, as this was allocated using malloc (see above)
163
162
  free(info);
164
163
  if (options.tracked()) {
@@ -198,8 +197,8 @@ class ThreadInternalsPosix : public internal::ThreadInternalsInterface {
198
197
  void Thread::Signal(gpr_thd_id tid, int sig) {
199
198
  auto kill_err = pthread_kill((pthread_t)tid, sig);
200
199
  if (kill_err != 0) {
201
- gpr_log(GPR_ERROR, "pthread_kill for tid %" PRIdPTR " failed: %s", tid,
202
- StrError(kill_err).c_str());
200
+ LOG(ERROR) << "pthread_kill for tid " << tid
201
+ << " failed: " << StrError(kill_err);
203
202
  }
204
203
  }
205
204
 
@@ -207,13 +206,13 @@ void Thread::Signal(gpr_thd_id tid, int sig) {
207
206
  void Thread::Kill(gpr_thd_id tid) {
208
207
  auto cancel_err = pthread_cancel((pthread_t)tid);
209
208
  if (cancel_err != 0) {
210
- gpr_log(GPR_ERROR, "pthread_cancel for tid %" PRIdPTR " failed: %s", tid,
211
- StrError(cancel_err).c_str());
209
+ LOG(ERROR) << "pthread_cancel for tid " << tid
210
+ << " failed: " << StrError(cancel_err);
212
211
  }
213
212
  }
214
213
  #else // GPR_ANDROID
215
214
  void Thread::Kill(gpr_thd_id /* tid */) {
216
- gpr_log(GPR_DEBUG, "Thread::Kill is not supported on Android.");
215
+ VLOG(2) << "Thread::Kill is not supported on Android.";
217
216
  }
218
217
  #endif
219
218
 
@@ -24,8 +24,8 @@
24
24
  #include <cinttypes>
25
25
 
26
26
  #include "absl/log/check.h"
27
+ #include "absl/log/log.h"
27
28
 
28
- #include <grpc/support/log.h>
29
29
  #include <grpc/support/port_platform.h>
30
30
 
31
31
  #include "src/core/lib/gprpp/atomic_utils.h"
@@ -73,8 +73,8 @@ class RefCount {
73
73
  #ifndef NDEBUG
74
74
  const Value prior = value_.fetch_add(n, std::memory_order_relaxed);
75
75
  if (trace_ != nullptr) {
76
- gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR, trace_, this,
77
- prior, prior + n);
76
+ LOG(INFO) << trace_ << ":" << this << " ref " << prior << " -> "
77
+ << prior + n;
78
78
  }
79
79
  #else
80
80
  value_.fetch_add(n, std::memory_order_relaxed);
@@ -84,9 +84,9 @@ class RefCount {
84
84
  #ifndef NDEBUG
85
85
  const Value prior = value_.fetch_add(n, std::memory_order_relaxed);
86
86
  if (trace_ != nullptr) {
87
- gpr_log(GPR_INFO, "%s:%p %s:%d ref %" PRIdPTR " -> %" PRIdPTR " %s",
88
- trace_, this, location.file(), location.line(), prior, prior + n,
89
- reason);
87
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
88
+ << location.line() << " ref " << prior << " -> " << prior + n
89
+ << " " << reason;
90
90
  }
91
91
  #else
92
92
  // Use conditionally-important parameters
@@ -101,8 +101,8 @@ class RefCount {
101
101
  #ifndef NDEBUG
102
102
  const Value prior = value_.fetch_add(1, std::memory_order_relaxed);
103
103
  if (trace_ != nullptr) {
104
- gpr_log(GPR_INFO, "%s:%p ref %" PRIdPTR " -> %" PRIdPTR, trace_, this,
105
- prior, prior + 1);
104
+ LOG(INFO) << trace_ << ":" << this << " ref " << prior << " -> "
105
+ << prior + 1;
106
106
  }
107
107
  assert(prior > 0);
108
108
  #else
@@ -113,9 +113,9 @@ class RefCount {
113
113
  #ifndef NDEBUG
114
114
  const Value prior = value_.fetch_add(1, std::memory_order_relaxed);
115
115
  if (trace_ != nullptr) {
116
- gpr_log(GPR_INFO, "%s:%p %s:%d ref %" PRIdPTR " -> %" PRIdPTR " %s",
117
- trace_, this, location.file(), location.line(), prior, prior + 1,
118
- reason);
116
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
117
+ << location.line() << " ref " << prior << " -> " << prior + 1
118
+ << " " << reason;
119
119
  }
120
120
  assert(prior > 0);
121
121
  #else
@@ -130,8 +130,8 @@ class RefCount {
130
130
  #ifndef NDEBUG
131
131
  if (trace_ != nullptr) {
132
132
  const Value prior = get();
133
- gpr_log(GPR_INFO, "%s:%p ref_if_non_zero %" PRIdPTR " -> %" PRIdPTR,
134
- trace_, this, prior, prior + 1);
133
+ LOG(INFO) << trace_ << ":" << this << " ref_if_non_zero " << prior
134
+ << " -> " << prior + 1;
135
135
  }
136
136
  #endif
137
137
  return IncrementIfNonzero(&value_);
@@ -140,10 +140,9 @@ class RefCount {
140
140
  #ifndef NDEBUG
141
141
  if (trace_ != nullptr) {
142
142
  const Value prior = get();
143
- gpr_log(GPR_INFO,
144
- "%s:%p %s:%d ref_if_non_zero %" PRIdPTR " -> %" PRIdPTR " %s",
145
- trace_, this, location.file(), location.line(), prior, prior + 1,
146
- reason);
143
+ LOG(INFO) << trace_ << ":" << this << " " << location.file() << ":"
144
+ << location.line() << " ref_if_non_zero " << prior << " -> "
145
+ << prior + 1 << " " << reason;
147
146
  }
148
147
  #endif
149
148
  // Avoid unused-parameter warnings for debug-only parameters
@@ -163,8 +162,8 @@ class RefCount {
163
162
  const Value prior = value_.fetch_sub(1, std::memory_order_acq_rel);
164
163
  #ifndef NDEBUG
165
164
  if (trace != nullptr) {
166
- gpr_log(GPR_INFO, "%s:%p unref %" PRIdPTR " -> %" PRIdPTR, trace, this,
167
- prior, prior - 1);
165
+ LOG(INFO) << trace << ":" << this << " unref " << prior << " -> "
166
+ << prior - 1;
168
167
  }
169
168
  DCHECK_GT(prior, 0);
170
169
  #endif
@@ -180,9 +179,9 @@ class RefCount {
180
179
  const Value prior = value_.fetch_sub(1, std::memory_order_acq_rel);
181
180
  #ifndef NDEBUG
182
181
  if (trace != nullptr) {
183
- gpr_log(GPR_INFO, "%s:%p %s:%d unref %" PRIdPTR " -> %" PRIdPTR " %s",
184
- trace, this, location.file(), location.line(), prior, prior - 1,
185
- reason);
182
+ LOG(INFO) << trace << ":" << this << " " << location.file() << ":"
183
+ << location.line() << " unref " << prior << " -> " << prior - 1
184
+ << " " << reason;
186
185
  }
187
186
  DCHECK_GT(prior, 0);
188
187
  #else
@@ -246,6 +245,15 @@ struct UnrefCallDtor {
246
245
  }
247
246
  };
248
247
 
248
+ // Call the Destroy method on the object. This is useful when the object
249
+ // needs precise control of how it's deallocated.
250
+ struct UnrefCallDestroy {
251
+ template <typename T>
252
+ void operator()(T* p) const {
253
+ p->Destroy();
254
+ }
255
+ };
256
+
249
257
  // A base class for reference-counted objects.
250
258
  // New objects should be created via new and start with a refcount of 1.
251
259
  // When the refcount reaches 0, executes the specified UnrefBehavior.
@@ -63,17 +63,19 @@ class SingleSetPtr {
63
63
  void Reset() { Delete(p_.exchange(nullptr, std::memory_order_acq_rel)); }
64
64
 
65
65
  bool is_set() const {
66
- T* p = p_.load(std::memory_order_acquire);
66
+ T* p = Get();
67
67
  return p != nullptr;
68
68
  }
69
69
 
70
+ T* Get() const { return p_.load(std::memory_order_acquire); }
71
+
70
72
  T* operator->() const {
71
- T* p = p_.load(std::memory_order_acquire);
73
+ T* p = Get();
72
74
  DCHECK_NE(p, nullptr);
73
75
  return p;
74
76
  }
75
77
 
76
- T& operator*() const { return *operator->(); }
78
+ T& operator*() const { return *Get(); }
77
79
 
78
80
  private:
79
81
  static void Delete(T* p) {