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
@@ -38,14 +38,15 @@
38
38
  #include "absl/strings/string_view.h"
39
39
  #include "absl/types/optional.h"
40
40
 
41
+ #include <grpc/compression.h>
41
42
  #include <grpc/grpc.h>
43
+ #include <grpc/passive_listener.h>
42
44
  #include <grpc/slice.h>
43
45
  #include <grpc/support/port_platform.h>
44
46
  #include <grpc/support/time.h>
45
47
 
46
48
  #include "src/core/channelz/channelz.h"
47
49
  #include "src/core/lib/backoff/random_early_detection.h"
48
- #include "src/core/lib/channel/call_tracer.h"
49
50
  #include "src/core/lib/channel/channel_args.h"
50
51
  #include "src/core/lib/channel/channel_fwd.h"
51
52
  #include "src/core/lib/channel/channel_stack.h"
@@ -68,14 +69,16 @@
68
69
  #include "src/core/lib/transport/metadata_batch.h"
69
70
  #include "src/core/lib/transport/transport.h"
70
71
  #include "src/core/server/server_interface.h"
72
+ #include "src/core/telemetry/call_tracer.h"
71
73
 
72
74
  #define GRPC_ARG_SERVER_MAX_PENDING_REQUESTS "grpc.server.max_pending_requests"
73
75
  #define GRPC_ARG_SERVER_MAX_PENDING_REQUESTS_HARD_LIMIT \
74
76
  "grpc.server.max_pending_requests_hard_limit"
75
77
 
