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
@@ -29,6 +29,7 @@
29
29
  #include "absl/status/status.h"
30
30
  #include "absl/types/optional.h"
31
31
 
32
+ #include <grpc/event_engine/event_engine.h>
32
33
  #include <grpc/impl/codegen/connectivity_state.h>
33
34
  #include <grpc/impl/codegen/grpc_types.h>
34
35
 
@@ -36,7 +37,7 @@
36
37
  #include "src/core/ext/filters/client_channel/connector.h"
37
38
  #include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
38
39
  #include "src/core/lib/backoff/backoff.h"
39
- #include "src/core/lib/channel/channel_stack.h"
40
+ #include "src/core/lib/channel/channel_fwd.h"
40
41
  #include "src/core/lib/channel/context.h"
41
42
  #include "src/core/lib/gpr/time_precise.h"
42
43
  #include "src/core/lib/gprpp/debug_location.h"
@@ -53,7 +54,6 @@
53
54
  #include "src/core/lib/iomgr/iomgr_fwd.h"
54
55
  #include "src/core/lib/iomgr/polling_entity.h"
55
56
  #include "src/core/lib/iomgr/resolved_address.h"
56
- #include "src/core/lib/iomgr/timer.h"
57
57
  #include "src/core/lib/resource_quota/arena.h"
58
58
  #include "src/core/lib/slice/slice.h"
59
59
  #include "src/core/lib/transport/connectivity_state.h"
