grpc 1.47.0 → 1.48.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (574) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +105 -47
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +20 -11
  5. data/include/grpc/event_engine/slice_buffer.h +8 -2
  6. data/include/grpc/grpc.h +3 -3
  7. data/include/grpc/impl/codegen/compression_types.h +2 -1
  8. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  9. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  11. data/include/grpc/impl/codegen/port_platform.h +6 -3
  12. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
  14. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
  15. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
  18. data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
  19. data/src/core/ext/filters/client_channel/client_channel.h +19 -4
  20. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
  31. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
  32. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
  33. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
  43. data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
  44. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
  45. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
  52. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
  53. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
  55. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
  56. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
  59. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  60. data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
  62. data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
  63. data/src/core/ext/filters/client_channel/subchannel.h +6 -22
  64. data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
  68. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  71. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  72. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  73. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
  74. data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
  75. data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
  76. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  77. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
  78. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
  79. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  80. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
  81. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  82. data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
  83. data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
  85. data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
  86. data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
  87. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  88. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  89. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  90. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  91. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  92. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  93. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  94. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
  95. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
  96. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
  97. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
  99. data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
  100. data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
  101. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
  106. data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
  107. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
  108. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
  109. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
  110. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  111. data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
  112. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  113. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  114. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  115. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  116. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  117. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  118. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  119. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  120. data/src/core/ext/xds/certificate_provider_store.cc +2 -0
  121. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  122. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  123. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  124. data/src/core/ext/xds/upb_utils.h +1 -2
  125. data/src/core/ext/xds/xds_api.cc +16 -18
  126. data/src/core/ext/xds/xds_api.h +12 -5
  127. data/src/core/ext/xds/xds_bootstrap.cc +37 -24
  128. data/src/core/ext/xds/xds_bootstrap.h +9 -11
  129. data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
  130. data/src/core/ext/xds/xds_certificate_provider.h +16 -1
  131. data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
  132. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  133. data/src/core/ext/xds/xds_client.cc +71 -22
  134. data/src/core/ext/xds/xds_client.h +17 -3
  135. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  136. data/src/core/ext/xds/xds_client_stats.h +4 -3
  137. data/src/core/ext/xds/xds_cluster.cc +21 -10
  138. data/src/core/ext/xds/xds_cluster.h +9 -1
  139. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  140. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  141. data/src/core/ext/xds/xds_common_types.cc +36 -22
  142. data/src/core/ext/xds/xds_common_types.h +12 -4
  143. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  144. data/src/core/ext/xds/xds_endpoint.h +13 -5
  145. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
  146. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  147. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  148. data/src/core/ext/xds/xds_http_filters.h +3 -3
  149. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  150. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  151. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  152. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  153. data/src/core/ext/xds/xds_listener.cc +51 -33
  154. data/src/core/ext/xds/xds_listener.h +10 -1
  155. data/src/core/ext/xds/xds_resource_type.h +3 -3
  156. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  157. data/src/core/ext/xds/xds_route_config.cc +56 -28
  158. data/src/core/ext/xds/xds_route_config.h +11 -2
  159. data/src/core/ext/xds/xds_routing.cc +16 -0
  160. data/src/core/ext/xds/xds_routing.h +7 -2
  161. data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
  162. data/src/core/lib/address_utils/parse_address.cc +5 -8
  163. data/src/core/lib/address_utils/parse_address.h +3 -2
  164. data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
  165. data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
  166. data/src/core/lib/avl/avl.h +3 -3
  167. data/src/core/lib/backoff/backoff.cc +1 -1
  168. data/src/core/lib/backoff/backoff.h +1 -1
  169. data/src/core/lib/channel/call_tracer.h +3 -3
  170. data/src/core/lib/channel/channel_args.h +1 -0
  171. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  172. data/src/core/lib/channel/channel_fwd.h +26 -0
  173. data/src/core/lib/channel/channel_stack.cc +4 -4
  174. data/src/core/lib/channel/channel_stack.h +1 -11
  175. data/src/core/lib/channel/channel_stack_builder.h +2 -5
  176. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  177. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
  178. data/src/core/lib/channel/channelz.cc +2 -1
  179. data/src/core/lib/channel/channelz.h +2 -3
  180. data/src/core/lib/channel/channelz_registry.cc +4 -5
  181. data/src/core/lib/channel/connected_channel.cc +1 -0
  182. data/src/core/lib/channel/connected_channel.h +1 -0
  183. data/src/core/lib/channel/promise_based_filter.cc +11 -5
  184. data/src/core/lib/channel/promise_based_filter.h +2 -0
  185. data/src/core/lib/compression/compression.cc +6 -1
  186. data/src/core/lib/compression/compression_internal.cc +3 -6
  187. data/src/core/lib/compression/compression_internal.h +3 -2
  188. data/src/core/lib/compression/message_compress.cc +3 -1
  189. data/src/core/lib/compression/message_compress.h +2 -3
  190. data/src/core/lib/debug/stats.cc +9 -9
  191. data/src/core/lib/debug/stats.h +2 -1
  192. data/src/core/lib/debug/stats_data.cc +2 -1
  193. data/src/core/lib/debug/stats_data.h +0 -4
  194. data/src/core/lib/debug/trace.h +13 -12
  195. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
  196. data/src/core/lib/event_engine/event_engine.cc +24 -19
  197. data/src/core/lib/event_engine/event_engine_factory.h +2 -2
  198. data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
  199. data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
  200. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  201. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  202. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  203. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  204. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  205. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  206. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  207. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  208. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  209. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  210. data/src/core/lib/event_engine/promise.h +69 -0
  211. data/src/core/lib/gpr/time_posix.cc +6 -9
  212. data/src/core/lib/gpr/time_windows.cc +10 -7
  213. data/src/core/lib/gprpp/manual_constructor.h +0 -67
  214. data/src/core/lib/gprpp/status_helper.cc +44 -30
  215. data/src/core/lib/gprpp/time.cc +8 -0
  216. data/src/core/lib/gprpp/time.h +4 -0
  217. data/src/core/lib/http/format_request.cc +5 -4
  218. data/src/core/lib/http/format_request.h +1 -1
  219. data/src/core/lib/http/httpcli.cc +18 -12
  220. data/src/core/lib/http/httpcli.h +19 -3
  221. data/src/core/lib/http/httpcli_security_connector.cc +16 -4
  222. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  223. data/src/core/lib/http/parser.cc +6 -7
  224. data/src/core/lib/http/parser.h +3 -0
  225. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  226. data/src/core/lib/iomgr/endpoint.h +1 -1
  227. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
  228. data/src/core/lib/iomgr/error.cc +11 -9
  229. data/src/core/lib/iomgr/error.h +9 -5
  230. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  231. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  232. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  233. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  234. data/src/core/lib/iomgr/ev_posix.cc +54 -92
  235. data/src/core/lib/iomgr/ev_posix.h +5 -3
  236. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  237. data/src/core/lib/iomgr/iomgr.cc +7 -0
  238. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  239. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  240. data/src/core/lib/iomgr/load_file.cc +1 -1
  241. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
  242. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  243. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  244. data/src/core/lib/iomgr/tcp_client.h +24 -13
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
  246. data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
  247. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  248. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
  249. data/src/core/lib/iomgr/tcp_posix.cc +91 -29
  250. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
  251. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  253. data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
  254. data/src/core/lib/iomgr/tcp_windows.cc +5 -5
  255. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  256. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  257. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  258. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  259. data/src/core/lib/iomgr/work_serializer.h +2 -3
  260. data/src/core/lib/matchers/matchers.cc +6 -3
  261. data/src/core/lib/matchers/matchers.h +2 -0
  262. data/src/core/lib/promise/activity.cc +0 -1
  263. data/src/core/lib/promise/activity.h +7 -13
  264. data/src/core/lib/promise/loop.h +1 -0
  265. data/src/core/lib/promise/promise.h +1 -0
  266. data/src/core/lib/promise/sleep.cc +36 -31
  267. data/src/core/lib/promise/sleep.h +25 -25
  268. data/src/core/lib/resolver/resolver.cc +5 -0
  269. data/src/core/lib/resolver/resolver.h +3 -0
  270. data/src/core/lib/resolver/resolver_factory.h +5 -2
  271. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  272. data/src/core/lib/resolver/resolver_registry.h +12 -1
  273. data/src/core/lib/resolver/server_address.cc +8 -0
  274. data/src/core/lib/resolver/server_address.h +9 -2
  275. data/src/core/lib/resource_quota/memory_quota.cc +18 -60
  276. data/src/core/lib/resource_quota/memory_quota.h +11 -25
  277. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  278. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  279. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  280. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  281. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  282. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  283. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
  284. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  285. data/src/core/lib/security/authorization/matchers.cc +9 -1
  286. data/src/core/lib/security/authorization/matchers.h +7 -0
  287. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  288. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  289. data/src/core/lib/security/context/security_context.cc +5 -2
  290. data/src/core/lib/security/context/security_context.h +14 -2
  291. data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
  292. data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
  293. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  294. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  295. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  296. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  297. data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
  298. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  299. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  300. data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
  301. data/src/core/lib/security/credentials/credentials.cc +4 -8
  302. data/src/core/lib/security/credentials/credentials.h +10 -8
  303. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
  304. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
  305. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  306. data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
  307. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  308. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  309. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  310. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
  311. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  312. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
  313. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
  314. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  315. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
  316. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
  317. data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
  318. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
  319. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
  320. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
  321. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  322. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  323. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
  324. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
  325. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  326. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  327. data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
  328. data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
  329. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
  330. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
  331. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
  332. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
  333. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
  334. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
  335. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  336. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  337. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
  338. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
  339. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
  340. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
  341. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  342. data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
  343. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
  344. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  345. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  346. data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
  347. data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
  348. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  349. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  350. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  354. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  355. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  356. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  357. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  358. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  359. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  360. data/src/core/lib/security/security_connector/security_connector.h +18 -6
  361. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
  362. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  363. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  364. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  365. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  366. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  367. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  368. data/src/core/lib/security/transport/auth_filters.h +7 -0
  369. data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
  370. data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
  371. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  372. data/src/core/lib/security/transport/security_handshaker.cc +44 -11
  373. data/src/core/lib/security/transport/security_handshaker.h +4 -0
  374. data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
  375. data/src/core/lib/security/util/json_util.cc +3 -2
  376. data/src/core/lib/security/util/json_util.h +0 -2
  377. data/src/core/lib/service_config/service_config_call_data.h +2 -1
  378. data/src/core/lib/service_config/service_config_impl.cc +6 -6
  379. data/src/core/lib/service_config/service_config_impl.h +1 -3
  380. data/src/core/lib/service_config/service_config_parser.cc +2 -4
  381. data/src/core/lib/slice/slice_buffer.cc +30 -1
  382. data/src/core/lib/slice/slice_buffer.h +37 -6
  383. data/src/core/lib/slice/slice_string_helpers.cc +0 -20
  384. data/src/core/lib/slice/slice_string_helpers.h +0 -4
  385. data/src/core/lib/surface/call.cc +53 -115
  386. data/src/core/lib/surface/call.h +5 -1
  387. data/src/core/lib/surface/channel.h +2 -0
  388. data/src/core/lib/surface/channel_ping.cc +1 -1
  389. data/src/core/lib/surface/completion_queue.cc +15 -14
  390. data/src/core/lib/surface/completion_queue.h +2 -1
  391. data/src/core/lib/surface/init.cc +0 -1
  392. data/src/core/lib/surface/lame_client.cc +1 -1
  393. data/src/core/lib/surface/lame_client.h +1 -1
  394. data/src/core/lib/surface/server.cc +14 -8
  395. data/src/core/lib/surface/server.h +4 -1
  396. data/src/core/lib/surface/validate_metadata.cc +1 -1
  397. data/src/core/lib/surface/version.cc +2 -2
  398. data/src/core/lib/transport/error_utils.cc +13 -7
  399. data/src/core/lib/transport/handshaker.cc +3 -3
  400. data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
  401. data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
  402. data/src/core/lib/transport/transport.cc +0 -3
  403. data/src/core/lib/transport/transport.h +20 -14
  404. data/src/core/lib/transport/transport_fwd.h +20 -0
  405. data/src/core/lib/transport/transport_impl.h +1 -0
  406. data/src/core/lib/transport/transport_op_string.cc +9 -9
  407. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  408. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  409. data/src/core/tsi/fake_transport_security.cc +13 -1
  410. data/src/core/tsi/fake_transport_security.h +6 -0
  411. data/src/core/tsi/ssl_transport_security.cc +1 -1
  412. data/src/core/tsi/transport_security_grpc.cc +3 -2
  413. data/src/core/tsi/transport_security_grpc.h +5 -2
  414. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  415. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  416. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  417. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  418. data/src/ruby/ext/grpc/extconf.rb +49 -18
  419. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  420. data/src/ruby/lib/grpc/errors.rb +1 -1
  421. data/src/ruby/lib/grpc/version.rb +1 -1
  422. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  423. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  424. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  425. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  426. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  427. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  428. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  429. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  430. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  431. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  432. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  433. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  434. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  435. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  436. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  437. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  438. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  439. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  440. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  441. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  442. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  443. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  444. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  445. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  446. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  447. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  448. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  449. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  450. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  451. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  452. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
  453. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  454. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  455. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  456. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  457. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  458. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  459. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  460. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  461. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  462. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  463. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  464. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  465. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  466. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  467. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  468. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  469. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  470. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  471. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  472. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  473. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  474. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  475. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  476. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  477. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  478. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  479. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  480. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  481. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  482. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  483. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  484. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  485. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  486. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  487. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  488. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  489. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  490. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  491. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  492. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  493. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  494. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  495. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  496. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  497. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  498. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  499. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  500. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  501. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  502. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  503. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  504. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  505. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  506. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  507. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  508. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  509. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  510. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  511. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  512. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  513. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  514. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  515. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  516. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  517. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  518. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  519. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  520. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  521. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  522. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  523. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  524. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  525. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  526. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  527. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  528. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  529. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  530. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  531. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  532. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  533. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  534. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  535. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  536. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  537. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  538. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  539. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  540. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  541. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  542. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  543. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  544. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  545. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  546. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  547. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  548. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  549. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  550. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  551. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  552. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  553. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  554. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  555. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  556. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  557. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  558. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  559. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  560. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  561. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  562. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  563. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  564. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  565. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  566. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  567. metadata +39 -15
  568. data/src/core/lib/slice/slice_split.cc +0 -103
  569. data/src/core/lib/slice/slice_split.h +0 -36
  570. data/src/core/lib/transport/byte_stream.cc +0 -165
  571. data/src/core/lib/transport/byte_stream.h +0 -170
  572. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
  573. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
  574. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -25,7 +25,6 @@
