grpc 1.74.1 → 1.75.0.pre1

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 (368) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +83 -41
  3. data/include/grpc/credentials.h +7 -1
  4. data/src/core/call/client_call.cc +4 -4
  5. data/src/core/call/filter_fusion.h +1230 -0
  6. data/src/core/call/metadata.cc +22 -0
  7. data/src/core/call/metadata.h +24 -2
  8. data/src/core/channelz/channelz.cc +10 -17
  9. data/src/core/channelz/channelz.h +58 -19
  10. data/src/core/channelz/channelz_registry.cc +0 -162
  11. data/src/core/channelz/channelz_registry.h +14 -7
  12. data/src/core/channelz/property_list.cc +19 -23
  13. data/src/core/channelz/property_list.h +3 -1
  14. data/src/core/channelz/v2tov1/convert.cc +683 -0
  15. data/src/core/channelz/v2tov1/convert.h +58 -0
  16. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  17. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  18. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  19. data/src/core/channelz/v2tov1/property_list.h +52 -0
  20. data/src/core/client_channel/client_channel_filter.cc +5 -4
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_internal.h +2 -1
  23. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  24. data/src/core/client_channel/subchannel.cc +14 -6
  25. data/src/core/client_channel/subchannel.h +2 -0
  26. data/src/core/config/core_configuration.cc +3 -1
  27. data/src/core/config/core_configuration.h +12 -0
  28. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  29. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  30. data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
  31. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  32. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  33. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  34. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  37. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  38. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  39. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  40. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  41. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  44. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  45. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  46. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  47. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  48. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  49. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  50. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  51. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
  53. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  54. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  55. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
  56. data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
  57. data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
  61. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  62. data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
  63. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  64. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
  66. data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
  67. data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
  68. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  69. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
  70. data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  72. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  73. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
  74. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  75. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  76. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  77. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
  78. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
  79. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
  80. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  81. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  82. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
  83. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
  84. data/src/core/filter/auth/auth_filters.h +2 -2
  85. data/src/core/filter/fused_filters.cc +154 -0
  86. data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
  87. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  88. data/src/core/handshaker/security/secure_endpoint.cc +28 -13
  89. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  90. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  91. data/src/core/lib/channel/promise_based_filter.h +6 -5
  92. data/src/core/lib/event_engine/ares_resolver.h +3 -1
  93. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
  94. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
  95. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  96. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  97. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  98. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
  99. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
  100. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
  101. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
  102. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
  103. data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
  104. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
  105. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  106. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
  107. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  108. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  109. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
  110. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
  111. data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
  112. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  113. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  114. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
  115. data/src/core/lib/experiments/experiments.cc +120 -6
  116. data/src/core/lib/experiments/experiments.h +46 -3
  117. data/src/core/lib/iomgr/combiner.cc +1 -1
  118. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  119. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  120. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  121. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  123. data/src/core/lib/iomgr/tcp_posix.cc +3 -3
  124. data/src/core/lib/promise/activity.h +2 -2
  125. data/src/core/lib/promise/mpsc.cc +8 -8
  126. data/src/core/lib/promise/party.cc +7 -7
  127. data/src/core/lib/promise/party.h +4 -4
  128. data/src/core/lib/promise/poll.h +10 -0
  129. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  130. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  131. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  132. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  133. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  134. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  135. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  136. data/src/core/lib/surface/call.cc +5 -5
  137. data/src/core/lib/surface/call.h +6 -5
  138. data/src/core/lib/surface/completion_queue.cc +2 -4
  139. data/src/core/lib/surface/filter_stack_call.cc +1 -1
  140. data/src/core/lib/surface/version.cc +2 -2
  141. data/src/core/lib/transport/promise_endpoint.cc +2 -2
  142. data/src/core/lib/transport/promise_endpoint.h +3 -3
  143. data/src/core/load_balancing/endpoint_list.cc +29 -2
  144. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  145. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  146. data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
  147. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  148. data/src/core/net/socket_mutator.cc +19 -0
  149. data/src/core/net/socket_mutator.h +25 -0
  150. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  151. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  152. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  153. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  154. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  155. data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
  156. data/src/core/server/server.cc +1 -1
  157. data/src/core/server/server_call_tracer_filter.cc +0 -66
  158. data/src/core/server/server_call_tracer_filter.h +64 -0
  159. data/src/core/server/server_config_selector_filter.cc +1 -1
  160. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  161. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  162. data/src/core/telemetry/call_tracer.cc +20 -14
  163. data/src/core/telemetry/call_tracer.h +22 -17
  164. data/src/core/telemetry/metrics.h +8 -8
  165. data/src/core/telemetry/stats_data.cc +151 -151
  166. data/src/core/telemetry/stats_data.h +87 -87
  167. data/src/core/transport/auth_context.cc +20 -0
  168. data/src/core/transport/auth_context.h +4 -0
  169. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  170. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  171. data/src/core/tsi/ssl_transport_security.cc +202 -32
  172. data/src/core/tsi/ssl_transport_security.h +19 -10
  173. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  174. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  175. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  176. data/src/core/util/latent_see.cc +178 -146
  177. data/src/core/util/latent_see.h +245 -188
  178. data/src/core/util/single_set_ptr.h +5 -2
  179. data/src/core/util/useful.h +91 -0
  180. data/src/core/util/windows/directory_reader.cc +1 -0
  181. data/src/core/util/windows/thd.cc +1 -3
  182. data/src/core/util/work_serializer.cc +1 -1
  183. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  184. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  185. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  186. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  187. data/src/ruby/lib/grpc/version.rb +1 -1
  188. data/third_party/cares/cares/include/ares.h +925 -460
  189. data/third_party/cares/cares/include/ares_dns.h +86 -71
  190. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  191. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  192. data/third_party/cares/cares/include/ares_version.h +37 -14
  193. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  194. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  195. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  196. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  197. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  198. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  199. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  201. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  202. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  203. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  204. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  205. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  206. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  207. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  208. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  209. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  210. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  211. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  212. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  213. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  214. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  215. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  216. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  217. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  218. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  219. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  220. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  221. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  222. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  223. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  224. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  225. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  226. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  227. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  228. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  229. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  230. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  231. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  232. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  233. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  234. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  235. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  238. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  239. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  240. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  241. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  242. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  243. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  244. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  255. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  265. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  266. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  267. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  273. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  274. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  275. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  276. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  277. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  278. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  279. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  294. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  302. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  303. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  304. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  306. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  307. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  309. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  311. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  313. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  315. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  316. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  317. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  319. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  320. metadata +121 -49
  321. data/src/core/util/ring_buffer.h +0 -122
  322. data/third_party/cares/cares/include/ares_rules.h +0 -125
  323. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  324. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  325. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  326. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  327. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  328. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  329. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  330. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  331. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  332. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  333. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  334. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  335. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  336. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  337. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  338. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  339. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  340. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  341. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  342. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  343. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  344. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  345. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  346. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  347. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  348. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  349. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  350. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  351. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  352. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  353. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  354. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  355. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  356. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  357. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  359. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  360. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  361. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  362. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  363. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  364. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  365. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  366. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  367. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  368. data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -19,7 +19,6 @@