@@ -242,24 +242,13 @@ class Subchannel : public DualRefCounted<Subchannel> {
242
242
 
243
243
  channelz::SubchannelNode* channelz_node();
244
244
 
245
- // Returns the current connectivity state of the subchannel.
246
- // If health_check_service_name is non-null, the returned connectivity
247
- // state will be based on the state reported by the backend for that
248
- // service name.
249
- grpc_connectivity_state CheckConnectivityState(
250
- const absl::optional<std::string>& health_check_service_name)
251
- ABSL_LOCKS_EXCLUDED(mu_);
252
-
253
245
  // Starts watching the subchannel's connectivity state.
254
- // The first callback to the watcher will be delivered when the
255
- // subchannel's connectivity state becomes a value other than
256
- // initial_state, which may happen immediately.
246
+ // The first callback to the watcher will be delivered ~immediately.
257
247
  // Subsequent callbacks will be delivered as the subchannel's state
258
248
  // changes.
259
249
  // The watcher will be destroyed either when the subchannel is
260
250
  // destroyed or when CancelConnectivityStateWatch() is called.
261
251
  void WatchConnectivityState(
262
- grpc_connectivity_state initial_state,
263
252
  const absl::optional<std::string>& health_check_service_name,
264
253
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher)
265
254
  ABSL_LOCKS_EXCLUDED(mu_);
@@ -336,7 +325,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
336
325
  public:
337
326
  void AddWatcherLocked(
338
327
  WeakRefCountedPtr<Subchannel> subchannel,
339
- grpc_connectivity_state initial_state,
340
328
  const std::string& health_check_service_name,
341
329
  RefCountedPtr<ConnectivityStateWatcherInterface> watcher);
342
330
  void RemoveWatcherLocked(const std::string& health_check_service_name,
@@ -367,8 +355,7 @@ class Subchannel : public DualRefCounted<Subchannel> {
367
355
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
368
356
 
369
357
  // Methods for connection.
370
- static void OnRetryTimer(void* arg, grpc_error_handle error)
371
- ABSL_LOCKS_EXCLUDED(mu_);
358
+ void OnRetryTimer() ABSL_LOCKS_EXCLUDED(mu_);
372
359
  void OnRetryTimerLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
373
360
  void StartConnectingLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
374
361
  static void OnConnectingFinished(void* arg, grpc_error_handle error)
@@ -403,9 +390,6 @@ class Subchannel : public DualRefCounted<Subchannel> {
403
390
 
404
391
  bool shutdown_ ABSL_GUARDED_BY(mu_) = false;
405
392
 
406
- // Records if RequestConnection() was called while in backoff.
407
- bool connection_requested_ ABSL_GUARDED_BY(mu_) = false;
408
-
409
393
  // Connectivity state tracking.
410
394
  // Note that the connectivity state implies the state of the
411
395
  // Subchannel object:
@@ -426,8 +410,8 @@ class Subchannel : public DualRefCounted<Subchannel> {
426
410
  // Backoff state.
427
411
  BackOff backoff_ ABSL_GUARDED_BY(mu_);
428
412
  Timestamp next_attempt_time_ ABSL_GUARDED_BY(mu_);
429
- grpc_timer retry_timer_ ABSL_GUARDED_BY(mu_);
430
- grpc_closure on_retry_timer_ ABSL_GUARDED_BY(mu_);
413
+ grpc_event_engine::experimental::EventEngine::TaskHandle retry_timer_handle_
414
+ ABSL_GUARDED_BY(mu_);
431
415
 
432
416
  // Keepalive time period (-1 for unset)
433
417
  int keepalive_time_ ABSL_GUARDED_BY(mu_) = -1;
@@ -22,6 +22,8 @@
22
22
  #include <memory>
23
23
  #include <utility>
24
24
 
25
+ #include "absl/status/status.h"
26
+
25
27
  #include <grpc/impl/codegen/connectivity_state.h>
26
28
  #include <grpc/impl/codegen/grpc_types.h>
27
29
 
@@ -38,11 +40,12 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
38
40
  public:
39
41
  virtual ~ConnectivityStateWatcherInterface() = default;
40
42
 
41
- // Will be invoked whenever the subchannel's connectivity state
42
- // changes. There will be only one invocation of this method on a
43
- // given watcher instance at any given time.
44
- virtual void OnConnectivityStateChange(
45
- grpc_connectivity_state new_state) = 0;
43
+ // Will be invoked whenever the subchannel's connectivity state changes.
44
+ // If the new state is TRANSIENT_FAILURE, status indicates the reason
45
+ // for the failure. There will be only one invocation of this method
46
+ // on a given watcher instance at any given time.
47
+ virtual void OnConnectivityStateChange(grpc_connectivity_state new_state,
48
+ absl::Status status) = 0;
46
49
 
47
50
  // TODO(roth): Remove this as soon as we move to EventManager-based
48
51
  // polling.
@@ -61,13 +64,8 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
61
64
 
62
65
  ~SubchannelInterface() override = default;
63
66
 
64
- // Returns the current connectivity state of the subchannel.
65
- virtual grpc_connectivity_state CheckConnectivityState() = 0;
66
-
67
67
  // Starts watching the subchannel's connectivity state.
68
- // The first callback to the watcher will be delivered when the
69
- // subchannel's connectivity state becomes a value other than
70
- // initial_state, which may happen immediately.
68
+ // The first callback to the watcher will be delivered ~immediately.
71
69
  // Subsequent callbacks will be delivered as the subchannel's state
72
70
  // changes.
73
71
  // The watcher will be destroyed either when the subchannel is
@@ -76,7 +74,6 @@ class SubchannelInterface : public RefCounted<SubchannelInterface> {
76
74
  // valid to call this method a second time without first cancelling
77
75
  // the previous watcher using CancelConnectivityStateWatch().
78
76
  virtual void WatchConnectivityState(
79
- grpc_connectivity_state initial_state,
80
77
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) = 0;
81
78
 
82
79
  // Cancels a connectivity state watch.
@@ -115,14 +112,9 @@ class DelegatingSubchannel : public SubchannelInterface {
115
112
  return wrapped_subchannel_;
116
113
  }
117
114
 
118
- grpc_connectivity_state CheckConnectivityState() override {
119
- return wrapped_subchannel_->CheckConnectivityState();
120
- }
121
115
  void WatchConnectivityState(
122
- grpc_connectivity_state initial_state,
123
116
  std::unique_ptr<ConnectivityStateWatcherInterface> watcher) override {
124
- return wrapped_subchannel_->WatchConnectivityState(initial_state,
125
- std::move(watcher));
117
+ return wrapped_subchannel_->WatchConnectivityState(std::move(watcher));
126
118
  }
127
119
  void CancelConnectivityStateWatch(
128
120
  ConnectivityStateWatcherInterface* watcher) override {
@@ -20,15 +20,11 @@
20
20
 
21
21
  #include <inttypes.h>
22
22
  #include <stdio.h>
23
- #include <string.h>
24
23
 
25
- #include <cstdint>
26
24
  #include <string>
27
25
  #include <utility>
28
26
 
29
- #include <grpc/slice_buffer.h>
30
27
  #include <grpc/status.h>
31
- #include <grpc/support/alloc.h>
32
28
  #include <grpc/support/log.h>
33
29
 
34
30
  #include "src/core/lib/gpr/time_precise.h"
@@ -38,7 +34,6 @@
38
34
  #include "src/core/lib/iomgr/exec_ctx.h"
39
35
  #include "src/core/lib/resource_quota/api.h"
40
36
  #include "src/core/lib/resource_quota/resource_quota.h"
41
- #include "src/core/lib/slice/slice_internal.h"
42
37
  #include "src/core/lib/transport/error_utils.h"
43
38
 
44
39
  #define SUBCHANNEL_STREAM_INITIAL_CONNECT_BACKOFF_SECONDS 1
@@ -151,7 +146,7 @@ void SubchannelStreamClient::OnRetryTimer(void* arg, grpc_error_handle error) {
151
146
  {
152
147
  MutexLock lock(&self->mu_);
153
148
  self->retry_timer_callback_pending_ = false;
154
- if (self->event_handler_ != nullptr && error == GRPC_ERROR_NONE &&
149
+ if (self->event_handler_ != nullptr && GRPC_ERROR_IS_NONE(error) &&
155
150
  self->call_state_ == nullptr) {
156
151
  if (GPR_UNLIKELY(self->tracer_ != nullptr)) {
157
152
  gpr_log(GPR_INFO,
@@ -223,7 +218,7 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
223
218
  this, grpc_schedule_on_exec_ctx);
224
219
  call_->SetAfterCallStackDestroy(&after_call_stack_destruction_);
225
220
  // Check if creation failed.
226
- if (error != GRPC_ERROR_NONE ||
221
+ if (!GRPC_ERROR_IS_NONE(error) ||
227
222
  subchannel_stream_client_->event_handler_ == nullptr) {
228
223
  gpr_log(GPR_ERROR,
229
224
  "SubchannelStreamClient %p CallState %p: error creating "
@@ -245,21 +240,16 @@ void SubchannelStreamClient::CallState::StartCallLocked() {
245
240
  send_initial_metadata_.Set(
246
241
  HttpPathMetadata(),
247
242
  subchannel_stream_client_->event_handler_->GetPathLocked());
248
- GPR_ASSERT(error == GRPC_ERROR_NONE);
243
+ GPR_ASSERT(GRPC_ERROR_IS_NONE(error));
249
244
  payload_.send_initial_metadata.send_initial_metadata =
250
245
  &send_initial_metadata_;
251
246
  payload_.send_initial_metadata.send_initial_metadata_flags = 0;
252
247
  payload_.send_initial_metadata.peer_string = nullptr;
253
248
  batch_.send_initial_metadata = true;
254
249
  // Add send_message op.
255
- grpc_slice request_slice =
256
- subchannel_stream_client_->event_handler_->EncodeSendMessageLocked();
257
- grpc_slice_buffer slice_buffer;
258
- grpc_slice_buffer_init(&slice_buffer);
259
- grpc_slice_buffer_add(&slice_buffer, request_slice);
260
- send_message_.emplace(&slice_buffer, 0);
261
- grpc_slice_buffer_destroy_internal(&slice_buffer);
262
- payload_.send_message.send_message.reset(&*send_message_);
250
+ send_message_.Append(Slice(
251
+ subchannel_stream_client_->event_handler_->EncodeSendMessageLocked()));
252
+ payload_.send_message.send_message = &send_message_;
263
253
  batch_.send_message = true;
264
254
  // Add send_trailing_metadata op.
265
255
  payload_.send_trailing_metadata.send_trailing_metadata =
@@ -374,42 +364,18 @@ void SubchannelStreamClient::CallState::RecvInitialMetadataReady(
374
364
  self->call_->Unref(DEBUG_LOCATION, "recv_initial_metadata_ready");
375
365
  }
376
366
 
377
- void SubchannelStreamClient::CallState::DoneReadingRecvMessage(
378
- grpc_error_handle error) {
379
- recv_message_.reset();
380
- if (error != GRPC_ERROR_NONE) {
381
- GRPC_ERROR_UNREF(error);
382
- Cancel();
383
- grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
367
+ void SubchannelStreamClient::CallState::RecvMessageReady() {
368
+ if (!recv_message_.has_value()) {
384
369
  call_->Unref(DEBUG_LOCATION, "recv_message_ready");
385
370
  return;
386
371
  }
387
- // Concatenate the slices to form a single string.
388
- std::unique_ptr<uint8_t> recv_message_deleter;
389
- uint8_t* recv_message;
390
- if (recv_message_buffer_.count == 1) {
391
- recv_message = GRPC_SLICE_START_PTR(recv_message_buffer_.slices[0]);
392
- } else {
393
- recv_message =
394
- static_cast<uint8_t*>(gpr_malloc(recv_message_buffer_.length));
395
- recv_message_deleter.reset(recv_message);
396
- size_t offset = 0;
397
- for (size_t i = 0; i < recv_message_buffer_.count; ++i) {
398
- memcpy(recv_message + offset,
399
- GRPC_SLICE_START_PTR(recv_message_buffer_.slices[i]),
400
- GRPC_SLICE_LENGTH(recv_message_buffer_.slices[i]));
401
- offset += GRPC_SLICE_LENGTH(recv_message_buffer_.slices[i]);
402
- }
403
- }
404
372
  // Report payload.
405
373
  {
406
374
  MutexLock lock(&subchannel_stream_client_->mu_);
407
375
  if (subchannel_stream_client_->event_handler_ != nullptr) {
408
- absl::string_view serialized_message(
409
- reinterpret_cast<char*>(recv_message), recv_message_buffer_.length);
410
376
  absl::Status status =
411
377
  subchannel_stream_client_->event_handler_->RecvMessageReadyLocked(
412
- subchannel_stream_client_.get(), serialized_message);
378
+ subchannel_stream_client_.get(), recv_message_->JoinIntoString());
413
379
  if (!status.ok()) {
414
380
  if (GPR_UNLIKELY(subchannel_stream_client_->tracer_ != nullptr)) {
415
381
  gpr_log(GPR_INFO,
@@ -424,7 +390,7 @@ void SubchannelStreamClient::CallState::DoneReadingRecvMessage(
424
390
  }
425
391
  }
426
392
  seen_response_.store(true, std::memory_order_release);
427
- grpc_slice_buffer_destroy_internal(&recv_message_buffer_);
393
+ recv_message_.reset();
428
394
  // Start another recv_message batch.
429
395
  // This re-uses the ref we're holding.
430
396
  // Note: Can't just reuse batch_ here, since we don't know that all
@@ -438,62 +404,11 @@ void SubchannelStreamClient::CallState::DoneReadingRecvMessage(
438
404
  StartBatch(&recv_message_batch_);
439
405
  }
440
406
 
441
- grpc_error_handle
442
- SubchannelStreamClient::CallState::PullSliceFromRecvMessage() {
443
- grpc_slice slice;
444
- grpc_error_handle error = recv_message_->Pull(&slice);
445
- if (error == GRPC_ERROR_NONE) {
446
- grpc_slice_buffer_add(&recv_message_buffer_, slice);
447
- }
448
- return error;
449
- }
450
-
451
- void SubchannelStreamClient::CallState::ContinueReadingRecvMessage() {
452
- while (recv_message_->Next(SIZE_MAX, &recv_message_ready_)) {
453
- grpc_error_handle error = PullSliceFromRecvMessage();
454
- if (error != GRPC_ERROR_NONE) {
455
- DoneReadingRecvMessage(error);
456
- return;
457
- }
458
- if (recv_message_buffer_.length == recv_message_->length()) {
459
- DoneReadingRecvMessage(GRPC_ERROR_NONE);
460
- break;
461
- }
462
- }
463
- }
464
-
465
- void SubchannelStreamClient::CallState::OnByteStreamNext(
466
- void* arg, grpc_error_handle error) {
467
- auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
468
- if (error != GRPC_ERROR_NONE) {
469
- self->DoneReadingRecvMessage(GRPC_ERROR_REF(error));
470
- return;
471
- }
472
- error = self->PullSliceFromRecvMessage();
473
- if (error != GRPC_ERROR_NONE) {
474
- self->DoneReadingRecvMessage(error);
475
- return;
476
- }
477
- if (self->recv_message_buffer_.length == self->recv_message_->length()) {
478
- self->DoneReadingRecvMessage(GRPC_ERROR_NONE);
479
- } else {
480
- self->ContinueReadingRecvMessage();
481
- }
482
- }
483
-
484
407
  void SubchannelStreamClient::CallState::RecvMessageReady(
485
408
  void* arg, grpc_error_handle /*error*/) {
486
409
  auto* self = static_cast<SubchannelStreamClient::CallState*>(arg);
487
410
  GRPC_CALL_COMBINER_STOP(&self->call_combiner_, "recv_message_ready");
488
- if (self->recv_message_ == nullptr) {
489
- self->call_->Unref(DEBUG_LOCATION, "recv_message_ready");
490
- return;
491
- }
492
- grpc_slice_buffer_init(&self->recv_message_buffer_);
493
- GRPC_CLOSURE_INIT(&self->recv_message_ready_, OnByteStreamNext, self,
494
- grpc_schedule_on_exec_ctx);
495
- self->ContinueReadingRecvMessage();
496
- // Ref will continue to be held until we finish draining the byte stream.
411
+ self->RecvMessageReady();
497
412
  }
498
413
 
499
414
  void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
@@ -505,7 +420,7 @@ void SubchannelStreamClient::CallState::RecvTrailingMetadataReady(
505
420
  grpc_status_code status =
506
421
  self->recv_trailing_metadata_.get(GrpcStatusMetadata())
507
422
  .value_or(GRPC_STATUS_UNKNOWN);
508
- if (error != GRPC_ERROR_NONE) {
423
+ if (!GRPC_ERROR_IS_NONE(error)) {
509
424
  grpc_error_get_status(error, Timestamp::InfFuture(), &status,
510
425
  nullptr /* slice */, nullptr /* http_error */,
511
426
  nullptr /* error_string */);
@@ -46,7 +46,7 @@
46
46
  #include "src/core/lib/resource_quota/arena.h"
47
47
  #include "src/core/lib/resource_quota/memory_quota.h"
48
48
  #include "src/core/lib/slice/slice.h"
49
- #include "src/core/lib/transport/byte_stream.h"
49
+ #include "src/core/lib/slice/slice_buffer.h"
50
50
  #include "src/core/lib/transport/metadata_batch.h"
51
51
  #include "src/core/lib/transport/transport.h"
52
52
 
@@ -132,6 +132,8 @@ class SubchannelStreamClient
132
132
  void CallEndedLocked(bool retry)
133
133
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&subchannel_stream_client_->mu_);
134
134
 
135
+ void RecvMessageReady();
136
+
135
137
  static void OnComplete(void* arg, grpc_error_handle error);
136
138
  static void RecvInitialMetadataReady(void* arg, grpc_error_handle error);
137
139
  static void RecvMessageReady(void* arg, grpc_error_handle error);
@@ -139,11 +141,6 @@ class SubchannelStreamClient
139
141
  static void StartCancel(void* arg, grpc_error_handle error);
140
142
  static void OnCancelComplete(void* arg, grpc_error_handle error);
141
143
 
142
- static void OnByteStreamNext(void* arg, grpc_error_handle error);
143
- void ContinueReadingRecvMessage();
144
- grpc_error_handle PullSliceFromRecvMessage();
145
- void DoneReadingRecvMessage(grpc_error_handle error);
146
-
147
144
  static void AfterCallStackDestruction(void* arg, grpc_error_handle error);
148
145
 
149
146
  RefCountedPtr<SubchannelStreamClient> subchannel_stream_client_;
@@ -169,7 +166,7 @@ class SubchannelStreamClient
169
166
  grpc_metadata_batch send_initial_metadata_;
170
167
 
171
168
  // send_message
172
- absl::optional<SliceBufferByteStream> send_message_;
169
+ SliceBuffer send_message_;
173
170
 
174
171
  // send_trailing_metadata
175
172
  grpc_metadata_batch send_trailing_metadata_;
@@ -179,9 +176,8 @@ class SubchannelStreamClient
179
176
  grpc_closure recv_initial_metadata_ready_;
180
177
 
181
178
  // recv_message
182
- OrphanablePtr<ByteStream> recv_message_;
179
+ absl::optional<SliceBuffer> recv_message_;
183
180
  grpc_closure recv_message_ready_;
184
- grpc_slice_buffer recv_message_buffer_;
185
181
  std::atomic<bool> seen_response_{false};
186
182
 
187
183
  // True if the cancel_stream batch has been started.
@@ -18,19 +18,24 @@
18
18
 
19
19
  #include "src/core/ext/filters/deadline/deadline_filter.h"
20
20
 
21
- #include <stdbool.h>
22
- #include <string.h>
21
+ #include <new>
23
22
 
24
- #include <grpc/support/alloc.h>
23
+ #include "absl/status/status.h"
24
+ #include "absl/types/optional.h"
25
+
26
+ #include <grpc/status.h>
25
27
  #include <grpc/support/log.h>
26
- #include <grpc/support/sync.h>
27
- #include <grpc/support/time.h>
28
28
 
29
+ #include "src/core/lib/channel/channel_args.h"
29
30
  #include "src/core/lib/channel/channel_stack_builder.h"
30
31
  #include "src/core/lib/config/core_configuration.h"
31
- #include "src/core/lib/gprpp/memory.h"
32
+ #include "src/core/lib/gprpp/debug_location.h"
33
+ #include "src/core/lib/iomgr/error.h"
34
+ #include "src/core/lib/iomgr/exec_ctx.h"
32
35
  #include "src/core/lib/iomgr/timer.h"
33
- #include "src/core/lib/slice/slice_internal.h"
36
+ #include "src/core/lib/surface/channel_init.h"
37
+ #include "src/core/lib/surface/channel_stack_type.h"
38
+ #include "src/core/lib/transport/metadata_batch.h"
34
39
 
35
40
  namespace grpc_core {
36
41
 
@@ -19,8 +19,15 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <grpc/impl/codegen/grpc_types.h>
23
+
24
+ #include "src/core/lib/channel/channel_fwd.h"
22
25
  #include "src/core/lib/channel/channel_stack.h"
23
- #include "src/core/lib/iomgr/timer.h"
26
+ #include "src/core/lib/gprpp/time.h"
27
+ #include "src/core/lib/iomgr/call_combiner.h"
28
+ #include "src/core/lib/iomgr/closure.h"
29
+ #include "src/core/lib/resource_quota/arena.h"
30
+ #include "src/core/lib/transport/transport.h"
24
31
 
25
32
  namespace grpc_core {
26
33
  class TimerState;
@@ -18,21 +18,40 @@
18
18
 
19
19
  #include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
20
20
 
21
+ #include <stdint.h>
22
+ #include <stdlib.h>
23
+
24
+ #include <algorithm>
21
25
  #include <atomic>
26
+ #include <functional>
27
+ #include <string>
28
+ #include <type_traits>
29
+ #include <utility>
22
30
 
31
+ #include "absl/status/status.h"
23
32
  #include "absl/strings/numbers.h"
33
+ #include "absl/strings/str_cat.h"
34
+ #include "absl/strings/string_view.h"
35
+ #include "absl/types/optional.h"
36
+ #include "absl/utility/utility.h"
24
37
 
25
38
  #include <grpc/status.h>
26
- #include <grpc/support/alloc.h>
27
39
  #include <grpc/support/log.h>
28
40
 
29
41
  #include "src/core/ext/filters/fault_injection/service_config_parser.h"
30
42
  #include "src/core/lib/channel/channel_stack.h"
43
+ #include "src/core/lib/channel/context.h"
31
44
  #include "src/core/lib/channel/status_util.h"
45
+ #include "src/core/lib/config/core_configuration.h"
46
+ #include "src/core/lib/debug/trace.h"
47
+ #include "src/core/lib/gprpp/time.h"
48
+ #include "src/core/lib/iomgr/exec_ctx.h"
49
+ #include "src/core/lib/promise/context.h"
50
+ #include "src/core/lib/promise/poll.h"
32
51
  #include "src/core/lib/promise/sleep.h"
33
52
  #include "src/core/lib/promise/try_seq.h"
34
53
  #include "src/core/lib/service_config/service_config_call_data.h"
35
- #include "src/core/lib/transport/status_conversion.h"
54
+ #include "src/core/lib/transport/metadata_batch.h"
36
55
  #include "src/core/lib/transport/transport.h"
37
56
 
38
57
  namespace grpc_core {
@@ -19,9 +19,14 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include "src/core/ext/filters/fault_injection/service_config_parser.h"
23
- #include "src/core/lib/channel/channel_stack.h"
22
+ #include <stddef.h>
23
+
24
+ #include "absl/status/statusor.h"
25
+
26
+ #include "src/core/lib/channel/channel_args.h"
27
+ #include "src/core/lib/channel/channel_fwd.h"
24
28
  #include "src/core/lib/channel/promise_based_filter.h"
29
+ #include "src/core/lib/promise/arena_promise.h"
25
30
  #include "src/core/lib/transport/transport.h"
26
31
 
27
32
  // Channel arg key for enabling parsing fault injection via method config.
@@ -53,7 +58,7 @@ class FaultInjectionFilter : public ChannelFilter {
53
58
  const ClientMetadataHandle& initial_metadata);
54
59
 
55
60
  // The relative index of instances of the same filter.
56
- int index_;
61
+ size_t index_;
57
62
  const size_t service_config_parser_index_;
58
63
  };
59
64
 
@@ -18,15 +18,18 @@
18
18
 
19
19
  #include "src/core/ext/filters/fault_injection/service_config_parser.h"
20
20
 
21
+ #include <algorithm>
22
+ #include <type_traits>
21
23
  #include <vector>
22
24
 
25
+ #include "absl/memory/memory.h"
23
26
  #include "absl/strings/str_cat.h"
24
- #include "absl/strings/string_view.h"
27
+
28
+ #include <grpc/support/log.h>
25
29
 
26
30
  #include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
27
31
  #include "src/core/lib/channel/channel_args.h"
28
32
  #include "src/core/lib/channel/status_util.h"
29
- #include "src/core/lib/gpr/string.h"
30
33
  #include "src/core/lib/json/json_util.h"
31
34
 
32
35
  namespace grpc_core {
@@ -141,7 +144,7 @@ ParseFaultInjectionPolicy(const Json::Array& policies_json_array,
141
144
  std::unique_ptr<ServiceConfigParser::ParsedConfig>
142
145
  FaultInjectionServiceConfigParser::ParsePerMethodParams(
143
146
  const grpc_channel_args* args, const Json& json, grpc_error_handle* error) {
144
- GPR_DEBUG_ASSERT(error != nullptr && *error == GRPC_ERROR_NONE);
147
+ GPR_DEBUG_ASSERT(error != nullptr && GRPC_ERROR_IS_NONE(*error));
145
148
  // Only parse fault injection policy if the following channel arg is present.
146
149
  if (!grpc_channel_args_find_bool(
147
150
  args, GRPC_ARG_PARSE_FAULT_INJECTION_METHOD_CONFIG, false)) {
@@ -158,7 +161,7 @@ FaultInjectionServiceConfigParser::ParsePerMethodParams(
158
161
  ParseFaultInjectionPolicy(*policies_json_array, &error_list);
159
162
  }
160
163
  *error = GRPC_ERROR_CREATE_FROM_VECTOR("Fault injection parser", &error_list);
161
- if (*error != GRPC_ERROR_NONE || fault_injection_policies.empty()) {
164
+ if (!GRPC_ERROR_IS_NONE(*error) || fault_injection_policies.empty()) {
162
165
  return nullptr;
163
166
  }
164
167
  return absl::make_unique<FaultInjectionMethodParsedConfig>(
@@ -19,10 +19,24 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
+ #include <stddef.h>
23
+ #include <stdint.h>
24
+
25
+ #include <limits>
26
+ #include <memory>
27
+ #include <string>
28
+ #include <utility>
22
29
  #include <vector>
23
30
 
31
+ #include "absl/strings/string_view.h"
32
+
33
+ #include <grpc/impl/codegen/grpc_types.h>
34
+ #include <grpc/status.h>
35
+
24
36
  #include "src/core/lib/config/core_configuration.h"
25
- #include "src/core/lib/iomgr/exec_ctx.h"
37
+ #include "src/core/lib/gprpp/time.h"
38
+ #include "src/core/lib/iomgr/error.h"
39
+ #include "src/core/lib/json/json.h"
26
40
  #include "src/core/lib/service_config/service_config_parser.h"
27
41
 
28
42
  namespace grpc_core {
@@ -58,8 +72,8 @@ class FaultInjectionMethodParsedConfig
58
72
  // keep track of their relative positions. The FaultInjectionFilter uses this
59
73
  // method to access the parsed fault injection policy in service config,
60
74
  // whether it came from xDS resolver or directly from service config
61
- const FaultInjectionPolicy* fault_injection_policy(int index) const {
62
- if (static_cast<size_t>(index) >= fault_injection_policies_.size()) {
75
+ const FaultInjectionPolicy* fault_injection_policy(size_t index) const {
76
+ if (index >= fault_injection_policies_.size()) {
63
77
  return nullptr;
64
78
  }
65
79
  return &fault_injection_policies_[index];
@@ -19,25 +19,36 @@
19
19
 
20
20
  #include "src/core/ext/filters/http/client/http_client_filter.h"
21
21
 
22
- #include <stdint.h>
23
- #include <string.h>
24
-
22
+ #include <algorithm>
23
+ #include <functional>
25
24
  #include <string>
25
+ #include <utility>
26
26
  #include <vector>
27
27
 
28
+ #include "absl/status/status.h"
28
29
  #include "absl/strings/str_cat.h"
29
30
  #include "absl/strings/str_format.h"
30
31
  #include "absl/strings/str_join.h"
32
+ #include "absl/strings/string_view.h"
33
+ #include "absl/types/optional.h"
34
+ #include "absl/utility/utility.h"
31
35
 
32
36
  #include <grpc/grpc.h>
33
- #include <grpc/support/alloc.h>
34
- #include <grpc/support/log.h>
37
+ #include <grpc/impl/codegen/grpc_types.h>
38
+ #include <grpc/status.h>
35
39
 
36
40
  #include "src/core/lib/channel/channel_args.h"
41
+ #include "src/core/lib/channel/channel_stack.h"
37
42
  #include "src/core/lib/promise/call_push_pull.h"
43
+ #include "src/core/lib/promise/context.h"
44
+ #include "src/core/lib/promise/detail/basic_seq.h"
45
+ #include "src/core/lib/promise/latch.h"
46
+ #include "src/core/lib/promise/poll.h"
38
47
  #include "src/core/lib/promise/seq.h"
48
+ #include "src/core/lib/resource_quota/arena.h"
39
49
  #include "src/core/lib/slice/percent_encoding.h"
40
50
  #include "src/core/lib/transport/status_conversion.h"
51
+ #include "src/core/lib/transport/transport_fwd.h"
41
52
  #include "src/core/lib/transport/transport_impl.h"
42
53
 
43
54
  namespace grpc_core {
@@ -20,8 +20,15 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
- #include "src/core/lib/channel/channel_stack.h"
23
+ #include "absl/status/statusor.h"
24
+
25
+ #include "src/core/lib/channel/channel_args.h"
26
+ #include "src/core/lib/channel/channel_fwd.h"
24
27
  #include "src/core/lib/channel/promise_based_filter.h"
28
+ #include "src/core/lib/promise/arena_promise.h"
29
+ #include "src/core/lib/slice/slice.h"
30
+ #include "src/core/lib/transport/metadata_batch.h"
31
+ #include "src/core/lib/transport/transport.h"
25
32
 
26
33
  namespace grpc_core {
27
34