25
25
 
26
26
  #include <algorithm>
27
27
  #include <atomic>
28
- #include <memory>
29
28
  #include <new>
30
29
  #include <string>
31
30
  #include <utility>
@@ -51,7 +50,6 @@
51
50
  #include <grpc/support/string_util.h>
52
51
 
53
52
  #include "src/core/lib/channel/channel_stack.h"
54
- #include "src/core/lib/channel/channel_stack_builder.h"
55
53
  #include "src/core/lib/channel/channelz.h"
56
54
  #include "src/core/lib/channel/context.h"
57
55
  #include "src/core/lib/compression/compression_internal.h"
@@ -60,8 +58,6 @@
60
58
  #include "src/core/lib/gpr/time_precise.h"
61
59
  #include "src/core/lib/gprpp/cpp_impl_of.h"
62
60
  #include "src/core/lib/gprpp/debug_location.h"
63
- #include "src/core/lib/gprpp/manual_constructor.h"
64
- #include "src/core/lib/gprpp/orphanable.h"
65
61
  #include "src/core/lib/gprpp/ref_counted.h"
66
62
  #include "src/core/lib/gprpp/sync.h"
67
63
  #include "src/core/lib/iomgr/call_combiner.h"
@@ -69,6 +65,7 @@
69
65
  #include "src/core/lib/iomgr/polling_entity.h"