76
78
  namespace grpc_core {
77
-
78
- extern TraceFlag grpc_server_channel_trace;
79
+ namespace experimental {
80
+ class PassiveListenerImpl;
81
+ } // namespace experimental
79
82
 
80
83
  class Server : public ServerInterface,
81
84
  public InternallyRefCounted<Server>,
@@ -112,7 +115,7 @@ class Server : public ServerInterface,
112
115
  /// Interface for listeners.
113
116
  /// Implementations must override the Orphan() method, which should stop
114
117
  /// listening and initiate destruction of the listener.
115
- class ListenerInterface : public Orphanable {
118
+ class ListenerInterface : public InternallyRefCounted<ListenerInterface> {
116
119
  public:
117
120
  ~ListenerInterface() override = default;
118
121
 
@@ -211,56 +214,57 @@ class Server : public ServerInterface,
211
214
 
212
215
  void SendGoaways() ABSL_LOCKS_EXCLUDED(mu_global_, mu_call_);
213
216
 
217
+ grpc_compression_options compression_options() const override {
218
+ return compression_options_;
219
+ }
220
+
214
221
  private:
222
+ // note: the grpc_core::Server redundant namespace qualification is
223
+ // required for older gcc versions.
224
+ // TODO(yashykt): eliminate this friend statement as part of your upcoming
225
+ // server listener refactoring.
226
+ friend absl::Status(::grpc_server_add_passive_listener)(
227
+ grpc_core::Server* server, grpc_server_credentials* credentials,
228
+ std::shared_ptr<grpc_core::experimental::PassiveListenerImpl>
229
+ passive_listener);
215
230
  struct RequestedCall;
216
231
 
217
232
  class RequestMatcherInterface;
218
- class RealRequestMatcherFilterStack;
219
- class RealRequestMatcherPromises;
233
+ class RealRequestMatcher;
220
234
  class AllocatingRequestMatcherBase;
221
235
  class AllocatingRequestMatcherBatch;
222
236
  class AllocatingRequestMatcherRegistered;
223
237
 
224
- class ChannelData final : public ServerTransport::Acceptor {
238
+ class ChannelData final {
225
239
  public:
226
240
  ChannelData() = default;
227
241
  ~ChannelData();
228
242
 
229
243
  void InitTransport(RefCountedPtr<Server> server,
230
- OrphanablePtr<Channel> channel, size_t cq_idx,
244
+ RefCountedPtr<Channel> channel, size_t cq_idx,
231
245
  Transport* transport, intptr_t channelz_socket_uuid);
232
246
 
233
247
  RefCountedPtr<Server> server() const { return server_; }
234
248
  Channel* channel() const { return channel_.get(); }
235
249
  size_t cq_idx() const { return cq_idx_; }
236
250
 
237
- RegisteredMethod* GetRegisteredMethod(const absl::string_view& host,
238
- const absl::string_view& path);
239
251
  // Filter vtable functions.
240
252
  static grpc_error_handle InitChannelElement(
241
253
  grpc_channel_element* elem, grpc_channel_element_args* args);
242
254
  static void DestroyChannelElement(grpc_channel_element* elem);
243
- static ArenaPromise<ServerMetadataHandle> MakeCallPromise(
244
- grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory);
245
- void InitCall(RefCountedPtr<CallSpineInterface> call);
246
-
247
- Arena* CreateArena() override;
248
- absl::StatusOr<CallInitiator> CreateCall(
249
- ClientMetadataHandle client_initial_metadata, Arena* arena) override;
250
255
 
251
256
  private:
252
257
  class ConnectivityWatcher;
253
258
 
254
259
  static void AcceptStream(void* arg, Transport* /*transport*/,
255
260
  const void* transport_server_data);
256
- void SetRegisteredMethodOnMetadata(ClientMetadata& metadata);
257
261
 
258
262
  void Destroy() ABSL_EXCLUSIVE_LOCKS_REQUIRED(server_->mu_global_);
259
263
 
260
264
  static void FinishDestroy(void* arg, grpc_error_handle error);
261
265
 
262
266
  RefCountedPtr<Server> server_;
263
- OrphanablePtr<Channel> channel_;
267
+ RefCountedPtr<Channel> channel_;
264
268
  // The index into Server::cqs_ of the CQ used as a starting point for
265
269
  // where to publish new incoming calls.
266
270
  size_t cq_idx_;
@@ -384,6 +388,12 @@ class Server : public ServerInterface,
384
388
  using is_transparent = void;
385
389
  };
386
390
 
391
+ class TransportConnectivityWatcher;
392
+
393
+ RegisteredMethod* GetRegisteredMethod(const absl::string_view& host,
394
+ const absl::string_view& path);
395
+ void SetRegisteredMethodOnMetadata(ClientMetadata& metadata);
396
+
387
397
  static void ListenerDestroyDone(void* arg, grpc_error_handle error);
388
398
 
389
399
  static void DoneShutdownEvent(void* server,
@@ -445,6 +455,10 @@ class Server : public ServerInterface,
445
455
  return shutdown_refs_.load(std::memory_order_acquire) == 0;
446
456
  }
447
457
 
458
+ auto MatchAndPublishCall(CallHandler call_handler);
459
+ absl::StatusOr<RefCountedPtr<UnstartedCallDestination>> MakeCallDestination(
460
+ const ChannelArgs& args);
461
+
448
462
  ChannelArgs const channel_args_;
449
463
  RefCountedPtr<channelz::ServerNode> channelz_node_;
450
464
  std::unique_ptr<grpc_server_config_fetcher> config_fetcher_;
@@ -453,6 +467,7 @@ class Server : public ServerInterface,
453
467
  std::vector<grpc_completion_queue*> cqs_;
454
468
  std::vector<grpc_pollset*> pollsets_;
455
469
  bool started_ = false;
470
+ const grpc_compression_options compression_options_;
456
471
 
457
472
  // The two following mutexes control access to server-state.
458
473
  // mu_global_ controls access to non-call-related state (e.g., channel state).
@@ -500,6 +515,9 @@ class Server : public ServerInterface,
500
515
  absl::BitGen bitgen_ ABSL_GUARDED_BY(mu_call_);
501
516
 
502
517
  std::list<ChannelData*> channels_;
518
+ absl::flat_hash_set<OrphanablePtr<ServerTransport>> connections_
519
+ ABSL_GUARDED_BY(mu_global_);
520
+ size_t connections_open_ ABSL_GUARDED_BY(mu_global_) = 0;
503
521
 
504
522
  std::list<Listener> listeners_;
505
523
  size_t listeners_destroyed_ = 0;
@@ -26,11 +26,9 @@
26
26
  #include <grpc/support/port_platform.h>
27
27
 
28
28
  #include "src/core/lib/channel/call_finalization.h"
29
- #include "src/core/lib/channel/call_tracer.h"
30
29
  #include "src/core/lib/channel/channel_args.h"
31
30
  #include "src/core/lib/channel/channel_fwd.h"
32
31
  #include "src/core/lib/channel/channel_stack.h"
33
- #include "src/core/lib/channel/context.h"
34
32
  #include "src/core/lib/channel/promise_based_filter.h"
35
33
  #include "src/core/lib/config/core_configuration.h"
36
34
  #include "src/core/lib/promise/arena_promise.h"
@@ -40,6 +38,7 @@
40
38
  #include "src/core/lib/promise/pipe.h"
41
39
  #include "src/core/lib/surface/channel_stack_type.h"
42
40
  #include "src/core/lib/transport/transport.h"
41
+ #include "src/core/telemetry/call_tracer.h"
43
42
 
44
43
  namespace grpc_core {
45
44
 
@@ -56,42 +55,37 @@ class ServerCallTracerFilter
56
55
  class Call {
57
56
  public:
58
57
  void OnClientInitialMetadata(ClientMetadata& client_initial_metadata) {
59
- auto* call_tracer = CallTracer();
58
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
60
59
  if (call_tracer == nullptr) return;
61
60
  call_tracer->RecordReceivedInitialMetadata(&client_initial_metadata);
62
61
  }
63
62
 
64
63
  void OnServerInitialMetadata(ServerMetadata& server_initial_metadata) {
65
- auto* call_tracer = CallTracer();
64
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
66
65
  if (call_tracer == nullptr) return;
67
66
  call_tracer->RecordSendInitialMetadata(&server_initial_metadata);
68
67
  }
69
68
 
70
69
  void OnFinalize(const grpc_call_final_info* final_info) {
71
- auto* call_tracer = CallTracer();
70
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
72
71
  if (call_tracer == nullptr) return;
73
72
  call_tracer->RecordEnd(final_info);
74
73
  }
75
74
 
76
75
  void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata) {
77
- auto* call_tracer = CallTracer();
76
+ auto* call_tracer = MaybeGetContext<ServerCallTracer>();
78
77
  if (call_tracer == nullptr) return;
79
78
  call_tracer->RecordSendTrailingMetadata(&server_trailing_metadata);
80
79
  }
81
80
 
82
81
  static const NoInterceptor OnClientToServerMessage;
82
+ static const NoInterceptor OnClientToServerHalfClose;
83
83
  static const NoInterceptor OnServerToClientMessage;
84
-
85
- private:
86
- static ServerCallTracer* CallTracer() {
87
- auto* call_context = GetContext<grpc_call_context_element>();
88
- return static_cast<ServerCallTracer*>(
89
- call_context[GRPC_CONTEXT_CALL_TRACER].value);
90
- }
91
84
  };
92
85
  };
93
86
 
94
87
  const NoInterceptor ServerCallTracerFilter::Call::OnClientToServerMessage;
88
+ const NoInterceptor ServerCallTracerFilter::Call::OnClientToServerHalfClose;
95
89
  const NoInterceptor ServerCallTracerFilter::Call::OnServerToClientMessage;
96
90
 
97
91
  const grpc_channel_filter ServerCallTracerFilter::kFilter =
@@ -108,7 +102,6 @@ ServerCallTracerFilter::Create(const ChannelArgs& /*args*/,
108
102
  } // namespace
109
103
 
110
104
  void RegisterServerCallTracerFilter(CoreConfiguration::Builder* builder) {
111
- if (IsChaoticGoodEnabled()) return;
112
105
  builder->channel_init()->RegisterFilter<ServerCallTracerFilter>(
113
106
  GRPC_SERVER_CHANNEL);
114
107
  }
@@ -24,13 +24,13 @@
24
24
 
25
25
  #include <grpc/support/port_platform.h>
26
26
 
27
- #include "src/core/lib/gpr/useful.h"
28
27
  #include "src/core/lib/gprpp/dual_ref_counted.h"
29
28
  #include "src/core/lib/gprpp/ref_counted.h"
30
29
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
30
  #include "src/core/lib/transport/metadata_batch.h"
32
31
  #include "src/core/service_config/service_config.h"
33
32
  #include "src/core/service_config/service_config_parser.h"
33
+ #include "src/core/util/useful.h"
34
34
 
35
35
  namespace grpc_core {
36
36
 
@@ -28,7 +28,6 @@
28
28
  #include <grpc/support/port_platform.h>
29
29
 
30
30
  #include "src/core/lib/channel/channel_args.h"
31
- #include "src/core/lib/channel/context.h"
32
31
  #include "src/core/lib/channel/promise_based_filter.h"
33
32
  #include "src/core/lib/event_engine/event_engine_context.h"
34
33
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -72,6 +71,7 @@ class ServerConfigSelectorFilter final
72
71
  static const NoInterceptor OnServerInitialMetadata;
73
72
  static const NoInterceptor OnServerTrailingMetadata;
74
73
  static const NoInterceptor OnClientToServerMessage;
74
+ static const NoInterceptor OnClientToServerHalfClose;
75
75
  static const NoInterceptor OnServerToClientMessage;
76
76
  static const NoInterceptor OnFinalize;
77
77
  };
@@ -148,8 +148,7 @@ absl::Status ServerConfigSelectorFilter::Call::OnClientInitialMetadata(
148
148
  return absl::UnavailableError(StatusToString(call_config.status()));
149
149
  }
150
150
  auto* service_config_call_data =
151
- GetContext<Arena>()->New<ServiceConfigCallData>(
152
- GetContext<Arena>(), GetContext<grpc_call_context_element>());
151
+ GetContext<Arena>()->New<ServiceConfigCallData>(GetContext<Arena>());
153
152
  service_config_call_data->SetServiceConfig(
154
153
  std::move(call_config->service_config), call_config->method_configs);
155
154
  return absl::OkStatus();
@@ -158,6 +157,7 @@ absl::Status ServerConfigSelectorFilter::Call::OnClientInitialMetadata(
158
157
  const NoInterceptor ServerConfigSelectorFilter::Call::OnServerInitialMetadata;
159
158
  const NoInterceptor ServerConfigSelectorFilter::Call::OnServerTrailingMetadata;
160
159
  const NoInterceptor ServerConfigSelectorFilter::Call::OnClientToServerMessage;
160
+ const NoInterceptor ServerConfigSelectorFilter::Call::OnClientToServerHalfClose;
161
161
  const NoInterceptor ServerConfigSelectorFilter::Call::OnServerToClientMessage;
162
162
  const NoInterceptor ServerConfigSelectorFilter::Call::OnFinalize;
163
163
 
@@ -17,6 +17,7 @@
17
17
  #ifndef GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H
18
18
  #define GRPC_SRC_CORE_SERVER_SERVER_INTERFACE_H
19
19
 
20
+ #include <grpc/impl/compression_types.h>
20
21
  #include <grpc/support/port_platform.h>
21
22
 
22
23
  #include "src/core/channelz/channelz.h"
@@ -36,6 +37,7 @@ class ServerInterface {
36
37
  virtual const ChannelArgs& channel_args() const = 0;
37
38
  virtual channelz::ServerNode* channelz_node() const = 0;
38
39
  virtual ServerCallTracerFactory* server_call_tracer_factory() const = 0;
40
+ virtual grpc_compression_options compression_options() const = 0;
39
41
  };
40
42
 
41
43
  } // namespace grpc_core
@@ -27,9 +27,9 @@
27
27
  #include "src/core/lib/channel/channel_args.h"
28
28
  #include "src/core/lib/channel/channel_stack.h"
29
29
  #include "src/core/lib/config/core_configuration.h"
30
- #include "src/core/lib/gpr/useful.h"
31
30
  #include "src/core/lib/surface/channel_init.h"
32
31
  #include "src/core/lib/surface/channel_stack_type.h"
32
+ #include "src/core/util/useful.h"
33
33
 
34
34
  namespace grpc_core {
35
35
  namespace {
@@ -29,9 +29,9 @@
29
29
 
30
30
  #include "src/core/lib/channel/channel_fwd.h"
31
31
  #include "src/core/lib/channel/channel_stack_builder.h"
32
- #include "src/core/lib/gpr/useful.h"
33
32
  #include "src/core/lib/gprpp/ref_counted.h"
34
33
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
+ #include "src/core/util/useful.h"
35
35
 
36
36
  namespace grpc_core {
37
37
 
@@ -95,9 +95,6 @@ namespace {
95
95
 
96
96
  using ReadDelayHandle = XdsClient::ReadDelayHandle;
97
97
 
98
- TraceFlag grpc_xds_server_config_fetcher_trace(false,
99
- "xds_server_config_fetcher");
100
-
101
98
  // A server config fetcher that fetches the information for configuring server
102
99
  // listeners from the xDS control plane.
103
100
  class XdsServerConfigFetcher final : public grpc_server_config_fetcher {
@@ -587,7 +584,7 @@ XdsServerConfigFetcher::ListenerWatcher::ListenerWatcher(
587
584
  void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
588
585
  std::shared_ptr<const XdsListenerResource> listener,
589
586
  RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) {
590
- if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_server_config_fetcher_trace)) {
587
+ if (GRPC_TRACE_FLAG_ENABLED(xds_server_config_fetcher)) {
591
588
  gpr_log(GPR_INFO,
592
589
  "[ListenerWatcher %p] Received LDS update from xds client %p: %s",
593
590
  this, xds_client_.get(), listener->ToString().c_str());
@@ -24,9 +24,9 @@
24
24
  #include <grpc/slice.h>
25
25
  #include <grpc/support/port_platform.h>
26
26
 
27
- #include "src/core/lib/gpr/useful.h"
28
27
  #include "src/core/lib/gprpp/ref_counted.h"
29
28
  #include "src/core/service_config/service_config_parser.h"
29
+ #include "src/core/util/useful.h"
30
30
 
31
31
  // The main purpose of the code here is to parse the service config in
32
32
  // JSON form, which will look like this:
@@ -24,7 +24,6 @@
24
24
 
25
25
  #include <grpc/support/port_platform.h>
26
26
 
27
- #include "src/core/lib/channel/context.h"
28
27
  #include "src/core/lib/gprpp/chunked_vector.h"
29
28
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
30
29
  #include "src/core/lib/gprpp/unique_type_name.h"
@@ -49,11 +48,7 @@ class ServiceConfigCallData {
49
48
  virtual UniqueTypeName type() const = 0;
50
49
  };
51
50
 
52
- ServiceConfigCallData(Arena* arena, grpc_call_context_element* call_context)
53
- : call_attributes_(arena) {
54
- call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value = this;
55
- call_context[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].destroy = Destroy;
56
- }
51
+ explicit ServiceConfigCallData(Arena* arena);
57
52
 
58
53
  virtual ~ServiceConfigCallData() = default;
59
54
 
@@ -101,16 +96,23 @@ class ServiceConfigCallData {
101
96
  }
102
97
 
103
98
  private:
104
- static void Destroy(void* ptr) {
105
- auto* self = static_cast<ServiceConfigCallData*>(ptr);
106
- self->~ServiceConfigCallData();
107
- }
108
-
109
99
  RefCountedPtr<ServiceConfig> service_config_;
110
100
  const ServiceConfigParser::ParsedConfigVector* method_configs_ = nullptr;
111
101
  ChunkedVector<CallAttributeInterface*, 4> call_attributes_;
112
102
  };
113
103
 
104
+ template <>
105
+ struct ArenaContextType<ServiceConfigCallData> {
106
+ static void Destroy(ServiceConfigCallData* ptr) {
107
+ ptr->~ServiceConfigCallData();
108
+ }
109
+ };
110
+
111
+ inline ServiceConfigCallData::ServiceConfigCallData(Arena* arena)
112
+ : call_attributes_(arena) {
113
+ arena->SetContext<ServiceConfigCallData>(this);
114
+ }
115
+
114
116
  } // namespace grpc_core
115
117
 
116
118
  #endif // GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CALL_DATA_H
@@ -22,6 +22,7 @@
22
22
  #include <string>
23
23
  #include <utility>
24
24
 
25
+ #include "absl/log/log.h"
25
26
  #include "absl/status/status.h"
26
27
  #include "absl/status/statusor.h"
27
28
  #include "absl/types/optional.h"
@@ -34,7 +35,6 @@
34
35
  #include "src/core/lib/channel/channel_args.h"
35
36
  #include "src/core/lib/channel/channel_fwd.h"
36
37
  #include "src/core/lib/channel/channel_stack.h"
37
- #include "src/core/lib/channel/context.h"
38
38
  #include "src/core/lib/channel/promise_based_filter.h"
39
39
  #include "src/core/lib/config/core_configuration.h"
40
40
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -69,7 +69,7 @@ class ServiceConfigChannelArgFilter final
69
69
  auto service_config =
70
70
  ServiceConfigImpl::Create(args, *service_config_str);
71
71
  if (!service_config.ok()) {
72
- gpr_log(GPR_ERROR, "%s", service_config.status().ToString().c_str());
72
+ LOG(ERROR) << service_config.status().ToString();
73
73
  } else {
74
74
  service_config_ = std::move(*service_config);
75
75
  }
@@ -83,6 +83,7 @@ class ServiceConfigChannelArgFilter final
83
83
  static const NoInterceptor OnServerInitialMetadata;
84
84
  static const NoInterceptor OnServerTrailingMetadata;
85
85
  static const NoInterceptor OnClientToServerMessage;
86
+ static const NoInterceptor OnClientToServerHalfClose;
86
87
  static const NoInterceptor OnServerToClientMessage;
87
88
  static const NoInterceptor OnFinalize;
88
89
  };
@@ -97,6 +98,8 @@ const NoInterceptor
97
98
  ServiceConfigChannelArgFilter::Call::OnServerTrailingMetadata;
98
99
  const NoInterceptor
99
100
  ServiceConfigChannelArgFilter::Call::OnClientToServerMessage;
101
+ const NoInterceptor
102
+ ServiceConfigChannelArgFilter::Call::OnClientToServerHalfClose;
100
103
  const NoInterceptor
101
104
  ServiceConfigChannelArgFilter::Call::OnServerToClientMessage;
102
105
  const NoInterceptor ServiceConfigChannelArgFilter::Call::OnFinalize;
@@ -109,8 +112,7 @@ void ServiceConfigChannelArgFilter::Call::OnClientInitialMetadata(
109
112
  md.get_pointer(HttpPathMetadata())->c_slice());
110
113
  }
111
114
  auto* arena = GetContext<Arena>();
112
- auto* service_config_call_data = arena->New<ServiceConfigCallData>(
113
- arena, GetContext<grpc_call_context_element>());
115
+ auto* service_config_call_data = arena->New<ServiceConfigCallData>(arena);
114
116
  service_config_call_data->SetServiceConfig(filter->service_config_,
115
117
  method_configs);
116
118
  }
@@ -31,14 +31,14 @@
31
31
  #include "src/core/lib/config/core_configuration.h"
32
32
  #include "src/core/lib/gprpp/memory.h"
33
33
  #include "src/core/lib/gprpp/validation_errors.h"
34
- #include "src/core/lib/json/json.h"
35
- #include "src/core/lib/json/json_args.h"
36
- #include "src/core/lib/json/json_object_loader.h"
37
- #include "src/core/lib/json/json_reader.h"
38
- #include "src/core/lib/json/json_writer.h"
39
34
  #include "src/core/lib/slice/slice.h"
40
35
  #include "src/core/lib/slice/slice_internal.h"
41
36
  #include "src/core/service_config/service_config_parser.h"
37
+ #include "src/core/util/json/json.h"
38
+ #include "src/core/util/json/json_args.h"
39
+ #include "src/core/util/json/json_object_loader.h"
40
+ #include "src/core/util/json/json_reader.h"
41
+ #include "src/core/util/json/json_writer.h"
42
42
 
43
43
  namespace grpc_core {
44
44
 
@@ -35,10 +35,10 @@
35
35
  #include "src/core/lib/channel/channel_args.h"
36
36
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
37
37
  #include "src/core/lib/gprpp/validation_errors.h"
38
- #include "src/core/lib/json/json.h"
39
38
  #include "src/core/lib/slice/slice_internal.h"
40
39
  #include "src/core/service_config/service_config.h"
41
40
  #include "src/core/service_config/service_config_parser.h"
41
+ #include "src/core/util/json/json.h"
42
42
 
43
43
  // The main purpose of the code here is to parse the service config in
44
44
  // JSON form, which will look like this:
@@ -20,9 +20,8 @@
20
20
 
21
21
  #include <string>
22
22
 
23
- #include "absl/strings/str_cat.h"
23
+ #include "absl/log/log.h"
24
24
 
25
- #include <grpc/support/log.h>
26
25
  #include <grpc/support/port_platform.h>
27
26
 
28
27
  namespace grpc_core {
@@ -35,10 +34,8 @@ void ServiceConfigParser::Builder::RegisterParser(
35
34
  std::unique_ptr<Parser> parser) {
36
35
  for (const auto& registered_parser : registered_parsers_) {
37
36
  if (registered_parser->name() == parser->name()) {
38
- gpr_log(GPR_ERROR, "%s",
39
- absl::StrCat("Parser with name '", parser->name(),
40
- "' already registered")
41
- .c_str());
37
+ LOG(ERROR) << "Parser with name '" << parser->name()
38
+ << "' already registered";
42
39
  // We'll otherwise crash later.
43
40
  abort();
44
41
  }
@@ -30,7 +30,7 @@
30
30
 
31
31
  #include "src/core/lib/channel/channel_args.h"
32
32
  #include "src/core/lib/gprpp/validation_errors.h"
33
- #include "src/core/lib/json/json.h"
33
+ #include "src/core/util/json/json.h"
34
34
 
35
35
  namespace grpc_core {
36
36
 
@@ -16,7 +16,7 @@
16
16
  //
17
17
  //
18
18
 
19
- #include "src/core/lib/channel/call_tracer.h"
19
+ #include "src/core/telemetry/call_tracer.h"
20
20
 
21
21
  #include <memory>
22
22
  #include <utility>
@@ -27,8 +27,8 @@
27
27
  #include <grpc/support/log.h>
28
28
  #include <grpc/support/port_platform.h>
29
29
 
30
- #include "src/core/lib/channel/tcp_tracer.h"
31
30
  #include "src/core/lib/promise/context.h"
31
+ #include "src/core/telemetry/tcp_tracer.h"
32
32
 
33
33
  namespace grpc_core {
34
34
 
@@ -299,63 +299,53 @@ class DelegatingServerCallTracer : public ServerCallTracer {
299
299
  std::vector<ServerCallTracer*> tracers_;
300
300
  };
301
301
 
302
- void AddClientCallTracerToContext(grpc_call_context_element* call_context,
303
- ClientCallTracer* tracer) {
304
- if (call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value ==
305
- nullptr) {
302
+ void AddClientCallTracerToContext(Arena* arena, ClientCallTracer* tracer) {
303
+ if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
306
304
  // This is the first call tracer. Set it directly.
307
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value = tracer;
308
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].destroy =
309
- nullptr;
305
+ arena->SetContext<CallTracerAnnotationInterface>(tracer);
310
306
  } else {
311
307
  // There was already a call tracer present.
312
- auto* orig_tracer = static_cast<ClientCallTracer*>(
313
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
308
+ auto* orig_tracer = DownCast<ClientCallTracer*>(
309
+ arena->GetContext<CallTracerAnnotationInterface>());
314
310
  if (orig_tracer->IsDelegatingTracer()) {
315
311
  // We already created a delegating tracer. Just add the new tracer to the
316
312
  // list.
317
- static_cast<DelegatingClientCallTracer*>(orig_tracer)->AddTracer(tracer);
313
+ DownCast<DelegatingClientCallTracer*>(orig_tracer)->AddTracer(tracer);
318
314
  } else {
319
315
  // Create a new delegating tracer and add the first tracer and the new
320
316
  // tracer to the list.
321
317
  auto* delegating_tracer =
322
318
  GetContext<Arena>()->ManagedNew<DelegatingClientCallTracer>(
323
319
  orig_tracer);
324
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value =
325
- delegating_tracer;
320
+ arena->SetContext<CallTracerAnnotationInterface>(delegating_tracer);
326
321
  delegating_tracer->AddTracer(tracer);
327
322
  }
328
323
  }
329
324
  }
330
325
 
331
- void AddServerCallTracerToContext(grpc_call_context_element* call_context,
332
- ServerCallTracer* tracer) {
333
- DCHECK(call_context[GRPC_CONTEXT_CALL_TRACER].value ==
334
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
335
- if (call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value ==
336
- nullptr) {
326
+ void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
327
+ DCHECK_EQ(arena->GetContext<CallTracerInterface>(),
328
+ arena->GetContext<CallTracerAnnotationInterface>());
329
+ if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
337
330
  // This is the first call tracer. Set it directly.
338
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value = tracer;
339
- call_context[GRPC_CONTEXT_CALL_TRACER].value = tracer;
340
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].destroy =
341
- nullptr;
331
+ arena->SetContext<CallTracerAnnotationInterface>(tracer);
332
+ arena->SetContext<CallTracerInterface>(tracer);
342
333
  } else {
343
334
  // There was already a call tracer present.
344
- auto* orig_tracer = static_cast<ServerCallTracer*>(
345
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value);
335
+ auto* orig_tracer = DownCast<ServerCallTracer*>(
336
+ arena->GetContext<CallTracerAnnotationInterface>());
346
337
  if (orig_tracer->IsDelegatingTracer()) {
347
338
  // We already created a delegating tracer. Just add the new tracer to the
348
339
  // list.
349
- static_cast<DelegatingServerCallTracer*>(orig_tracer)->AddTracer(tracer);
340
+ DownCast<DelegatingServerCallTracer*>(orig_tracer)->AddTracer(tracer);
350
341
  } else {
351
342
  // Create a new delegating tracer and add the first tracer and the new
352
343
  // tracer to the list.
353
344
  auto* delegating_tracer =
354
345
  GetContext<Arena>()->ManagedNew<DelegatingServerCallTracer>(
355
346
  orig_tracer);
356
- call_context[GRPC_CONTEXT_CALL_TRACER_ANNOTATION_INTERFACE].value =
357
- delegating_tracer;
358
- call_context[GRPC_CONTEXT_CALL_TRACER].value = delegating_tracer;
347
+ arena->SetContext<CallTracerAnnotationInterface>(delegating_tracer);
348
+ arena->SetContext<CallTracerInterface>(delegating_tracer);
359
349
  delegating_tracer->AddTracer(tracer);
360
350
  }
361
351
  }