19
19
  #ifndef GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
20
20
  #define GRPC_SRC_CORE_RESOLVER_DNS_C_ARES_GRPC_ARES_WRAPPER_H
21
21
 
22
- #include <ares.h>
23
22
  #include <grpc/support/port_platform.h>
24
23
  #include <stddef.h>
25
24
 
@@ -36,6 +35,8 @@
36
35
 
37
36
  #if GRPC_ARES == 1
38
37
 
38
+ #include <ares.h>
39
+
39
40
  #define GRPC_DNS_ARES_DEFAULT_QUERY_TIMEOUT_MS 120000
40
41
 
41
42
  typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
@@ -940,7 +940,7 @@ void XdsDependencyManager::MaybeReportUpdate() {
940
940
  endpoint_watchers_.erase(it++);
941
941
  }
942
942
  // Remove entries in dns_resolvers_ for any DNS name not in
943
- // eds_resources_seen.
943
+ // dns_names_seen.
944
944
  for (auto it = dns_resolvers_.begin(); it != dns_resolvers_.end();) {
945
945
  const std::string& dns_name = it->first;
946
946
  if (dns_names_seen.find(dns_name) != dns_names_seen.end()) {
@@ -1311,7 +1311,7 @@ grpc_error_handle Server::SetupTransport(Transport* transport,
1311
1311
  grpc_pollset* accepting_pollset,
1312
1312
  const ChannelArgs& args,
1313
1313
  const Blackboard* blackboard) {
1314
- GRPC_LATENT_SEE_INNER_SCOPE("Server::SetupTransport");
1314
+ GRPC_LATENT_SEE_SCOPE("Server::SetupTransport");
1315
1315
  // Create channel.
1316
1316
  global_stats().IncrementServerChannelsCreated();
1317
1317
  // Set up channelz node.
@@ -18,81 +18,17 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <functional>
22
21
  #include <memory>
23
- #include <utility>
24
22
 
25
- #include "absl/status/status.h"
26
23
  #include "absl/status/statusor.h"
27
- #include "src/core/call/call_finalization.h"
28
24
  #include "src/core/config/core_configuration.h"
29
25
  #include "src/core/lib/channel/channel_args.h"
30
26
  #include "src/core/lib/channel/channel_fwd.h"
31
- #include "src/core/lib/channel/channel_stack.h"
32
27
  #include "src/core/lib/channel/promise_based_filter.h"
33
- #include "src/core/lib/promise/arena_promise.h"
34
- #include "src/core/lib/promise/cancel_callback.h"
35
- #include "src/core/lib/promise/context.h"
36
- #include "src/core/lib/promise/map.h"
37
- #include "src/core/lib/promise/pipe.h"
38
28
  #include "src/core/lib/surface/channel_stack_type.h"
39
- #include "src/core/lib/transport/transport.h"
40
- #include "src/core/telemetry/call_tracer.h"
41
- #include "src/core/util/latent_see.h"
42
29
 
43
30
  namespace grpc_core {
44
31
 
45
- namespace {
46
-
47
- class ServerCallTracerFilter
48
- : public ImplementChannelFilter<ServerCallTracerFilter> {
49
- public:
50
- static const grpc_channel_filter kFilter;
51
-
52
- static absl::string_view TypeName() { return "server_call_tracer"; }
53
-
54
- static absl::StatusOr<std::unique_ptr<ServerCallTracerFilter>> Create(
55
- const ChannelArgs& /*args*/, ChannelFilter::Args /*filter_args*/);
56
-
57
- class Call {
58
- public:
59
- void OnClientInitialMetadata(ClientMetadata& client_initial_metadata) {
60
- GRPC_LATENT_SEE_INNER_SCOPE(
61
- "ServerCallTracerFilter::Call::OnClientInitialMetadata");
62
- auto* call_tracer = MaybeGetContext<ServerCallTracer>();
63
- if (call_tracer == nullptr) return;
64
- call_tracer->RecordReceivedInitialMetadata(&client_initial_metadata);
65
- }
66
-
67
- void OnServerInitialMetadata(ServerMetadata& server_initial_metadata) {
68
- GRPC_LATENT_SEE_INNER_SCOPE(
69
- "ServerCallTracerFilter::Call::OnServerInitialMetadata");
70
- auto* call_tracer = MaybeGetContext<ServerCallTracer>();
71
- if (call_tracer == nullptr) return;
72
- call_tracer->RecordSendInitialMetadata(&server_initial_metadata);
73
- }
74
-
75
- void OnFinalize(const grpc_call_final_info* final_info) {
76
- GRPC_LATENT_SEE_INNER_SCOPE("ServerCallTracerFilter::Call::OnFinalize");
77
- auto* call_tracer = MaybeGetContext<ServerCallTracer>();
78
- if (call_tracer == nullptr) return;
79
- call_tracer->RecordEnd(final_info);
80
- }
81
-
82
- void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata) {
83
- GRPC_LATENT_SEE_INNER_SCOPE(
84
- "ServerCallTracerFilter::Call::OnServerTrailingMetadata");
85
- auto* call_tracer = MaybeGetContext<ServerCallTracer>();
86
- if (call_tracer == nullptr) return;
87
- call_tracer->RecordSendTrailingMetadata(&server_trailing_metadata);
88
- }
89
-
90
- static inline const NoInterceptor OnClientToServerMessage;
91
- static inline const NoInterceptor OnClientToServerHalfClose;
92
- static inline const NoInterceptor OnServerToClientMessage;
93
- };
94
- };
95
-
96
32
  const grpc_channel_filter ServerCallTracerFilter::kFilter =
97
33
  MakePromiseBasedFilter<ServerCallTracerFilter, FilterEndpoint::kServer,
98
34
  kFilterExaminesServerInitialMetadata>();
@@ -103,8 +39,6 @@ ServerCallTracerFilter::Create(const ChannelArgs& /*args*/,
103
39
  return std::make_unique<ServerCallTracerFilter>();
104
40
  }
105
41
 
106
- } // namespace
107
-
108
42
  void RegisterServerCallTracerFilter(CoreConfiguration::Builder* builder) {
109
43
  builder->channel_init()->RegisterFilter<ServerCallTracerFilter>(
110
44
  GRPC_SERVER_CHANNEL);
@@ -17,10 +17,74 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <functional>
21
+ #include <utility>
22
+
23
+ #include "absl/status/status.h"
24
+ #include "src/core/call/call_finalization.h"
20
25
  #include "src/core/config/core_configuration.h"
26
+ #include "src/core/lib/channel/channel_stack.h"
27
+ #include "src/core/lib/channel/promise_based_filter.h"
28
+ #include "src/core/lib/promise/arena_promise.h"
29
+ #include "src/core/lib/promise/cancel_callback.h"
30
+ #include "src/core/lib/promise/context.h"
31
+ #include "src/core/lib/promise/map.h"
32
+ #include "src/core/lib/promise/pipe.h"
33
+ #include "src/core/lib/transport/transport.h"
34
+ #include "src/core/telemetry/call_tracer.h"
35
+ #include "src/core/util/latent_see.h"
21
36
 
22
37
  namespace grpc_core {
23
38
 
39
+ class ServerCallTracerFilter
40
+ : public ImplementChannelFilter<ServerCallTracerFilter> {
41
+ public:
42
+ static const grpc_channel_filter kFilter;
43
+
44
+ static absl::string_view TypeName() { return "server_call_tracer"; }
45
+
46
+ static absl::StatusOr<std::unique_ptr<ServerCallTracerFilter>> Create(
47
+ const ChannelArgs& /*args*/, ChannelFilter::Args /*filter_args*/);
48
+
49
+ class Call {
50
+ public:
51
+ void OnClientInitialMetadata(ClientMetadata& client_initial_metadata) {
52
+ GRPC_LATENT_SEE_SCOPE(
53
+ "ServerCallTracerFilter::Call::OnClientInitialMetadata");
54
+ auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
55
+ if (call_tracer == nullptr) return;
56
+ call_tracer->RecordReceivedInitialMetadata(&client_initial_metadata);
57
+ }
58
+
59
+ void OnServerInitialMetadata(ServerMetadata& server_initial_metadata) {
60
+ GRPC_LATENT_SEE_SCOPE(
61
+ "ServerCallTracerFilter::Call::OnServerInitialMetadata");
62
+ auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
63
+ if (call_tracer == nullptr) return;
64
+ call_tracer->RecordSendInitialMetadata(&server_initial_metadata);
65
+ }
66
+
67
+ void OnFinalize(const grpc_call_final_info* final_info) {
68
+ GRPC_LATENT_SEE_SCOPE("ServerCallTracerFilter::Call::OnFinalize");
69
+ auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
70
+ if (call_tracer == nullptr) return;
71
+ call_tracer->RecordEnd(final_info);
72
+ }
73
+
74
+ void OnServerTrailingMetadata(ServerMetadata& server_trailing_metadata) {
75
+ GRPC_LATENT_SEE_SCOPE(
76
+ "ServerCallTracerFilter::Call::OnServerTrailingMetadata");
77
+ auto* call_tracer = MaybeGetContext<ServerCallTracerInterface>();
78
+ if (call_tracer == nullptr) return;
79
+ call_tracer->RecordSendTrailingMetadata(&server_trailing_metadata);
80
+ }
81
+
82
+ static inline const NoInterceptor OnClientToServerMessage;
83
+ static inline const NoInterceptor OnClientToServerHalfClose;
84
+ static inline const NoInterceptor OnServerToClientMessage;
85
+ };
86
+ };
87
+
24
88
  void RegisterServerCallTracerFilter(CoreConfiguration::Builder* builder);
25
89
 
26
90
  } // namespace grpc_core
@@ -144,7 +144,7 @@ void ServerConfigSelectorFilter::Orphan() {
144
144
 
145
145
  absl::Status ServerConfigSelectorFilter::Call::OnClientInitialMetadata(
146
146
  ClientMetadata& md, ServerConfigSelectorFilter* filter) {
147
- GRPC_LATENT_SEE_INNER_SCOPE(
147
+ GRPC_LATENT_SEE_SCOPE(
148
148
  "ServerConfigSelectorFilter::Call::OnClientInitialMetadata");
149
149
  auto sel = filter->config_selector();
150
150
  if (!sel.ok()) return sel.status();
@@ -17,85 +17,30 @@
17
17
  // This filter reads GRPC_ARG_SERVICE_CONFIG and populates ServiceConfigCallData
18
18
  // in the call context per call for direct channels.
19
19
 
20
+ #include "src/core/service_config/service_config_channel_arg_filter.h"
21
+
20
22
  #include <grpc/impl/channel_arg_names.h>
21
23
  #include <grpc/support/port_platform.h>
22
24
 
23
- #include <functional>
24
- #include <memory>
25
- #include <optional>
26
- #include <string>
27
- #include <utility>
28
-
29
- #include "absl/log/log.h"
30
- #include "absl/status/status.h"
31
- #include "absl/status/statusor.h"
32
25
  #include "src/core/call/metadata_batch.h"
33
26
  #include "src/core/config/core_configuration.h"
34
27
  #include "src/core/ext/filters/message_size/message_size_filter.h"
35
- #include "src/core/lib/channel/channel_args.h"
36
28
  #include "src/core/lib/channel/channel_fwd.h"
37
- #include "src/core/lib/channel/channel_stack.h"
38
29
  #include "src/core/lib/channel/promise_based_filter.h"
39
- #include "src/core/lib/promise/arena_promise.h"
40
30
  #include "src/core/lib/promise/context.h"
41
31
  #include "src/core/lib/resource_quota/arena.h"
42
32
  #include "src/core/lib/surface/channel_stack_type.h"
43
- #include "src/core/lib/transport/transport.h"
44
33
  #include "src/core/service_config/service_config.h"
45
34
  #include "src/core/service_config/service_config_call_data.h"
46
- #include "src/core/service_config/service_config_impl.h"
47
35
  #include "src/core/service_config/service_config_parser.h"
48
36
  #include "src/core/util/latent_see.h"
49
37
  #include "src/core/util/ref_counted_ptr.h"
50
38
 
51
39
  namespace grpc_core {
52
40
 
53
- namespace {
54
-
55
- class ServiceConfigChannelArgFilter final
56
- : public ImplementChannelFilter<ServiceConfigChannelArgFilter> {
57
- public:
58
- static const grpc_channel_filter kFilter;
59
-
60
- static absl::string_view TypeName() { return "service_config_channel_arg"; }
61
-
62
- static absl::StatusOr<std::unique_ptr<ServiceConfigChannelArgFilter>> Create(
63
- const ChannelArgs& args, ChannelFilter::Args) {
64
- return std::make_unique<ServiceConfigChannelArgFilter>(args);
65
- }
66
-
67
- explicit ServiceConfigChannelArgFilter(const ChannelArgs& args) {
68
- auto service_config_str = args.GetOwnedString(GRPC_ARG_SERVICE_CONFIG);
69
- if (service_config_str.has_value()) {
70
- auto service_config =
71
- ServiceConfigImpl::Create(args, *service_config_str);
72
- if (!service_config.ok()) {
73
- LOG(ERROR) << service_config.status().ToString();
74
- } else {
75
- service_config_ = std::move(*service_config);
76
- }
77
- }
78
- }
79
-
80
- class Call {
81
- public:
82
- void OnClientInitialMetadata(ClientMetadata& md,
83
- ServiceConfigChannelArgFilter* filter);
84
- static inline const NoInterceptor OnServerInitialMetadata;
85
- static inline const NoInterceptor OnServerTrailingMetadata;
86
- static inline const NoInterceptor OnClientToServerMessage;
87
- static inline const NoInterceptor OnClientToServerHalfClose;
88
- static inline const NoInterceptor OnServerToClientMessage;
89
- static inline const NoInterceptor OnFinalize;
90
- };
91
-
92
- private:
93
- RefCountedPtr<ServiceConfig> service_config_;
94
- };
95
-
96
41
  void ServiceConfigChannelArgFilter::Call::OnClientInitialMetadata(
97
42
  ClientMetadata& md, ServiceConfigChannelArgFilter* filter) {
98
- GRPC_LATENT_SEE_INNER_SCOPE(
43
+ GRPC_LATENT_SEE_SCOPE(
99
44
  "ServiceConfigChannelArgFilter::Call::OnClientInitialMetadata");
100
45
  const ServiceConfigParser::ParsedConfigVector* method_configs = nullptr;
101
46
  if (filter->service_config_ != nullptr) {
@@ -112,8 +57,6 @@ const grpc_channel_filter ServiceConfigChannelArgFilter::kFilter =
112
57
  MakePromiseBasedFilter<ServiceConfigChannelArgFilter,
113
58
  FilterEndpoint::kClient>();
114
59
 
115
- } // namespace
116
-
117
60
  void RegisterServiceConfigChannelArgFilter(
118
61
  CoreConfiguration::Builder* builder) {
119
62
  builder->channel_init()
@@ -0,0 +1,82 @@
1
+ //
2
+ // Copyright 2020 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ // This filter reads GRPC_ARG_SERVICE_CONFIG and populates ServiceConfigCallData
18
+ // in the call context per call for direct channels.
19
+
20
+ #ifndef GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
21
+ #define GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
22
+
23
+ #include <grpc/slice.h>
24
+ #include <grpc/support/port_platform.h>
25
+ #include <stddef.h>
26
+
27
+ #include <memory>
28
+
29
+ #include "absl/status/statusor.h"
30
+ #include "src/core/lib/channel/channel_args.h"
31
+ #include "src/core/lib/channel/channel_fwd.h"
32
+ #include "src/core/lib/channel/promise_based_filter.h"
33
+ #include "src/core/service_config/service_config.h"
34
+ #include "src/core/service_config/service_config_impl.h"
35
+ #include "src/core/util/ref_counted_ptr.h"
36
+
37
+ namespace grpc_core {
38
+
39
+ class ServiceConfigChannelArgFilter final
40
+ : public ImplementChannelFilter<ServiceConfigChannelArgFilter> {
41
+ public:
42
+ static const grpc_channel_filter kFilter;
43
+
44
+ static absl::string_view TypeName() { return "service_config_channel_arg"; }
45
+
46
+ static absl::StatusOr<std::unique_ptr<ServiceConfigChannelArgFilter>> Create(
47
+ const ChannelArgs& args, ChannelFilter::Args) {
48
+ return std::make_unique<ServiceConfigChannelArgFilter>(args);
49
+ }
50
+
51
+ explicit ServiceConfigChannelArgFilter(const ChannelArgs& args) {
52
+ auto service_config_str = args.GetOwnedString(GRPC_ARG_SERVICE_CONFIG);
53
+ if (service_config_str.has_value()) {
54
+ auto service_config =
55
+ ServiceConfigImpl::Create(args, *service_config_str);
56
+ if (!service_config.ok()) {
57
+ LOG(ERROR) << service_config.status().ToString();
58
+ } else {
59
+ service_config_ = std::move(*service_config);
60
+ }
61
+ }
62
+ }
63
+
64
+ class Call {
65
+ public:
66
+ void OnClientInitialMetadata(ClientMetadata& md,
67
+ ServiceConfigChannelArgFilter* filter);
68
+ static inline const NoInterceptor OnServerInitialMetadata;
69
+ static inline const NoInterceptor OnServerTrailingMetadata;
70
+ static inline const NoInterceptor OnClientToServerMessage;
71
+ static inline const NoInterceptor OnClientToServerHalfClose;
72
+ static inline const NoInterceptor OnServerToClientMessage;
73
+ static inline const NoInterceptor OnFinalize;
74
+ };
75
+
76
+ private:
77
+ RefCountedPtr<ServiceConfig> service_config_;
78
+ };
79
+
80
+ } // namespace grpc_core
81
+
82
+ #endif // GRPC_SRC_CORE_SERVICE_CONFIG_SERVICE_CONFIG_CHANNEL_ARG_FILTER_H
@@ -78,10 +78,10 @@ absl::string_view ServerCallTracerFactory::ChannelArgName() {
78
78
  return kServerCallTracerFactoryChannelArgName;
79
79
  }
80
80
 
81
- class DelegatingClientCallTracer : public ClientCallTracer {
81
+ class DelegatingClientCallTracer : public ClientCallTracerInterface {
82
82
  public:
83
83
  class DelegatingClientCallAttemptTracer
84
- : public ClientCallTracer::CallAttemptTracer {
84
+ : public ClientCallTracerInterface::CallAttemptTracer {
85
85
  public:
86
86
  explicit DelegatingClientCallAttemptTracer(
87
87
  std::vector<CallAttemptTracer*> tracers)
@@ -190,7 +190,7 @@ class DelegatingClientCallTracer : public ClientCallTracer {
190
190
  // call at any moment).
191
191
  std::vector<CallAttemptTracer*> tracers_;
192
192
  };
193
- explicit DelegatingClientCallTracer(ClientCallTracer* tracer)
193
+ explicit DelegatingClientCallTracer(ClientCallTracerInterface* tracer)
194
194
  : tracers_{tracer} {}
195
195
  ~DelegatingClientCallTracer() override {}
196
196
  CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) override {
@@ -224,15 +224,17 @@ class DelegatingClientCallTracer : public ClientCallTracer {
224
224
  // will be adding call tracers to the context and these are already
225
225
  // synchronized through promises/call combiners (single promise running per
226
226
  // call at any moment).
227
- void AddTracer(ClientCallTracer* tracer) { tracers_.push_back(tracer); }
227
+ void AddTracer(ClientCallTracerInterface* tracer) {
228
+ tracers_.push_back(tracer);
229
+ }
228
230
 
229
231
  private:
230
- std::vector<ClientCallTracer*> tracers_;
232
+ std::vector<ClientCallTracerInterface*> tracers_;
231
233
  };
232
234
 
233
- class DelegatingServerCallTracer : public ServerCallTracer {
235
+ class DelegatingServerCallTracer : public ServerCallTracerInterface {
234
236
  public:
235
- explicit DelegatingServerCallTracer(ServerCallTracer* tracer)
237
+ explicit DelegatingServerCallTracer(ServerCallTracerInterface* tracer)
236
238
  : tracers_{tracer} {}
237
239
  ~DelegatingServerCallTracer() override {}
238
240
  void RecordSendInitialMetadata(
@@ -319,23 +321,26 @@ class DelegatingServerCallTracer : public ServerCallTracer {
319
321
  bool IsSampled() override { return tracers_[0]->IsSampled(); }
320
322
  bool IsDelegatingTracer() override { return true; }
321
323
 
322
- void AddTracer(ServerCallTracer* tracer) { tracers_.push_back(tracer); }
324
+ void AddTracer(ServerCallTracerInterface* tracer) {
325
+ tracers_.push_back(tracer);
326
+ }
323
327
 
324
328
  private:
325
329
  // The ServerCallTracerFilter will be responsible for making sure that the
326
330
  // tracers are added in a thread-safe manner. It is imagined that the filter
327
331
  // will just invoke the factories in the server call tracer factory list
328
332
  // sequentially, removing the need for any synchronization.
329
- std::vector<ServerCallTracer*> tracers_;
333
+ std::vector<ServerCallTracerInterface*> tracers_;
330
334
  };
331
335
 
332
- void AddClientCallTracerToContext(Arena* arena, ClientCallTracer* tracer) {
336
+ void AddClientCallTracerToContext(Arena* arena,
337
+ ClientCallTracerInterface* tracer) {
333
338
  if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
334
339
  // This is the first call tracer. Set it directly.
335
340
  arena->SetContext<CallTracerAnnotationInterface>(tracer);
336
341
  } else {
337
342
  // There was already a call tracer present.
338
- auto* orig_tracer = DownCast<ClientCallTracer*>(
343
+ auto* orig_tracer = DownCast<ClientCallTracerInterface*>(
339
344
  arena->GetContext<CallTracerAnnotationInterface>());
340
345
  if (orig_tracer->IsDelegatingTracer()) {
341
346
  // We already created a delegating tracer. Just add the new tracer to the
@@ -353,7 +358,8 @@ void AddClientCallTracerToContext(Arena* arena, ClientCallTracer* tracer) {
353
358
  }
354
359
  }
355
360
 
356
- void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
361
+ void AddServerCallTracerToContext(Arena* arena,
362
+ ServerCallTracerInterface* tracer) {
357
363
  DCHECK_EQ(arena->GetContext<CallTracerInterface>(),
358
364
  arena->GetContext<CallTracerAnnotationInterface>());
359
365
  if (arena->GetContext<CallTracerAnnotationInterface>() == nullptr) {
@@ -362,7 +368,7 @@ void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
362
368
  arena->SetContext<CallTracerInterface>(tracer);
363
369
  } else {
364
370
  // There was already a call tracer present.
365
- auto* orig_tracer = DownCast<ServerCallTracer*>(
371
+ auto* orig_tracer = DownCast<ServerCallTracerInterface*>(
366
372
  arena->GetContext<CallTracerAnnotationInterface>());
367
373
  if (orig_tracer->IsDelegatingTracer()) {
368
374
  // We already created a delegating tracer. Just add the new tracer to the
@@ -381,4 +387,4 @@ void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer) {
381
387
  }
382
388
  }
383
389
 
384
- } // namespace grpc_core
390
+ } // namespace grpc_core
@@ -44,9 +44,9 @@ namespace grpc_core {
44
44
  // The interface hierarchy is as follows -
45
45
  // CallTracerAnnotationInterface
46
46
  // | |
47
- // ClientCallTracer CallTracerInterface
47
+ // ClientCallTracerInterface CallTracerInterface
48
48
  // | |
49
- // CallAttemptTracer ServerCallTracer
49
+ // CallAttemptTracer ServerCallTracerInterface
50
50
 
51
51
  // The base class for all tracer implementations.
52
52
  class CallTracerAnnotationInterface {
@@ -129,10 +129,13 @@ class CallTracerInterface : public CallTracerAnnotationInterface {
129
129
  virtual std::shared_ptr<TcpCallTracer> StartNewTcpTrace() = 0;
130
130
  };
131
131
 
132
+ class ClientCallTracerInterface;
133
+ class ServerCallTracerInterface;
134
+
132
135
  // Interface for a tracer that records activities on a call. Actual attempts for
133
136
  // this call are traced with CallAttemptTracer after invoking RecordNewAttempt()
134
137
  // on the ClientCallTracer object.
135
- class ClientCallTracer : public CallTracerAnnotationInterface {
138
+ class ClientCallTracerInterface : public CallTracerAnnotationInterface {
136
139
  public:
137
140
  // Interface for a tracer that records activities on a particular call
138
141
  // attempt.
@@ -170,22 +173,22 @@ class ClientCallTracer : public CallTracerAnnotationInterface {
170
173
  RefCountedStringValue value) = 0;
171
174
  };
172
175
 
173
- ~ClientCallTracer() override {}
176
+ ~ClientCallTracerInterface() override {}
174
177
 
175
178
  // Records a new attempt for the associated call. \a transparent denotes
176
179
  // whether the attempt is being made as a transparent retry or as a
177
180
  // non-transparent retry/hedging attempt. (There will be at least one attempt
178
- // even if the call is not being retried.) The `ClientCallTracer` object
179
- // retains ownership to the newly created `CallAttemptTracer` object.
181
+ // even if the call is not being retried.) The `ClientCallTracerInterface`
182
+ // object retains ownership to the newly created `CallAttemptTracer` object.
180
183
  // RecordEnd() serves as an indication that the call stack is done with all
181
184
  // API calls, and the tracer library is free to destroy it after that.
182
185
  virtual CallAttemptTracer* StartNewAttempt(bool is_transparent_retry) = 0;
183
186
  };
184
187
 
185
188
  // Interface for a tracer that records activities on a server call.
186
- class ServerCallTracer : public CallTracerInterface {
189
+ class ServerCallTracerInterface : public CallTracerInterface {
187
190
  public:
188
- ~ServerCallTracer() override {}
191
+ ~ServerCallTracerInterface() override {}
189
192
  // TODO(yashykt): The following two methods `RecordReceivedTrailingMetadata`
190
193
  // and `RecordEnd` should be moved into CallTracerInterface.
191
194
  virtual void RecordReceivedTrailingMetadata(
@@ -195,15 +198,15 @@ class ServerCallTracer : public CallTracerInterface {
195
198
  virtual void RecordEnd(const grpc_call_final_info* final_info) = 0;
196
199
  };
197
200
 
198
- // Interface for a factory that can create a ServerCallTracer object per
199
- // server call.
201
+ // Interface for a factory that can create a ServerCallTracerInterface object
202
+ // per server call.
200
203
  class ServerCallTracerFactory {
201
204
  public:
202
205
  struct RawPointerChannelArgTag {};
203
206
 
204
207
  virtual ~ServerCallTracerFactory() {}
205
208
 
206
- virtual ServerCallTracer* CreateNewServerCallTracer(
209
+ virtual ServerCallTracerInterface* CreateNewServerCallTracer(
207
210
  Arena* arena, const ChannelArgs& channel_args) = 0;
208
211
 
209
212
  // Returns true if a server is to be traced, false otherwise.
@@ -228,11 +231,13 @@ class ServerCallTracerFactory {
228
231
  // Convenience functions to add call tracers to a call context. Allows setting
229
232
  // multiple call tracers to a single call. It is only valid to add client call
230
233
  // tracers before the client_channel filter sees the send_initial_metadata op.
231
- void AddClientCallTracerToContext(Arena* arena, ClientCallTracer* tracer);
234
+ void AddClientCallTracerToContext(Arena* arena,
235
+ ClientCallTracerInterface* tracer);
232
236
 
233
237
  // TODO(yashykt): We want server call tracers to be registered through the
234
238
  // ServerCallTracerFactory, which has yet to be made into a list.
235
- void AddServerCallTracerToContext(Arena* arena, ServerCallTracer* tracer);
239
+ void AddServerCallTracerToContext(Arena* arena,
240
+ ServerCallTracerInterface* tracer);
236
241
 
237
242
  template <>
238
243
  struct ArenaContextType<CallTracerInterface> {
@@ -245,20 +250,20 @@ struct ArenaContextType<CallTracerAnnotationInterface> {
245
250
  };
246
251
 
247
252
  template <>
248
- struct ContextSubclass<ClientCallTracer::CallAttemptTracer> {
253
+ struct ContextSubclass<ClientCallTracerInterface::CallAttemptTracer> {
249
254
  using Base = CallTracerInterface;
250
255
  };
251
256
 
252
257
  template <>
253
- struct ContextSubclass<ServerCallTracer> {
258
+ struct ContextSubclass<ServerCallTracerInterface> {
254
259
  using Base = CallTracerInterface;
255
260
  };
256
261
 
257
262
  template <>
258
- struct ContextSubclass<ClientCallTracer> {
263
+ struct ContextSubclass<ClientCallTracerInterface> {
259
264
  using Base = CallTracerAnnotationInterface;
260
265
  };
261
266
 
262
267
  } // namespace grpc_core
263
268
 
264
- #endif // GRPC_SRC_CORE_TELEMETRY_CALL_TRACER_H
269
+ #endif // GRPC_SRC_CORE_TELEMETRY_CALL_TRACER_H
@@ -285,12 +285,12 @@ class StatsPlugin {
285
285
 
286
286
  // Whether this stats plugin is enabled for the channel specified by \a scope.
287
287
  // Returns true and a channel-specific ScopeConfig which may then be used to
288
- // configure the ClientCallTracer in GetClientCallTracer().
288
+ // configure the ClientCallTracerInterface in GetClientCallTracer().
289
289
  virtual std::pair<bool, std::shared_ptr<ScopeConfig>> IsEnabledForChannel(
290
290
  const experimental::StatsPluginChannelScope& scope) const = 0;
291
291
  // Whether this stats plugin is enabled for the server specified by \a args.
292
292
  // Returns true and a server-specific ScopeConfig which may then be used to
293
- // configure the ServerCallTracer in GetServerCallTracer().
293
+ // configure the ServerCallTracerInterface in GetServerCallTracer().
294
294
  virtual std::pair<bool, std::shared_ptr<ScopeConfig>> IsEnabledForServer(
295
295
  const ChannelArgs& args) const = 0;
296
296
  // Gets a scope config for the client channel specified by \a scope. Note that
@@ -344,14 +344,14 @@ class StatsPlugin {
344
344
  virtual bool IsInstrumentEnabled(
345
345
  GlobalInstrumentsRegistry::GlobalInstrumentHandle handle) const = 0;
346
346
 
347
- // Gets a ClientCallTracer associated with this stats plugin which can be used
348
- // in a call.
349
- virtual ClientCallTracer* GetClientCallTracer(
347
+ // Gets a ClientCallTracerInterface associated with this stats plugin which
348
+ // can be used in a call.
349
+ virtual ClientCallTracerInterface* GetClientCallTracer(
350
350
  const Slice& path, bool registered_method,
351
351
  std::shared_ptr<ScopeConfig> scope_config) = 0;
352
- // Gets a ServerCallTracer associated with this stats plugin which can be used
353
- // in a call.
354
- virtual ServerCallTracer* GetServerCallTracer(
352
+ // Gets a ServerCallTracerInterface associated with this stats plugin which
353
+ // can be used in a call.
354
+ virtual ServerCallTracerInterface* GetServerCallTracer(
355
355
  std::shared_ptr<ScopeConfig> scope_config) = 0;
356
356
 
357
357
  // TODO(yijiem): This is an optimization for the StatsPlugin to create its own