70
66
  #include "src/core/lib/profiling/timers.h"
71
67
  #include "src/core/lib/resource_quota/arena.h"
68
+ #include "src/core/lib/slice/slice_buffer.h"
72
69
  #include "src/core/lib/slice/slice_internal.h"
73
70
  #include "src/core/lib/slice/slice_refcount.h"
74
71
  #include "src/core/lib/surface/api_trace.h"
@@ -77,7 +74,6 @@
77
74
  #include "src/core/lib/surface/completion_queue.h"
78
75
  #include "src/core/lib/surface/server.h"
79
76
  #include "src/core/lib/surface/validate_metadata.h"
80
- #include "src/core/lib/transport/byte_stream.h"
81
77
  #include "src/core/lib/transport/error_utils.h"
82
78
  #include "src/core/lib/transport/metadata_batch.h"
83
79
  #include "src/core/lib/transport/transport.h"
@@ -105,6 +101,7 @@ class Call : public CppImplOf<Call, grpc_call> {
105
101
  bool is_notify_tag_closure) = 0;
106
102
  virtual bool failed_before_recv_message() const = 0;
107
103
  virtual bool is_trailers_only() const = 0;
104
+ virtual absl::string_view GetServerAuthority() const = 0;
108
105
  virtual void ExternalRef() = 0;
109
106
  virtual void ExternalUnref() = 0;
110
107
  virtual void InternalRef(const char* reason) = 0;
@@ -235,6 +232,13 @@ class FilterStackCall final : public Call {
235
232
  return call_failed_before_recv_message_;
236
233
  }
237
234
 
235
+ absl::string_view GetServerAuthority() const override {
236
+ const Slice* authority_metadata =
237
+ recv_initial_metadata_.get_pointer(HttpAuthorityMetadata());
238
+ if (authority_metadata == nullptr) return "";
239
+ return authority_metadata->as_string_view();
240
+ }
241
+
238
242
  grpc_compression_algorithm test_only_compression_algorithm() override {
239
243
  return incoming_compression_algorithm_;
240
244
  }
@@ -302,8 +306,6 @@ class FilterStackCall final : public Call {
302
306
 
303
307
  void PostCompletion();
304
308
  void FinishStep();
305
- void ContinueReceivingSlices();
306
- void ReceivingSliceReady(grpc_error_handle error);
307
309
  void ProcessDataAfterMetadata();
308
310
  void ReceivingStreamReady(grpc_error_handle error);
309
311
  void ValidateFilteredMetadata();
@@ -360,7 +362,6 @@ class FilterStackCall final : public Call {
360
362
  bool received_initial_metadata_ = false;
361
363
  bool receiving_message_ = false;
362
364
  bool requested_final_op_ = false;
363
- gpr_atm any_ops_sent_atm_ = 0;
364
365
  gpr_atm received_final_op_atm_ = 0;
365
366
 
366
367
  BatchControl* active_batches_[kMaxConcurrentBatches] = {};
@@ -393,13 +394,13 @@ class FilterStackCall final : public Call {
393
394
  /* Contexts for various subsystems (security, tracing, ...). */
394
395
  grpc_call_context_element context_[GRPC_CONTEXT_COUNT] = {};
395
396
 
396
- ManualConstructor<SliceBufferByteStream> sending_stream_;
397
+ SliceBuffer send_slice_buffer_;
398
+ absl::optional<SliceBuffer> receiving_slice_buffer_;
399
+ uint32_t receiving_stream_flags_;
397
400
 
398
- OrphanablePtr<ByteStream> receiving_stream_;
399
401
  bool call_failed_before_recv_message_ = false;
400
402
  grpc_byte_buffer** receiving_buffer_ = nullptr;
401
403
  grpc_slice receiving_slice_ = grpc_empty_slice();
402
- grpc_closure receiving_slice_ready_;
403
404
  grpc_closure receiving_stream_ready_;
404
405
  grpc_closure receiving_initial_metadata_ready_;
405
406
  grpc_closure receiving_trailing_metadata_ready_;
@@ -521,8 +522,8 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
521
522
 
522
523
  auto add_init_error = [](grpc_error_handle* composite,
523
524
  grpc_error_handle new_err) {
524
- if (new_err == GRPC_ERROR_NONE) return;
525
- if (*composite == GRPC_ERROR_NONE) {
525
+ if (GRPC_ERROR_IS_NONE(new_err)) return;
526
+ if (GRPC_ERROR_IS_NONE(*composite)) {
526
527
  *composite = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Call creation failed");
527
528
  }
528
529
  *composite = grpc_error_add_child(*composite, new_err);
@@ -582,7 +583,7 @@ grpc_error_handle FilterStackCall::Create(grpc_call_create_args* args,
582
583
  call->PublishToParent(parent);
583
584
  }
584
585
 
585
- if (error != GRPC_ERROR_NONE) {
586
+ if (!GRPC_ERROR_IS_NONE(error)) {
586
587
  call->CancelWithError(GRPC_ERROR_REF(error));
587
588
  }
588
589
  if (args->cq != nullptr) {
@@ -646,7 +647,7 @@ void FilterStackCall::DestroyCall(void* call, grpc_error_handle /*error*/) {
646
647
  auto* c = static_cast<FilterStackCall*>(call);
647
648
  c->recv_initial_metadata_.Clear();
648
649
  c->recv_trailing_metadata_.Clear();
649
- c->receiving_stream_.reset();
650
+ c->receiving_slice_buffer_.reset();
650
651
  ParentCall* pc = c->parent_call();
651
652
  if (pc != nullptr) {
652
653
  pc->~ParentCall();
@@ -700,8 +701,7 @@ void FilterStackCall::ExternalUnref() {
700
701
 
701
702
  GPR_ASSERT(!destroy_called_);
702
703
  destroy_called_ = true;
703
- bool cancel = gpr_atm_acq_load(&any_ops_sent_atm_) != 0 &&
704
- gpr_atm_acq_load(&received_final_op_atm_) == 0;
704
+ bool cancel = gpr_atm_acq_load(&received_final_op_atm_) == 0;
705
705
  if (cancel) {
706
706
  CancelWithError(GRPC_ERROR_CANCELLED);
707
707
  } else {
@@ -818,7 +818,7 @@ void FilterStackCall::SetFinalStatus(grpc_error_handle error) {
818
818
  }
819
819
  } else {
820
820
  *final_op_.server.cancelled =
821
- error != GRPC_ERROR_NONE || !sent_server_trailing_metadata_;
821
+ !GRPC_ERROR_IS_NONE(error) || !sent_server_trailing_metadata_;
822
822
  channelz::ServerNode* channelz_node =
823
823
  final_op_.server.core_server->channelz_node();
824
824
  if (channelz_node != nullptr) {
@@ -952,7 +952,7 @@ void FilterStackCall::RecvInitialFilter(grpc_metadata_batch* b) {
952
952
 
953
953
  void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
954
954
  grpc_error_handle batch_error) {
955
- if (batch_error != GRPC_ERROR_NONE) {
955
+ if (!GRPC_ERROR_IS_NONE(batch_error)) {
956
956
  SetFinalStatus(batch_error);
957
957
  } else {
958
958
  absl::optional<grpc_status_code> grpc_status =
@@ -972,7 +972,7 @@ void FilterStackCall::RecvTrailingFilter(grpc_metadata_batch* b,
972
972
  if (grpc_message.has_value()) {
973
973
  error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE,
974
974
  grpc_message->as_string_view());
975
- } else if (error != GRPC_ERROR_NONE) {
975
+ } else if (!GRPC_ERROR_IS_NONE(error)) {
976
976
  error = grpc_error_set_str(error, GRPC_ERROR_STR_GRPC_MESSAGE, "");
977
977
  }
978
978
  SetFinalStatus(GRPC_ERROR_REF(error));
@@ -1077,12 +1077,13 @@ void FilterStackCall::BatchControl::PostCompletion() {
1077
1077
  }
1078
1078
  if (op_.send_message) {
1079
1079
  if (op_.payload->send_message.stream_write_closed &&
1080
- error == GRPC_ERROR_NONE) {
1080
+ GRPC_ERROR_IS_NONE(error)) {
1081
1081
  error = grpc_error_add_child(
1082
1082
  error, GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1083
1083
  "Attempt to send message after stream was closed."));
1084
1084
  }
1085
1085
  call->sending_message_ = false;
1086
+ call->send_slice_buffer_.Clear();
1086
1087
  }
1087
1088
  if (op_.send_trailing_metadata) {
1088
1089
  call->send_trailing_metadata_.Clear();
@@ -1094,7 +1095,7 @@ void FilterStackCall::BatchControl::PostCompletion() {
1094
1095
  GRPC_ERROR_UNREF(error);
1095
1096
  error = GRPC_ERROR_NONE;
1096
1097
  }
1097
- if (error != GRPC_ERROR_NONE && op_.recv_message &&
1098
+ if (!GRPC_ERROR_IS_NONE(error) && op_.recv_message &&
1098
1099
  *call->receiving_buffer_ != nullptr) {
1099
1100
  grpc_byte_buffer_destroy(*call->receiving_buffer_);
1100
1101
  *call->receiving_buffer_ = nullptr;
@@ -1128,103 +1129,35 @@ void FilterStackCall::BatchControl::FinishStep() {
1128
1129
  }
1129
1130
  }
1130
1131
 
1131
- void FilterStackCall::BatchControl::ContinueReceivingSlices() {
1132
- grpc_error_handle error;
1133
- FilterStackCall* call = call_;
1134
- for (;;) {
1135
- size_t remaining = call->receiving_stream_->length() -
1136
- (*call->receiving_buffer_)->data.raw.slice_buffer.length;
1137
- if (remaining == 0) {
1138
- call->receiving_message_ = false;
1139
- call->receiving_stream_.reset();
1140
- FinishStep();
1141
- return;
1142
- }
1143
- if (call->receiving_stream_->Next(remaining,
1144
- &call->receiving_slice_ready_)) {
1145
- error = call->receiving_stream_->Pull(&call->receiving_slice_);
1146
- if (error == GRPC_ERROR_NONE) {
1147
- grpc_slice_buffer_add(
1148
- &(*call->receiving_buffer_)->data.raw.slice_buffer,
1149
- call->receiving_slice_);
1150
- } else {
1151
- call->receiving_stream_.reset();
1152
- grpc_byte_buffer_destroy(*call->receiving_buffer_);
1153
- *call->receiving_buffer_ = nullptr;
1154
- call->receiving_message_ = false;
1155
- FinishStep();
1156
- GRPC_ERROR_UNREF(error);
1157
- return;
1158
- }
1159
- } else {
1160
- return;
1161
- }
1162
- }
1163
- }
1164
-
1165
- void FilterStackCall::BatchControl::ReceivingSliceReady(
1166
- grpc_error_handle error) {
1167
- FilterStackCall* call = call_;
1168
- bool release_error = false;
1169
-
1170
- if (error == GRPC_ERROR_NONE) {
1171
- grpc_slice slice;
1172
- error = call->receiving_stream_->Pull(&slice);
1173
- if (error == GRPC_ERROR_NONE) {
1174
- grpc_slice_buffer_add(&(*call->receiving_buffer_)->data.raw.slice_buffer,
1175
- slice);
1176
- ContinueReceivingSlices();
1177
- } else {
1178
- /* Error returned by ByteStream::Pull() needs to be released manually */
1179
- release_error = true;
1180
- }
1181
- }
1182
-
1183
- if (error != GRPC_ERROR_NONE) {
1184
- if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures)) {
1185
- GRPC_LOG_IF_ERROR("receiving_slice_ready", GRPC_ERROR_REF(error));
1186
- }
1187
- call->receiving_stream_.reset();
1188
- grpc_byte_buffer_destroy(*call->receiving_buffer_);
1189
- *call->receiving_buffer_ = nullptr;
1190
- call->receiving_message_ = false;
1191
- FinishStep();
1192
- if (release_error) {
1193
- GRPC_ERROR_UNREF(error);
1194
- }
1195
- }
1196
- }
1197
-
1198
1132
  void FilterStackCall::BatchControl::ProcessDataAfterMetadata() {
1199
1133
  FilterStackCall* call = call_;
1200
- if (call->receiving_stream_ == nullptr) {
1134
+ if (!call->receiving_slice_buffer_.has_value()) {
1201
1135
  *call->receiving_buffer_ = nullptr;
1202
1136
  call->receiving_message_ = false;
1203
1137
  FinishStep();
1204
1138
  } else {
1205
- call->test_only_last_message_flags_ = call->receiving_stream_->flags();
1206
- if ((call->receiving_stream_->flags() & GRPC_WRITE_INTERNAL_COMPRESS) &&
1139
+ call->test_only_last_message_flags_ = call->receiving_stream_flags_;
1140
+ if ((call->receiving_stream_flags_ & GRPC_WRITE_INTERNAL_COMPRESS) &&
1207
1141
  (call->incoming_compression_algorithm_ != GRPC_COMPRESS_NONE)) {
1208
1142
  *call->receiving_buffer_ = grpc_raw_compressed_byte_buffer_create(
1209
1143
  nullptr, 0, call->incoming_compression_algorithm_);
1210
1144
  } else {
1211
1145
  *call->receiving_buffer_ = grpc_raw_byte_buffer_create(nullptr, 0);
1212
1146
  }
1213
- GRPC_CLOSURE_INIT(
1214
- &call->receiving_slice_ready_,
1215
- [](void* bctl, grpc_error_handle error) {
1216
- static_cast<BatchControl*>(bctl)->ReceivingSliceReady(error);
1217
- },
1218
- this, grpc_schedule_on_exec_ctx);
1219
- ContinueReceivingSlices();
1147
+ grpc_slice_buffer_move_into(
1148
+ call->receiving_slice_buffer_->c_slice_buffer(),
1149
+ &(*call->receiving_buffer_)->data.raw.slice_buffer);
1150
+ call->receiving_message_ = false;
1151
+ call->receiving_slice_buffer_.reset();
1152
+ FinishStep();
1220
1153
  }
1221
1154
  }
1222
1155
 
1223
1156
  void FilterStackCall::BatchControl::ReceivingStreamReady(
1224
1157
  grpc_error_handle error) {
1225
1158
  FilterStackCall* call = call_;
1226
- if (error != GRPC_ERROR_NONE) {
1227
- call->receiving_stream_.reset();
1159
+ if (!GRPC_ERROR_IS_NONE(error)) {
1160
+ call->receiving_slice_buffer_.reset();
1228
1161
  if (batch_error_.ok()) {
1229
1162
  batch_error_.set(error);
1230
1163
  }
@@ -1233,7 +1166,8 @@ void FilterStackCall::BatchControl::ReceivingStreamReady(
1233
1166
  /* If recv_state is kRecvNone, we will save the batch_control
1234
1167
  * object with rel_cas, and will not use it after the cas. Its corresponding
1235
1168
  * acq_load is in receiving_initial_metadata_ready() */
1236
- if (error != GRPC_ERROR_NONE || call->receiving_stream_ == nullptr ||
1169
+ if (!GRPC_ERROR_IS_NONE(error) ||
1170
+ !call->receiving_slice_buffer_.has_value() ||
1237
1171
  !gpr_atm_rel_cas(&call->recv_state_, kRecvNone,
1238
1172
  reinterpret_cast<gpr_atm>(this))) {
1239
1173
  ProcessDataAfterMetadata();
@@ -1290,7 +1224,7 @@ void FilterStackCall::BatchControl::ReceivingInitialMetadataReady(
1290
1224
 
1291
1225
  GRPC_CALL_COMBINER_STOP(call->call_combiner(), "recv_initial_metadata_ready");
1292
1226
 
1293
- if (error == GRPC_ERROR_NONE) {
1227
+ if (GRPC_ERROR_IS_NONE(error)) {
1294
1228
  grpc_metadata_batch* md = &call->recv_initial_metadata_;
1295
1229
  call->RecvInitialFilter(md);
1296
1230
 
@@ -1357,7 +1291,7 @@ void FilterStackCall::BatchControl::FinishBatch(grpc_error_handle error) {
1357
1291
  if (batch_error_.ok()) {
1358
1292
  batch_error_.set(error);
1359
1293
  }
1360
- if (error != GRPC_ERROR_NONE) {
1294
+ if (!GRPC_ERROR_IS_NONE(error)) {
1361
1295
  call_->CancelWithError(GRPC_ERROR_REF(error));
1362
1296
  }
1363
1297
  FinishStep();
@@ -1514,10 +1448,12 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1514
1448
  }
1515
1449
  stream_op->send_message = true;
1516
1450
  sending_message_ = true;
1517
- sending_stream_.Init(
1518
- &op->data.send_message.send_message->data.raw.slice_buffer, flags);
1519
- stream_op_payload->send_message.send_message.reset(
1520
- sending_stream_.get());
1451
+ send_slice_buffer_.Clear();
1452
+ grpc_slice_buffer_move_into(
1453
+ &op->data.send_message.send_message->data.raw.slice_buffer,
1454
+ send_slice_buffer_.c_slice_buffer());
1455
+ stream_op_payload->send_message.flags = flags;
1456
+ stream_op_payload->send_message.send_message = &send_slice_buffer_;
1521
1457
  has_send_ops = true;
1522
1458
  break;
1523
1459
  }
@@ -1585,7 +1521,7 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1585
1521
  GrpcMessageMetadata(),
1586
1522
  Slice(grpc_slice_copy(
1587
1523
  *op->data.send_status_from_server.status_details)));
1588
- if (status_error != GRPC_ERROR_NONE) {
1524
+ if (!GRPC_ERROR_IS_NONE(status_error)) {
1589
1525
  status_error = grpc_error_set_str(
1590
1526
  status_error, GRPC_ERROR_STR_GRPC_MESSAGE,
1591
1527
  StringViewFromSlice(
@@ -1654,8 +1590,11 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1654
1590
  }
1655
1591
  receiving_message_ = true;
1656
1592
  stream_op->recv_message = true;
1593
+ receiving_slice_buffer_.reset();
1657
1594
  receiving_buffer_ = op->data.recv_message.recv_message;
1658
- stream_op_payload->recv_message.recv_message = &receiving_stream_;
1595
+ stream_op_payload->recv_message.recv_message = &receiving_slice_buffer_;
1596
+ receiving_stream_flags_ = 0;
1597
+ stream_op_payload->recv_message.flags = &receiving_stream_flags_;
1659
1598
  stream_op_payload->recv_message.call_failed_before_recv_message =
1660
1599
  &call_failed_before_recv_message_;
1661
1600
  GRPC_CLOSURE_INIT(
@@ -1766,7 +1705,6 @@ grpc_call_error FilterStackCall::StartBatch(const grpc_op* ops, size_t nops,
1766
1705
  stream_op->on_complete = &bctl->finish_batch_;
1767
1706
  }
1768
1707
 
1769
- gpr_atm_rel_store(&any_ops_sent_atm_, 1);
1770
1708
  ExecuteBatch(stream_op, &bctl->start_batch_);
1771
1709
 
1772
1710
  done:
@@ -1780,10 +1718,6 @@ done_with_error:
1780
1718
  }
1781
1719
  if (stream_op->send_message) {
1782
1720
  sending_message_ = false;
1783
- // No need to invoke call->sending_stream->Orphan() explicitly.
1784
- // stream_op_payload->send_message.send_message.reset() calls Deletor
1785
- // of call->sending_stream which in-turn invokes the Orphan() method.
1786
- stream_op_payload->send_message.send_message.reset();
1787
1721
  }
1788
1722
  if (stream_op->send_trailing_metadata) {
1789
1723
  sent_final_op_ = false;
@@ -1943,6 +1877,10 @@ int grpc_call_failed_before_recv_message(const grpc_call* c) {
1943
1877
  return grpc_core::Call::FromC(c)->failed_before_recv_message();
1944
1878
  }
1945
1879
 
1880
+ absl::string_view grpc_call_server_authority(const grpc_call* call) {
1881
+ return grpc_core::Call::FromC(call)->GetServerAuthority();
1882
+ }
1883
+
1946
1884
  const char* grpc_call_error_to_string(grpc_call_error error) {
1947
1885
  switch (error) {
1948
1886
  case GRPC_CALL_ERROR:
@@ -24,13 +24,14 @@
24
24
  #include <stddef.h>
25
25
  #include <stdint.h>
26
26
 
27
+ #include "absl/strings/string_view.h"
27
28
  #include "absl/types/optional.h"
28
29
 
29
30
  #include <grpc/impl/codegen/compression_types.h>
30
31
  #include <grpc/impl/codegen/grpc_types.h>
31
32
  #include <grpc/support/log.h>
32
33
 
33
- #include "src/core/lib/channel/channel_stack.h"
34
+ #include "src/core/lib/channel/channel_fwd.h"
34
35
  #include "src/core/lib/channel/context.h"
35
36
  #include "src/core/lib/debug/trace.h"
36
37
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
@@ -125,6 +126,9 @@ grpc_compression_algorithm grpc_call_compression_for_level(
125
126
  Move to surface API if requested by other languages. */
126
127
  bool grpc_call_is_trailers_only(const grpc_call* call);
127
128
 
129
+ // Returns the authority for the call, as seen on the server side.
130
+ absl::string_view grpc_call_server_authority(const grpc_call* call);
131
+
128
132
  extern grpc_core::TraceFlag grpc_call_error_trace;
129
133
  extern grpc_core::TraceFlag grpc_compression_trace;
130
134
 
@@ -40,6 +40,7 @@
40
40
  #include <grpc/slice.h>
41
41
 
42
42
  #include "src/core/lib/channel/channel_args.h"
43
+ #include "src/core/lib/channel/channel_fwd.h"
43
44
  #include "src/core/lib/channel/channel_stack.h" // IWYU pragma: keep
44
45
  #include "src/core/lib/channel/channel_stack_builder.h"
45
46
  #include "src/core/lib/channel/channelz.h"
@@ -53,6 +54,7 @@
53
54
  #include "src/core/lib/resource_quota/memory_quota.h"
54
55
  #include "src/core/lib/slice/slice.h"
55
56
  #include "src/core/lib/surface/channel_stack_type.h"
57
+ #include "src/core/lib/transport/transport_fwd.h"
56
58
 
57
59
  /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
58
60
  * is safe to use from within core. */
@@ -22,8 +22,8 @@
22
22
  #include <grpc/support/alloc.h>
23
23
  #include <grpc/support/log.h>
24
24
 
25
+ #include "src/core/lib/channel/channel_fwd.h"
25
26
  #include "src/core/lib/channel/channel_stack.h"
26
- #include "src/core/lib/channel/channel_stack_builder.h"
27
27
  #include "src/core/lib/debug/trace.h"
28
28
  #include "src/core/lib/iomgr/closure.h"
29
29
  #include "src/core/lib/iomgr/error.h"
@@ -29,6 +29,7 @@
29
29
  #include <utility>
30
30
  #include <vector>
31
31
 
32
+ #include "absl/status/status.h"
32
33
  #include "absl/strings/str_format.h"
33
34
  #include "absl/strings/str_join.h"
34
35
 
@@ -695,20 +696,20 @@ static void cq_end_op_for_next(
695
696
 
696
697
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
697
698
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
698
- error != GRPC_ERROR_NONE)) {
699
+ !GRPC_ERROR_IS_NONE(error))) {
699
700
  std::string errmsg = grpc_error_std_string(error);
700
701
  GRPC_API_TRACE(
701
702
  "cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
702
703
  "done=%p, done_arg=%p, storage=%p)",
703
704
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
704
705
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
705
- error != GRPC_ERROR_NONE) {
706
+ !GRPC_ERROR_IS_NONE(error)) {
706
707
  gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
707
708
  errmsg.c_str());
708
709
  }
709
710
  }
710
711
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
711
- int is_success = (error == GRPC_ERROR_NONE);
712
+ int is_success = (GRPC_ERROR_IS_NONE(error));
712
713
 
713
714
  storage->tag = tag;
714
715
  storage->done = done;
@@ -736,7 +737,7 @@ static void cq_end_op_for_next(
736
737
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
737
738
  gpr_mu_unlock(cq->mu);
738
739
 
739
- if (kick_error != GRPC_ERROR_NONE) {
740
+ if (!GRPC_ERROR_IS_NONE(kick_error)) {
740
741
  gpr_log(GPR_ERROR, "Kick failed: %s",
741
742
  grpc_error_std_string(kick_error).c_str());
742
743
  GRPC_ERROR_UNREF(kick_error);
@@ -772,18 +773,18 @@ static void cq_end_op_for_pluck(
772
773
  GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
773
774
 
774
775
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
775
- int is_success = (error == GRPC_ERROR_NONE);
776
+ int is_success = (GRPC_ERROR_IS_NONE(error));
776
777
 
777
778
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
778
779
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
779
- error != GRPC_ERROR_NONE)) {
780
+ !GRPC_ERROR_IS_NONE(error))) {
780
781
  std::string errmsg = grpc_error_std_string(error).c_str();
781
782
  GRPC_API_TRACE(
782
783
  "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
783
784
  "done=%p, done_arg=%p, storage=%p)",
784
785
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
785
786
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
786
- error != GRPC_ERROR_NONE) {
787
+ !GRPC_ERROR_IS_NONE(error)) {
787
788
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
788
789
  errmsg.c_str());
789
790
  }
@@ -819,7 +820,7 @@ static void cq_end_op_for_pluck(
819
820
  grpc_error_handle kick_error =
820
821
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
821
822
  gpr_mu_unlock(cq->mu);
822
- if (kick_error != GRPC_ERROR_NONE) {
823
+ if (!GRPC_ERROR_IS_NONE(kick_error)) {
823
824
  gpr_log(GPR_ERROR, "Kick failed: %s",
824
825
  grpc_error_std_string(kick_error).c_str());
825
826
  GRPC_ERROR_UNREF(kick_error);
@@ -831,7 +832,7 @@ static void cq_end_op_for_pluck(
831
832
 
832
833
  static void functor_callback(void* arg, grpc_error_handle error) {
833
834
  auto* functor = static_cast<grpc_completion_queue_functor*>(arg);
834
- functor->functor_run(functor, error == GRPC_ERROR_NONE);
835
+ functor->functor_run(functor, GRPC_ERROR_IS_NONE(error));
835
836
  }
836
837
 
837
838
  /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
@@ -845,14 +846,14 @@ static void cq_end_op_for_callback(
845
846
 
846
847
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
847
848
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
848
- error != GRPC_ERROR_NONE)) {
849
+ !GRPC_ERROR_IS_NONE(error))) {
849
850
  std::string errmsg = grpc_error_std_string(error);
850
851
  GRPC_API_TRACE(
851
852
  "cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
852
853
  "done=%p, done_arg=%p, storage=%p)",
853
854
  6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
854
855
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
855
- error != GRPC_ERROR_NONE) {
856
+ !GRPC_ERROR_IS_NONE(error)) {
856
857
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
857
858
  errmsg.c_str());
858
859
  }
@@ -879,7 +880,7 @@ static void cq_end_op_for_callback(
879
880
  grpc_core::ApplicationCallbackExecCtx::Available()) ||
880
881
  grpc_iomgr_is_any_background_poller_thread()) {
881
882
  grpc_core::ApplicationCallbackExecCtx::Enqueue(functor,
882
- (error == GRPC_ERROR_NONE));
883
+ (GRPC_ERROR_IS_NONE(error)));
883
884
  GRPC_ERROR_UNREF(error);
884
885
  return;
885
886
  }
@@ -1056,7 +1057,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1056
1057
  POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
1057
1058
  gpr_mu_unlock(cq->mu);
1058
1059
 
1059
- if (err != GRPC_ERROR_NONE) {
1060
+ if (!GRPC_ERROR_IS_NONE(err)) {
1060
1061
  gpr_log(GPR_ERROR, "Completion queue next failed: %s",
1061
1062
  grpc_error_std_string(err).c_str());
1062
1063
  GRPC_ERROR_UNREF(err);
@@ -1301,7 +1302,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1301
1302
  cq->num_polls++;
1302
1303
  grpc_error_handle err =
1303
1304
  cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
1304
- if (err != GRPC_ERROR_NONE) {
1305
+ if (!GRPC_ERROR_IS_NONE(err)) {
1305
1306
  del_plucker(cq, tag, &worker);
1306
1307
  gpr_mu_unlock(cq->mu);
1307
1308
  gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
@@ -41,7 +41,8 @@ extern grpc_core::DebugOnlyTraceFlag grpc_trace_pending_tags;
41
41
  extern grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount;
42
42
 
43
43
  typedef struct grpc_cq_completion {
44
- grpc_core::ManualConstructor<grpc_core::MultiProducerSingleConsumerQueue>
44
+ grpc_core::ManualConstructor<
45
+ grpc_core::MultiProducerSingleConsumerQueue::Node>
45
46
  node;
46
47
 
47
48
  /** user supplied tag */
@@ -186,7 +186,6 @@ void grpc_shutdown_internal_locked(void)
186
186
  grpc_iomgr_shutdown();
187
187
  gpr_timers_global_destroy();
188
188
  grpc_tracer_shutdown();
189
- grpc_stats_shutdown();
190
189
  grpc_core::Fork::GlobalShutdown();
191
190
  }
192
191
  grpc_core::ApplicationCallbackExecCtx::GlobalShutdown();
@@ -33,7 +33,7 @@
33
33
 
34
34
  #include "src/core/lib/channel/channel_args.h"
35
35
  #include "src/core/lib/channel/channel_args_preconditioning.h"
36
- #include "src/core/lib/channel/channel_stack_builder.h"
36
+ #include "src/core/lib/channel/channel_stack.h"
37
37
  #include "src/core/lib/channel/promise_based_filter.h"
38
38
  #include "src/core/lib/config/core_configuration.h"
39
39
  #include "src/core/lib/debug/trace.h"
@@ -30,7 +30,7 @@
30
30
  #include <grpc/impl/codegen/grpc_types.h>
31
31
 
32
32
  #include "src/core/lib/channel/channel_args.h"
33
- #include "src/core/lib/channel/channel_stack.h"
33
+ #include "src/core/lib/channel/channel_fwd.h"
34
34
  #include "src/core/lib/channel/promise_based_filter.h"
35
35
  #include "src/core/lib/gprpp/sync.h"
36
36
  #include "src/core/lib/iomgr/error.h"