grpc 1.46.2-x86_64-linux → 1.48.0.pre1-x86_64-linux

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 (816) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +138 -128
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +62 -18
  5. data/include/grpc/event_engine/memory_allocator.h +0 -15
  6. data/include/grpc/event_engine/port.h +1 -1
  7. data/include/grpc/event_engine/slice.h +286 -0
  8. data/include/grpc/event_engine/slice_buffer.h +118 -0
  9. data/include/grpc/grpc.h +3 -3
  10. data/include/grpc/grpc_security.h +11 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  13. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  14. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  15. data/include/grpc/impl/codegen/port_platform.h +106 -39
  16. data/include/grpc/impl/codegen/slice.h +1 -1
  17. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  18. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +35 -35
  19. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +20 -1
  20. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  21. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  22. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  23. data/src/core/ext/filters/client_channel/backup_poller.cc +8 -6
  24. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  25. data/src/core/ext/filters/client_channel/channel_connectivity.cc +43 -21
  26. data/src/core/ext/filters/client_channel/client_channel.cc +111 -82
  27. data/src/core/ext/filters/client_channel/client_channel.h +43 -8
  28. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  29. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  30. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  31. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  32. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  33. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  34. data/src/core/ext/filters/client_channel/config_selector.h +8 -6
  35. data/src/core/ext/filters/client_channel/connector.h +9 -3
  36. data/src/core/ext/filters/client_channel/dynamic_filters.cc +19 -6
  37. data/src/core/ext/filters/client_channel/dynamic_filters.h +12 -2
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  42. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  43. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  45. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  46. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  47. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +11 -5
  50. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +132 -62
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  56. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +407 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1036 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +149 -147
  61. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +176 -85
  62. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +303 -203
  63. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +6 -1
  64. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +92 -54
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +240 -214
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +119 -111
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +86 -71
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +101 -25
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +35 -11
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +36 -20
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +78 -14
  73. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  74. data/src/core/ext/filters/client_channel/lb_policy.h +18 -31
  75. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  76. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +11 -6
  77. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  78. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  79. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +1 -0
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  83. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +26 -6
  84. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +139 -48
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +6 -6
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -14
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  91. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  92. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  93. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +39 -7
  94. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +18 -19
  95. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  96. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +61 -16
  97. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +14 -2
  98. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  99. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +17 -12
  100. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +111 -46
  101. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  102. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +12 -18
  103. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  104. data/src/core/ext/filters/client_channel/retry_filter.cc +75 -36
  105. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  106. data/src/core/ext/filters/client_channel/retry_service_config.cc +12 -13
  107. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  108. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  109. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  110. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +24 -6
  111. data/src/core/ext/filters/client_channel/subchannel.cc +186 -187
  112. data/src/core/ext/filters/client_channel/subchannel.h +80 -36
  113. data/src/core/ext/filters/client_channel/subchannel_interface.h +51 -41
  114. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  115. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  116. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  117. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +24 -95
  118. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +17 -9
  119. data/src/core/ext/filters/deadline/deadline_filter.cc +18 -9
  120. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +22 -6
  122. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  124. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  125. data/src/core/ext/filters/http/client/http_client_filter.cc +30 -10
  126. data/src/core/ext/filters/http/client/http_client_filter.h +15 -2
  127. data/src/core/ext/filters/http/client_authority_filter.cc +16 -20
  128. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  129. data/src/core/ext/filters/http/http_filters_plugin.cc +16 -9
  130. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +65 -187
  131. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  132. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -107
  133. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  134. data/src/core/ext/filters/http/server/http_server_filter.cc +95 -255
  135. data/src/core/ext/filters/http/server/http_server_filter.h +37 -3
  136. data/src/core/ext/filters/message_size/message_size_filter.cc +45 -41
  137. data/src/core/ext/filters/message_size/message_size_filter.h +15 -2
  138. data/src/core/ext/filters/rbac/rbac_filter.cc +15 -3
  139. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  140. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  141. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  142. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  143. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  144. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  145. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  146. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +104 -138
  147. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  148. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +58 -29
  149. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  150. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  151. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  153. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +260 -491
  154. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +6 -1
  155. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  156. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  157. data/src/core/ext/transport/chttp2/transport/flow_control.cc +145 -261
  158. data/src/core/ext/transport/chttp2/transport/flow_control.h +179 -288
  159. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  160. data/src/core/ext/transport/chttp2/transport/frame_data.cc +59 -211
  161. data/src/core/ext/transport/chttp2/transport/frame_data.h +13 -36
  162. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  163. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  164. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  165. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  166. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  167. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  168. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +10 -42
  169. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  170. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +10 -12
  171. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  172. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  173. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  174. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  175. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  176. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -13
  177. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  178. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +53 -37
  179. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  180. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  181. data/src/core/ext/transport/chttp2/transport/internal.h +31 -112
  182. data/src/core/ext/transport/chttp2/transport/parsing.cc +77 -43
  183. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +11 -11
  184. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  185. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  186. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  187. data/src/core/ext/transport/chttp2/transport/writing.cc +54 -21
  188. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  189. data/src/core/ext/transport/inproc/inproc_transport.cc +93 -86
  190. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  191. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  192. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  193. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  194. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  195. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  196. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  197. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  198. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  199. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  200. data/src/core/ext/xds/certificate_provider_store.cc +6 -2
  201. data/src/core/ext/xds/certificate_provider_store.h +10 -1
  202. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  203. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  204. data/src/core/ext/xds/upb_utils.h +1 -2
  205. data/src/core/ext/xds/xds_api.cc +16 -18
  206. data/src/core/ext/xds/xds_api.h +12 -5
  207. data/src/core/ext/xds/xds_bootstrap.cc +39 -26
  208. data/src/core/ext/xds/xds_bootstrap.h +11 -11
  209. data/src/core/ext/xds/xds_certificate_provider.cc +16 -4
  210. data/src/core/ext/xds/xds_certificate_provider.h +17 -2
  211. data/src/core/ext/xds/xds_channel_stack_modifier.cc +14 -5
  212. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  213. data/src/core/ext/xds/xds_client.cc +121 -46
  214. data/src/core/ext/xds/xds_client.h +19 -4
  215. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  216. data/src/core/ext/xds/xds_client_stats.h +4 -3
  217. data/src/core/ext/xds/xds_cluster.cc +126 -25
  218. data/src/core/ext/xds/xds_cluster.h +12 -1
  219. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  220. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  221. data/src/core/ext/xds/xds_common_types.cc +36 -22
  222. data/src/core/ext/xds/xds_common_types.h +12 -4
  223. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  224. data/src/core/ext/xds/xds_endpoint.h +13 -5
  225. data/src/core/ext/xds/xds_http_fault_filter.cc +10 -8
  226. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  227. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  228. data/src/core/ext/xds/xds_http_filters.h +3 -3
  229. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  230. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  231. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  232. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  233. data/src/core/ext/xds/xds_listener.cc +70 -42
  234. data/src/core/ext/xds/xds_listener.h +10 -1
  235. data/src/core/ext/xds/xds_resource_type.h +3 -3
  236. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  237. data/src/core/ext/xds/xds_route_config.cc +56 -28
  238. data/src/core/ext/xds/xds_route_config.h +11 -2
  239. data/src/core/ext/xds/xds_routing.cc +16 -0
  240. data/src/core/ext/xds/xds_routing.h +7 -2
  241. data/src/core/ext/xds/xds_server_config_fetcher.cc +56 -7
  242. data/src/core/lib/address_utils/parse_address.cc +5 -8
  243. data/src/core/lib/address_utils/parse_address.h +3 -2
  244. data/src/core/lib/address_utils/sockaddr_utils.cc +60 -26
  245. data/src/core/lib/address_utils/sockaddr_utils.h +9 -4
  246. data/src/core/lib/avl/avl.h +6 -4
  247. data/src/core/lib/backoff/backoff.cc +1 -1
  248. data/src/core/lib/backoff/backoff.h +1 -1
  249. data/src/core/lib/channel/call_finalization.h +4 -0
  250. data/src/core/lib/channel/call_tracer.h +11 -5
  251. data/src/core/lib/channel/channel_args.cc +41 -22
  252. data/src/core/lib/channel/channel_args.h +34 -3
  253. data/src/core/lib/channel/channel_args_preconditioning.cc +4 -3
  254. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  255. data/src/core/lib/channel/channel_fwd.h +26 -0
  256. data/src/core/lib/channel/channel_stack.cc +45 -7
  257. data/src/core/lib/channel/channel_stack.h +45 -9
  258. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  259. data/src/core/lib/channel/channel_stack_builder.h +17 -32
  260. data/src/core/lib/channel/channel_stack_builder_impl.cc +38 -43
  261. data/src/core/lib/channel/channel_stack_builder_impl.h +4 -6
  262. data/src/core/lib/channel/channel_trace.cc +8 -13
  263. data/src/core/lib/channel/channel_trace.h +6 -3
  264. data/src/core/lib/channel/channelz.cc +10 -14
  265. data/src/core/lib/channel/channelz.h +15 -7
  266. data/src/core/lib/channel/channelz_registry.cc +11 -19
  267. data/src/core/lib/channel/channelz_registry.h +10 -9
  268. data/src/core/lib/channel/connected_channel.cc +22 -31
  269. data/src/core/lib/channel/connected_channel.h +2 -0
  270. data/src/core/lib/channel/promise_based_filter.cc +451 -190
  271. data/src/core/lib/channel/promise_based_filter.h +162 -27
  272. data/src/core/lib/channel/status_util.cc +2 -0
  273. data/src/core/lib/channel/status_util.h +0 -3
  274. data/src/core/lib/compression/compression.cc +6 -1
  275. data/src/core/lib/compression/compression_internal.cc +48 -16
  276. data/src/core/lib/compression/compression_internal.h +4 -3
  277. data/src/core/lib/compression/message_compress.cc +3 -1
  278. data/src/core/lib/compression/message_compress.h +2 -3
  279. data/src/core/lib/config/core_configuration.cc +3 -0
  280. data/src/core/lib/config/core_configuration.h +2 -1
  281. data/src/core/lib/debug/stats.cc +9 -9
  282. data/src/core/lib/debug/stats.h +2 -1
  283. data/src/core/lib/debug/stats_data.cc +2 -1
  284. data/src/core/lib/debug/stats_data.h +0 -4
  285. data/src/core/lib/debug/trace.h +13 -12
  286. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  287. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  288. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  289. data/src/core/lib/event_engine/event_engine.cc +29 -14
  290. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  291. data/src/core/lib/event_engine/handle_containers.h +67 -0
  292. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.cc +159 -0
  293. data/src/core/lib/event_engine/iomgr_engine/iomgr_engine.h +122 -0
  294. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  295. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  296. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  297. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  298. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  299. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  300. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  301. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  302. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  303. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  304. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  305. data/src/core/lib/{iomgr/event_engine → event_engine}/promise.h +27 -9
  306. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  307. data/src/core/lib/event_engine/slice.cc +102 -0
  308. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  309. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  310. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  311. data/src/core/lib/gpr/log.cc +5 -0
  312. data/src/core/lib/gpr/time_posix.cc +6 -9
  313. data/src/core/lib/gpr/time_windows.cc +10 -7
  314. data/src/core/lib/gpr/tls.h +3 -5
  315. data/src/core/lib/gprpp/bitset.h +5 -1
  316. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  317. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  318. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  319. data/src/core/lib/gprpp/examine_stack.h +0 -1
  320. data/src/core/lib/gprpp/fork.cc +3 -6
  321. data/src/core/lib/gprpp/global_config.h +2 -4
  322. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  323. data/src/core/lib/gprpp/global_config_env.h +3 -1
  324. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  325. data/src/core/lib/gprpp/host_port.cc +2 -0
  326. data/src/core/lib/gprpp/manual_constructor.h +0 -68
  327. data/src/core/lib/gprpp/match.h +2 -0
  328. data/src/core/lib/gprpp/memory.h +1 -5
  329. data/src/core/lib/gprpp/orphanable.h +1 -4
  330. data/src/core/lib/gprpp/ref_counted.h +1 -3
  331. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  332. data/src/core/lib/gprpp/stat.h +0 -2
  333. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  334. data/src/core/lib/gprpp/status_helper.cc +50 -32
  335. data/src/core/lib/gprpp/status_helper.h +4 -0
  336. data/src/core/lib/gprpp/sync.h +3 -1
  337. data/src/core/lib/gprpp/table.h +10 -0
  338. data/src/core/lib/gprpp/thd.h +2 -5
  339. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  340. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  341. data/src/core/lib/gprpp/time.cc +16 -0
  342. data/src/core/lib/gprpp/time.h +10 -1
  343. data/src/core/lib/gprpp/time_util.cc +4 -0
  344. data/src/core/lib/gprpp/time_util.h +1 -1
  345. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  346. data/src/core/lib/http/format_request.cc +34 -4
  347. data/src/core/lib/http/format_request.h +3 -1
  348. data/src/core/lib/http/httpcli.cc +106 -93
  349. data/src/core/lib/http/httpcli.h +58 -10
  350. data/src/core/lib/http/httpcli_security_connector.cc +19 -8
  351. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  352. data/src/core/lib/http/parser.cc +6 -7
  353. data/src/core/lib/http/parser.h +3 -0
  354. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  355. data/src/core/lib/iomgr/endpoint.cc +4 -4
  356. data/src/core/lib/iomgr/endpoint.h +7 -5
  357. data/src/core/lib/iomgr/endpoint_cfstream.cc +9 -6
  358. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  359. data/src/core/lib/iomgr/error.cc +11 -9
  360. data/src/core/lib/iomgr/error.h +9 -5
  361. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  362. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  363. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  364. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  365. data/src/core/lib/iomgr/ev_posix.cc +55 -96
  366. data/src/core/lib/iomgr/ev_posix.h +5 -3
  367. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  368. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  369. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  370. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  371. data/src/core/lib/iomgr/iomgr.cc +7 -1
  372. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  373. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  374. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  375. data/src/core/lib/iomgr/load_file.cc +1 -1
  376. data/src/core/lib/iomgr/pollset_set.h +1 -2
  377. data/src/core/lib/iomgr/port.h +25 -6
  378. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  379. data/src/core/lib/iomgr/resolve_address.h +21 -14
  380. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  381. data/src/core/lib/iomgr/resolve_address_posix.cc +9 -15
  382. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  383. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -15
  384. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  385. data/src/core/lib/iomgr/sockaddr.h +2 -3
  386. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  387. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  388. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  389. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  390. data/src/core/lib/iomgr/tcp_client.h +24 -13
  391. data/src/core/lib/iomgr/tcp_client_cfstream.cc +24 -10
  392. data/src/core/lib/iomgr/tcp_client_posix.cc +154 -29
  393. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  394. data/src/core/lib/iomgr/tcp_client_windows.cc +27 -16
  395. data/src/core/lib/iomgr/tcp_posix.cc +96 -52
  396. data/src/core/lib/iomgr/tcp_server_posix.cc +33 -19
  397. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +41 -38
  398. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -6
  399. data/src/core/lib/iomgr/tcp_server_windows.cc +20 -12
  400. data/src/core/lib/iomgr/tcp_windows.cc +12 -9
  401. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  402. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  403. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  404. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  405. data/src/core/lib/iomgr/work_serializer.h +2 -3
  406. data/src/core/lib/json/json.h +1 -2
  407. data/src/core/lib/json/json_reader.cc +9 -1
  408. data/src/core/lib/json/json_util.cc +7 -0
  409. data/src/core/lib/json/json_util.h +10 -1
  410. data/src/core/lib/json/json_writer.cc +6 -1
  411. data/src/core/lib/matchers/matchers.cc +6 -3
  412. data/src/core/lib/matchers/matchers.h +2 -0
  413. data/src/core/lib/promise/activity.cc +1 -2
  414. data/src/core/lib/promise/activity.h +13 -19
  415. data/src/core/lib/promise/arena_promise.h +11 -1
  416. data/src/core/lib/promise/call_push_pull.h +4 -0
  417. data/src/core/lib/promise/context.h +1 -1
  418. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  419. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  420. data/src/core/lib/promise/latch.h +0 -1
  421. data/src/core/lib/promise/loop.h +2 -0
  422. data/src/core/lib/promise/promise.h +1 -0
  423. data/src/core/lib/promise/race.h +0 -1
  424. data/src/core/lib/promise/seq.h +0 -2
  425. data/src/core/lib/promise/sleep.cc +38 -31
  426. data/src/core/lib/promise/sleep.h +32 -22
  427. data/src/core/lib/promise/try_seq.h +2 -2
  428. data/src/core/lib/resolver/resolver.cc +5 -0
  429. data/src/core/lib/resolver/resolver.h +3 -0
  430. data/src/core/lib/resolver/resolver_factory.h +6 -4
  431. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  432. data/src/core/lib/resolver/resolver_registry.h +12 -1
  433. data/src/core/lib/resolver/server_address.cc +17 -3
  434. data/src/core/lib/resolver/server_address.h +13 -6
  435. data/src/core/lib/resource_quota/api.cc +14 -1
  436. data/src/core/lib/resource_quota/api.h +4 -1
  437. data/src/core/lib/resource_quota/arena.cc +0 -6
  438. data/src/core/lib/resource_quota/arena.h +1 -2
  439. data/src/core/lib/resource_quota/memory_quota.cc +62 -62
  440. data/src/core/lib/resource_quota/memory_quota.h +35 -30
  441. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  442. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  443. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  444. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  445. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  446. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  447. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  448. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  449. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  450. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +15 -0
  451. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  452. data/src/core/lib/security/authorization/matchers.cc +9 -1
  453. data/src/core/lib/security/authorization/matchers.h +7 -0
  454. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  455. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  456. data/src/core/lib/security/context/security_context.cc +5 -2
  457. data/src/core/lib/security/context/security_context.h +14 -2
  458. data/src/core/lib/security/credentials/alts/alts_credentials.cc +12 -4
  459. data/src/core/lib/security/credentials/alts/alts_credentials.h +8 -3
  460. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  461. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  462. data/src/core/lib/security/credentials/call_creds_util.cc +10 -0
  463. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  464. data/src/core/lib/security/credentials/channel_creds_registry.h +7 -1
  465. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  466. data/src/core/lib/security/credentials/composite/composite_credentials.cc +11 -7
  467. data/src/core/lib/security/credentials/composite/composite_credentials.h +21 -6
  468. data/src/core/lib/security/credentials/credentials.cc +4 -8
  469. data/src/core/lib/security/credentials/credentials.h +27 -18
  470. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +108 -9
  471. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +18 -0
  472. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  473. data/src/core/lib/security/credentials/external/external_account_credentials.cc +27 -9
  474. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  475. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  476. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  477. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +22 -4
  478. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  479. data/src/core/lib/security/credentials/fake/fake_credentials.cc +21 -9
  480. data/src/core/lib/security/credentials/fake/fake_credentials.h +15 -3
  481. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  482. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +51 -24
  483. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +12 -3
  484. data/src/core/lib/security/credentials/iam/iam_credentials.cc +13 -4
  485. data/src/core/lib/security/credentials/iam/iam_credentials.h +12 -2
  486. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +12 -2
  487. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +9 -4
  488. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  489. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  490. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -7
  491. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +16 -2
  492. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  493. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  494. data/src/core/lib/security/credentials/local/local_credentials.cc +12 -5
  495. data/src/core/lib/security/credentials/local/local_credentials.h +9 -2
  496. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +36 -19
  497. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +24 -4
  498. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +12 -8
  499. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +25 -1
  500. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +13 -2
  501. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +17 -4
  502. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  503. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  504. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +39 -10
  505. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +14 -11
  506. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +35 -3
  507. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +34 -11
  508. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  509. data/src/core/lib/security/credentials/tls/tls_credentials.cc +17 -2
  510. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -3
  511. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  512. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  513. data/src/core/lib/security/credentials/xds/xds_credentials.cc +20 -4
  514. data/src/core/lib/security/credentials/xds/xds_credentials.h +19 -5
  515. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  516. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  517. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +18 -2
  518. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  519. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  520. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  521. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  522. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  523. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  524. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  525. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  526. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  527. data/src/core/lib/security/security_connector/security_connector.h +19 -7
  528. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +19 -7
  529. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  530. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  531. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  532. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  533. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  534. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  535. data/src/core/lib/security/transport/auth_filters.h +7 -0
  536. data/src/core/lib/security/transport/client_auth_filter.cc +24 -17
  537. data/src/core/lib/security/transport/secure_endpoint.cc +81 -20
  538. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  539. data/src/core/lib/security/transport/security_handshaker.cc +49 -16
  540. data/src/core/lib/security/transport/security_handshaker.h +5 -1
  541. data/src/core/lib/security/transport/server_auth_filter.cc +29 -6
  542. data/src/core/lib/security/util/json_util.cc +3 -2
  543. data/src/core/lib/security/util/json_util.h +0 -2
  544. data/src/core/lib/service_config/service_config.h +4 -8
  545. data/src/core/lib/service_config/service_config_call_data.h +6 -2
  546. data/src/core/lib/service_config/service_config_impl.cc +13 -6
  547. data/src/core/lib/service_config/service_config_impl.h +9 -4
  548. data/src/core/lib/service_config/service_config_parser.cc +8 -2
  549. data/src/core/lib/service_config/service_config_parser.h +7 -0
  550. data/src/core/lib/slice/b64.cc +1 -1
  551. data/src/core/lib/slice/b64.h +2 -0
  552. data/src/core/lib/slice/percent_encoding.cc +4 -1
  553. data/src/core/lib/slice/percent_encoding.h +0 -6
  554. data/src/core/lib/slice/slice.cc +2 -1
  555. data/src/core/lib/slice/slice.h +10 -5
  556. data/src/core/lib/slice/slice_api.cc +1 -1
  557. data/src/core/lib/slice/slice_buffer.cc +79 -23
  558. data/src/core/lib/slice/slice_buffer.h +137 -0
  559. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  560. data/src/core/lib/slice/slice_internal.h +4 -3
  561. data/src/core/lib/slice/slice_refcount.h +2 -3
  562. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  563. data/src/core/lib/slice/slice_string_helpers.cc +0 -16
  564. data/src/core/lib/slice/slice_string_helpers.h +1 -8
  565. data/src/core/lib/surface/builtins.cc +7 -2
  566. data/src/core/lib/surface/byte_buffer.cc +7 -1
  567. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  568. data/src/core/lib/surface/call.cc +90 -137
  569. data/src/core/lib/surface/call.h +21 -3
  570. data/src/core/lib/surface/call_details.cc +4 -4
  571. data/src/core/lib/surface/call_log_batch.cc +7 -1
  572. data/src/core/lib/surface/call_test_only.h +4 -1
  573. data/src/core/lib/surface/channel.cc +179 -242
  574. data/src/core/lib/surface/channel.h +97 -58
  575. data/src/core/lib/surface/channel_init.h +2 -0
  576. data/src/core/lib/surface/channel_ping.cc +8 -2
  577. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  578. data/src/core/lib/surface/channel_stack_type.h +0 -2
  579. data/src/core/lib/surface/completion_queue.cc +29 -20
  580. data/src/core/lib/surface/completion_queue.h +7 -2
  581. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  582. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  583. data/src/core/lib/surface/event_string.cc +1 -7
  584. data/src/core/lib/surface/event_string.h +1 -1
  585. data/src/core/lib/surface/init.cc +17 -46
  586. data/src/core/lib/surface/init.h +0 -8
  587. data/src/core/lib/surface/lame_client.cc +63 -109
  588. data/src/core/lib/surface/lame_client.h +41 -3
  589. data/src/core/lib/surface/metadata_array.cc +2 -0
  590. data/src/core/lib/surface/server.cc +83 -64
  591. data/src/core/lib/surface/server.h +42 -9
  592. data/src/core/lib/surface/validate_metadata.cc +3 -6
  593. data/src/core/lib/surface/validate_metadata.h +3 -0
  594. data/src/core/lib/surface/version.cc +2 -2
  595. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  596. data/src/core/lib/transport/bdp_estimator.h +2 -3
  597. data/src/core/lib/transport/connectivity_state.cc +6 -4
  598. data/src/core/lib/transport/connectivity_state.h +2 -3
  599. data/src/core/lib/transport/error_utils.cc +16 -8
  600. data/src/core/lib/transport/error_utils.h +5 -1
  601. data/src/core/lib/{channel → transport}/handshaker.cc +12 -7
  602. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  603. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  604. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  605. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  606. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +28 -14
  607. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  608. data/src/core/lib/transport/metadata_batch.cc +287 -0
  609. data/src/core/lib/transport/metadata_batch.h +133 -264
  610. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  611. data/src/core/lib/transport/parsed_metadata.h +10 -3
  612. data/src/core/lib/transport/status_conversion.cc +2 -0
  613. data/src/core/lib/transport/status_conversion.h +2 -2
  614. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  615. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  616. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  617. data/src/core/lib/transport/timeout_encoding.h +5 -1
  618. data/src/core/lib/transport/transport.cc +18 -20
  619. data/src/core/lib/transport/transport.h +48 -16
  620. data/src/core/lib/transport/transport_fwd.h +20 -0
  621. data/src/core/lib/transport/transport_impl.h +11 -0
  622. data/src/core/lib/transport/transport_op_string.cc +17 -18
  623. data/src/core/lib/uri/uri_parser.cc +11 -3
  624. data/src/core/lib/uri/uri_parser.h +0 -2
  625. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  626. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  628. data/src/core/tsi/fake_transport_security.cc +13 -1
  629. data/src/core/tsi/fake_transport_security.h +6 -0
  630. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  631. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  632. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  633. data/src/core/tsi/ssl_transport_security.cc +1 -1
  634. data/src/core/tsi/transport_security_grpc.cc +3 -2
  635. data/src/core/tsi/transport_security_grpc.h +5 -2
  636. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  637. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  638. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  639. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  640. data/src/ruby/ext/grpc/extconf.rb +50 -19
  641. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  642. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  643. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  644. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  645. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  646. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  647. data/src/ruby/lib/grpc/errors.rb +1 -1
  648. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  649. data/src/ruby/lib/grpc/version.rb +1 -1
  650. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  651. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  652. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  653. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  654. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  655. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  656. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  657. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  658. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  659. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  660. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  661. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  662. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  663. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  664. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  665. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  666. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  667. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  668. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  669. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  670. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  671. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  672. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  673. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  674. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  675. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  676. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  677. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  678. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  679. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  680. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +510 -0
  681. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  682. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  683. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  684. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  685. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  686. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  687. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  688. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  689. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  690. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  691. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  692. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  693. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  694. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  695. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  696. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  697. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  698. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  699. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  700. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  701. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  702. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  703. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  704. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  705. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  706. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  707. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  708. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  709. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  710. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  711. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  712. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  713. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  714. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  715. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  716. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  717. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  718. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  719. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  720. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  721. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  722. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  723. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  724. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  725. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  726. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  727. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  728. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  729. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  730. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  731. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  732. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  733. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  734. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  735. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  736. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  737. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  738. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  739. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  740. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  741. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  742. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  743. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  744. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  745. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  746. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  747. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  748. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  749. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  750. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  751. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  752. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  753. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  754. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  755. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  756. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  757. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  758. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  759. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  760. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  761. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  762. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  763. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  764. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  765. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  766. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  767. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  768. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  769. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  770. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  771. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  772. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  773. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  774. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  775. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  776. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  777. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  778. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  779. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  780. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  781. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  782. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  783. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  784. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  785. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  786. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  787. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  788. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  789. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  790. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  791. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  792. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  793. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  794. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  795. metadata +69 -38
  796. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  797. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  798. data/src/core/lib/event_engine/sockaddr.h +0 -44
  799. data/src/core/lib/gprpp/capture.h +0 -76
  800. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  801. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  802. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  803. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  804. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  805. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  806. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  807. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  808. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  809. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  810. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  811. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
  812. data/src/core/lib/slice/slice_split.cc +0 -100
  813. data/src/core/lib/slice/slice_split.h +0 -40
  814. data/src/core/lib/transport/byte_stream.cc +0 -164
  815. data/src/core/lib/transport/byte_stream.h +0 -166
  816. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -18,17 +18,52 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <limits.h>
21
+ #include <inttypes.h>
22
+ #include <stddef.h>
22
23
 
24
+ #include <algorithm>
25
+ #include <string>
26
+
27
+ #include "absl/types/optional.h"
28
+
29
+ #include <grpc/slice.h>
30
+ #include <grpc/slice_buffer.h>
23
31
  #include <grpc/support/log.h>
24
32
 
33
+ // IWYU pragma: no_include "src/core/lib/gprpp/orphanable.h"
34
+
25
35
  #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h"
26
36
  #include "src/core/ext/transport/chttp2/transport/context_list.h"
37
+ #include "src/core/ext/transport/chttp2/transport/flow_control.h"
38
+ #include "src/core/ext/transport/chttp2/transport/frame.h"
39
+ #include "src/core/ext/transport/chttp2/transport/frame_data.h"
40
+ #include "src/core/ext/transport/chttp2/transport/frame_ping.h"
41
+ #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
42
+ #include "src/core/ext/transport/chttp2/transport/frame_settings.h"
43
+ #include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
44
+ #include "src/core/ext/transport/chttp2/transport/hpack_encoder.h"
45
+ #include "src/core/ext/transport/chttp2/transport/http2_settings.h"
27
46
  #include "src/core/ext/transport/chttp2/transport/internal.h"
47
+ #include "src/core/ext/transport/chttp2/transport/stream_map.h"
48
+ #include "src/core/lib/channel/channelz.h"
28
49
  #include "src/core/lib/debug/stats.h"
50
+ #include "src/core/lib/debug/trace.h"
51
+ #include "src/core/lib/gprpp/debug_location.h"
52
+ #include "src/core/lib/gprpp/ref_counted.h"
53
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
54
+ #include "src/core/lib/gprpp/time.h"
55
+ #include "src/core/lib/iomgr/closure.h"
56
+ #include "src/core/lib/iomgr/endpoint.h"
57
+ #include "src/core/lib/iomgr/error.h"
58
+ #include "src/core/lib/iomgr/exec_ctx.h"
59
+ #include "src/core/lib/iomgr/timer.h"
29
60
  #include "src/core/lib/profiling/timers.h"
61
+ #include "src/core/lib/slice/slice.h"
30
62
  #include "src/core/lib/slice/slice_internal.h"
63
+ #include "src/core/lib/transport/bdp_estimator.h"
31
64
  #include "src/core/lib/transport/http2_errors.h"
65
+ #include "src/core/lib/transport/metadata_batch.h"
66
+ #include "src/core/lib/transport/transport.h"
32
67
 
33
68
  static void add_to_write_list(grpc_chttp2_write_cb** list,
34
69
  grpc_chttp2_write_cb* cb) {
@@ -183,14 +218,14 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
183
218
  s->flow_controlled_buffer.length, s->flow_controlled_bytes_flowed,
184
219
  t->settings[GRPC_ACKED_SETTINGS]
185
220
  [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE],
186
- t->flow_control->remote_window(),
221
+ t->flow_control.remote_window(),
187
222
  static_cast<uint32_t>(std::max(
188
223
  int64_t(0),
189
- s->flow_control->remote_window_delta() +
224
+ s->flow_control.remote_window_delta() +
190
225
  static_cast<int64_t>(
191
226
  t->settings[GRPC_PEER_SETTINGS]
192
227
  [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE]))),
193
- s->flow_control->remote_window_delta());
228
+ s->flow_control.remote_window_delta());
194
229
  }
195
230
  }
196
231
 
@@ -226,7 +261,6 @@ static bool is_default_initial_metadata(grpc_metadata_batch* initial_metadata) {
226
261
  }
227
262
 
228
263
  namespace {
229
- class StreamWriteContext;
230
264
 
231
265
  class WriteContext {
232
266
  public:
@@ -268,7 +302,7 @@ class WriteContext {
268
302
 
269
303
  void FlushWindowUpdates() {
270
304
  uint32_t transport_announce =
271
- t_->flow_control->MaybeSendUpdate(t_->outbuf.count > 0);
305
+ t_->flow_control.MaybeSendUpdate(t_->outbuf.count > 0);
272
306
  if (transport_announce) {
273
307
  grpc_transport_one_way_stats throwaway_stats;
274
308
  grpc_slice_buffer_add(
@@ -295,7 +329,7 @@ class WriteContext {
295
329
  void UpdateStreamsNoLongerStalled() {
296
330
  grpc_chttp2_stream* s;
297
331
  while (grpc_chttp2_list_pop_stalled_by_transport(t_, &s)) {
298
- if (t_->closed_with_error == GRPC_ERROR_NONE &&
332
+ if (GRPC_ERROR_IS_NONE(t_->closed_with_error) &&
299
333
  grpc_chttp2_list_add_writable_stream(t_, s)) {
300
334
  if (!s->refcount->refs.RefIfNonZero()) {
301
335
  grpc_chttp2_list_remove_writable_stream(t_, s);
@@ -356,7 +390,7 @@ class DataSendContext {
356
390
  uint32_t stream_remote_window() const {
357
391
  return static_cast<uint32_t>(std::max(
358
392
  int64_t(0),
359
- s_->flow_control->remote_window_delta() +
393
+ s_->flow_control.remote_window_delta() +
360
394
  static_cast<int64_t>(
361
395
  t_->settings[GRPC_PEER_SETTINGS]
362
396
  [GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE])));
@@ -366,7 +400,7 @@ class DataSendContext {
366
400
  return static_cast<uint32_t>(std::min(
367
401
  t_->settings[GRPC_PEER_SETTINGS][GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE],
368
402
  static_cast<uint32_t>(std::min(int64_t(stream_remote_window()),
369
- t_->flow_control->remote_window()))));
403
+ t_->flow_control.remote_window()))));
370
404
  }
371
405
 
372
406
  bool AnyOutgoing() const { return max_outgoing() > 0; }
@@ -375,12 +409,11 @@ class DataSendContext {
375
409
  uint32_t send_bytes = static_cast<uint32_t>(
376
410
  std::min(size_t(max_outgoing()), s_->flow_controlled_buffer.length));
377
411
  is_last_frame_ = send_bytes == s_->flow_controlled_buffer.length &&
378
- s_->fetching_send_message == nullptr &&
379
412
  s_->send_trailing_metadata != nullptr &&
380
413
  s_->send_trailing_metadata->empty();
381
414
  grpc_chttp2_encode_data(s_->id, &s_->flow_controlled_buffer, send_bytes,
382
415
  is_last_frame_, &s_->stats.outgoing, &t_->outbuf);
383
- s_->flow_control->SentData(send_bytes);
416
+ sfc_upd_.SentData(send_bytes);
384
417
  s_->sending_bytes += send_bytes;
385
418
  }
386
419
 
@@ -400,6 +433,8 @@ class DataSendContext {
400
433
  WriteContext* write_context_;
401
434
  grpc_chttp2_transport* t_;
402
435
  grpc_chttp2_stream* s_;
436
+ grpc_core::chttp2::StreamFlowControl::OutgoingUpdateContext sfc_upd_{
437
+ &s_->flow_control};
403
438
  const size_t sending_bytes_before_;
404
439
  bool is_last_frame_ = false;
405
440
  };
@@ -409,11 +444,9 @@ class StreamWriteContext {
409
444
  StreamWriteContext(WriteContext* write_context, grpc_chttp2_stream* s)
410
445
  : write_context_(write_context), t_(write_context->transport()), s_(s) {
411
446
  GRPC_CHTTP2_IF_TRACING(
412
- gpr_log(GPR_INFO, "W:%p %s[%d] im-(sent,send)=(%d,%d) announce=%d", t_,
447
+ gpr_log(GPR_INFO, "W:%p %s[%d] im-(sent,send)=(%d,%d)", t_,
413
448
  t_->is_client ? "CLIENT" : "SERVER", s->id,
414
- s->sent_initial_metadata, s->send_initial_metadata != nullptr,
415
- (int)(s->flow_control->local_window_delta() -
416
- s->flow_control->announced_window_delta())));
449
+ s->sent_initial_metadata, s->send_initial_metadata != nullptr));
417
450
  }
418
451
 
419
452
  void FlushInitialMetadata() {
@@ -426,8 +459,7 @@ class StreamWriteContext {
426
459
  // trailing metadata. This results in a Trailers-Only response,
427
460
  // which is required for retries, as per:
428
461
  // https://github.com/grpc/proposal/blob/master/A6-client-retries.md#when-retries-are-valid
429
- if (!t_->is_client && s_->fetching_send_message == nullptr &&
430
- s_->flow_controlled_buffer.length == 0 &&
462
+ if (!t_->is_client && s_->flow_controlled_buffer.length == 0 &&
431
463
  s_->send_trailing_metadata != nullptr &&
432
464
  is_default_initial_metadata(s_->send_initial_metadata)) {
433
465
  ConvertInitialMetadataToTrailingMetadata();
@@ -459,8 +491,10 @@ class StreamWriteContext {
459
491
  }
460
492
 
461
493
  void FlushWindowUpdates() {
494
+ if (s_->read_closed) return;
495
+
462
496
  /* send any window updates */
463
- const uint32_t stream_announce = s_->flow_control->MaybeSendUpdate();
497
+ const uint32_t stream_announce = s_->flow_control.MaybeSendUpdate();
464
498
  if (stream_announce == 0) return;
465
499
 
466
500
  grpc_slice_buffer_add(
@@ -480,7 +514,7 @@ class StreamWriteContext {
480
514
  DataSendContext data_send_context(write_context_, t_, s_);
481
515
 
482
516
  if (!data_send_context.AnyOutgoing()) {
483
- if (t_->flow_control->remote_window() <= 0) {
517
+ if (t_->flow_control.remote_window() <= 0) {
484
518
  report_stall(t_, s_, "transport");
485
519
  grpc_chttp2_list_add_stalled_by_transport(t_, s_);
486
520
  } else if (data_send_context.stream_remote_window() <= 0) {
@@ -511,7 +545,6 @@ class StreamWriteContext {
511
545
  if (!s_->sent_initial_metadata) return;
512
546
 
513
547
  if (s_->send_trailing_metadata == nullptr) return;
514
- if (s_->fetching_send_message != nullptr) return;
515
548
  if (s_->flow_controlled_buffer.length != 0) return;
516
549
 
517
550
  GRPC_CHTTP2_IF_TRACING(gpr_log(GPR_INFO, "sending trailing_metadata"));
@@ -599,7 +632,7 @@ grpc_chttp2_begin_write_result grpc_chttp2_begin_write(
599
632
  ctx.FlushQueuedBuffers();
600
633
  ctx.EnactHpackSettings();
601
634
 
602
- if (t->flow_control->remote_window() > 0) {
635
+ if (t->flow_control.remote_window() > 0) {
603
636
  ctx.UpdateStreamsNoLongerStalled();
604
637
  }
605
638
 
@@ -18,7 +18,6 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/ext/transport/inproc/inproc_transport.h"
22
21
  #include "src/core/lib/debug/trace.h"
23
22
 
24
23
  grpc_core::TraceFlag grpc_inproc_trace(false, "inproc");
@@ -20,22 +20,53 @@
20
20
 
21
21
  #include "src/core/ext/transport/inproc/inproc_transport.h"
22
22
 
23
- #include <string.h>
24
-
23
+ #include <stdint.h>
24
+
25
+ #include <algorithm>
26
+ #include <memory>
27
+ #include <new>
28
+ #include <string>
29
+ #include <utility>
30
+
31
+ #include "absl/status/status.h"
32
+ #include "absl/status/statusor.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"
37
+
38
+ #include <grpc/grpc.h>
39
+ #include <grpc/impl/codegen/connectivity_state.h>
40
+ #include <grpc/status.h>
25
41
  #include <grpc/support/alloc.h>
26
- #include <grpc/support/string_util.h>
42
+ #include <grpc/support/log.h>
27
43
  #include <grpc/support/sync.h>
28
- #include <grpc/support/time.h>
29
44
 
30
45
  #include "src/core/lib/channel/channel_args.h"
31
- #include "src/core/lib/gprpp/manual_constructor.h"
32
- #include "src/core/lib/resource_quota/api.h"
33
- #include "src/core/lib/slice/slice_internal.h"
46
+ #include "src/core/lib/channel/channel_args_preconditioning.h"
47
+ #include "src/core/lib/channel/channelz.h"
48
+ #include "src/core/lib/config/core_configuration.h"
49
+ #include "src/core/lib/gpr/useful.h"
50
+ #include "src/core/lib/gprpp/debug_location.h"
51
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
52
+ #include "src/core/lib/gprpp/time.h"
53
+ #include "src/core/lib/iomgr/closure.h"
54
+ #include "src/core/lib/iomgr/endpoint.h"
55
+ #include "src/core/lib/iomgr/error.h"
56
+ #include "src/core/lib/iomgr/exec_ctx.h"
57
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
58
+ #include "src/core/lib/iomgr/pollset.h"
59
+ #include "src/core/lib/resource_quota/arena.h"
60
+ #include "src/core/lib/slice/slice.h"
61
+ #include "src/core/lib/slice/slice_buffer.h"
34
62
  #include "src/core/lib/surface/api_trace.h"
35
63
  #include "src/core/lib/surface/channel.h"
64
+ #include "src/core/lib/surface/channel_stack_type.h"
36
65
  #include "src/core/lib/surface/server.h"
37
66
  #include "src/core/lib/transport/connectivity_state.h"
38
- #include "src/core/lib/transport/error_utils.h"
67
+ #include "src/core/lib/transport/metadata_batch.h"
68
+ #include "src/core/lib/transport/transport.h"
69
+ #include "src/core/lib/transport/transport_fwd.h"
39
70
  #include "src/core/lib/transport/transport_impl.h"
40
71
 
41
72
  #define INPROC_LOG(...) \
@@ -56,6 +87,10 @@ void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
56
87
  uint32_t flags, grpc_metadata_batch* out_md,
57
88
  uint32_t* outflags, bool* markfilled);
58
89
 
90
+ void ResetSendMessage(grpc_transport_stream_op_batch* batch) {
91
+ absl::exchange(batch->payload->send_message.send_message, nullptr)->Clear();
92
+ }
93
+
59
94
  struct shared_mu {
60
95
  shared_mu() {
61
96
  // Share one lock between both sides since both sides get affected
@@ -175,7 +210,7 @@ struct inproc_stream {
175
210
  cs->write_buffer_trailing_md.Clear();
176
211
  cs->write_buffer_trailing_md_filled = false;
177
212
  }
178
- if (cs->write_buffer_cancel_error != GRPC_ERROR_NONE) {
213
+ if (!GRPC_ERROR_IS_NONE(cs->write_buffer_cancel_error)) {
179
214
  cancel_other_error = cs->write_buffer_cancel_error;
180
215
  cs->write_buffer_cancel_error = GRPC_ERROR_NONE;
181
216
  maybe_process_ops_locked(this, cancel_other_error);
@@ -190,10 +225,6 @@ struct inproc_stream {
190
225
  GRPC_ERROR_UNREF(cancel_self_error);
191
226
  GRPC_ERROR_UNREF(cancel_other_error);
192
227
 
193
- if (recv_inited) {
194
- grpc_slice_buffer_destroy_internal(&recv_message);
195
- }
196
-
197
228
  t->unref();
198
229
  }
199
230
 
@@ -247,10 +278,6 @@ struct inproc_stream {
247
278
  grpc_transport_stream_op_batch* recv_message_op = nullptr;
248
279
  grpc_transport_stream_op_batch* recv_trailing_md_op = nullptr;
249
280
 
250
- grpc_slice_buffer recv_message;
251
- grpc_core::ManualConstructor<grpc_core::SliceBufferByteStream> recv_stream;
252
- bool recv_inited = false;
253
-
254
281
  bool initial_md_sent = false;
255
282
  bool trailing_md_sent = false;
256
283
  bool initial_md_recvd = false;
@@ -324,8 +351,8 @@ void fill_in_metadata(inproc_stream* s, const grpc_metadata_batch* metadata,
324
351
  }
325
352
 
326
353
  // TODO(ctiller): copy the metadata batch, don't rely on a bespoke copy
327
- // function. Can only do this once mdelems are out of the way though, too many
328
- // edge cases otherwise.
354
+ // function. Can only do this once mdelems are out of the way though, too
355
+ // many edge cases otherwise.
329
356
  out_md->Clear();
330
357
  CopySink sink(out_md);
331
358
  metadata->Encode(&sink);
@@ -406,7 +433,7 @@ void complete_if_batch_end_locked(inproc_stream* s, grpc_error_handle error,
406
433
  }
407
434
 
408
435
  void maybe_process_ops_locked(inproc_stream* s, grpc_error_handle error) {
409
- if (s && (error != GRPC_ERROR_NONE || s->ops_needed)) {
436
+ if (s && (!GRPC_ERROR_IS_NONE(error) || s->ops_needed)) {
410
437
  s->ops_needed = false;
411
438
  op_state_machine_locked(s, error);
412
439
  }
@@ -430,19 +457,19 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
430
457
  (void)fill_in_metadata(s, &fake_md, 0, dest, nullptr, destfilled);
431
458
 
432
459
  if (other != nullptr) {
433
- if (other->cancel_other_error == GRPC_ERROR_NONE) {
460
+ if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
434
461
  other->cancel_other_error = GRPC_ERROR_REF(error);
435
462
  }
436
463
  maybe_process_ops_locked(other, error);
437
- } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
464
+ } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
438
465
  s->write_buffer_cancel_error = GRPC_ERROR_REF(error);
439
466
  }
440
467
  }
441
468
  if (s->recv_initial_md_op) {
442
469
  grpc_error_handle err;
443
470
  if (!s->t->is_client) {
444
- // If this is a server, provide initial metadata with a path and authority
445
- // since it expects that as well as no error yet
471
+ // If this is a server, provide initial metadata with a path and
472
+ // authority since it expects that as well as no error yet
446
473
  grpc_metadata_batch fake_md(s->arena);
447
474
  fake_md.Set(grpc_core::HttpPathMetadata(),
448
475
  grpc_core::Slice::FromStaticString("/"));
@@ -501,7 +528,7 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
501
528
  s->recv_message_op = nullptr;
502
529
  }
503
530
  if (s->send_message_op) {
504
- s->send_message_op->payload->send_message.send_message.reset();
531
+ ResetSendMessage(s->send_message_op);
505
532
  complete_if_batch_end_locked(
506
533
  s, error, s->send_message_op,
507
534
  "fail_helper scheduling send-message-on-complete");
@@ -543,35 +570,11 @@ void fail_helper_locked(inproc_stream* s, grpc_error_handle error) {
543
570
  // synchronously. That assumption is true today but may not always be
544
571
  // true in the future.
545
572
  void message_transfer_locked(inproc_stream* sender, inproc_stream* receiver) {
546
- size_t remaining =
547
- sender->send_message_op->payload->send_message.send_message->length();
548
- if (receiver->recv_inited) {
549
- grpc_slice_buffer_destroy_internal(&receiver->recv_message);
550
- }
551
- grpc_slice_buffer_init(&receiver->recv_message);
552
- receiver->recv_inited = true;
553
- do {
554
- grpc_slice message_slice;
555
- grpc_closure unused;
556
- GPR_ASSERT(
557
- sender->send_message_op->payload->send_message.send_message->Next(
558
- SIZE_MAX, &unused));
559
- grpc_error_handle error =
560
- sender->send_message_op->payload->send_message.send_message->Pull(
561
- &message_slice);
562
- if (error != GRPC_ERROR_NONE) {
563
- cancel_stream_locked(sender, GRPC_ERROR_REF(error));
564
- break;
565
- }
566
- GPR_ASSERT(error == GRPC_ERROR_NONE);
567
- remaining -= GRPC_SLICE_LENGTH(message_slice);
568
- grpc_slice_buffer_add(&receiver->recv_message, message_slice);
569
- } while (remaining > 0);
570
- sender->send_message_op->payload->send_message.send_message.reset();
571
-
572
- receiver->recv_stream.Init(&receiver->recv_message, 0);
573
- receiver->recv_message_op->payload->recv_message.recv_message->reset(
574
- receiver->recv_stream.get());
573
+ *receiver->recv_message_op->payload->recv_message.recv_message =
574
+ std::move(*sender->send_message_op->payload->send_message.send_message);
575
+ *receiver->recv_message_op->payload->recv_message.flags =
576
+ sender->send_message_op->payload->send_message.flags;
577
+
575
578
  INPROC_LOG(GPR_INFO, "message_transfer_locked %p scheduling message-ready",
576
579
  receiver);
577
580
  grpc_core::ExecCtx::Run(
@@ -603,13 +606,13 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
603
606
  // cancellation takes precedence
604
607
  inproc_stream* other = s->other_side;
605
608
 
606
- if (s->cancel_self_error != GRPC_ERROR_NONE) {
609
+ if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
607
610
  fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_self_error));
608
611
  goto done;
609
- } else if (s->cancel_other_error != GRPC_ERROR_NONE) {
612
+ } else if (!GRPC_ERROR_IS_NONE(s->cancel_other_error)) {
610
613
  fail_helper_locked(s, GRPC_ERROR_REF(s->cancel_other_error));
611
614
  goto done;
612
- } else if (error != GRPC_ERROR_NONE) {
615
+ } else if (!GRPC_ERROR_IS_NONE(error)) {
613
616
  fail_helper_locked(s, GRPC_ERROR_REF(error));
614
617
  goto done;
615
618
  }
@@ -620,7 +623,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
620
623
  maybe_process_ops_locked(other, GRPC_ERROR_NONE);
621
624
  } else if (!s->t->is_client && s->trailing_md_sent) {
622
625
  // A server send will never be matched if the server already sent status
623
- s->send_message_op->payload->send_message.send_message.reset();
626
+ ResetSendMessage(s->send_message_op);
624
627
  complete_if_batch_end_locked(
625
628
  s, GRPC_ERROR_NONE, s->send_message_op,
626
629
  "op_state_machine scheduling send-message-on-complete case 1");
@@ -761,7 +764,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
761
764
  if (s->recv_message_op != nullptr) {
762
765
  // This message needs to be wrapped up because it will never be
763
766
  // satisfied
764
- *s->recv_message_op->payload->recv_message.recv_message = nullptr;
767
+ s->recv_message_op->payload->recv_message.recv_message->reset();
765
768
  INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
766
769
  grpc_core::ExecCtx::Run(
767
770
  DEBUG_LOCATION,
@@ -775,7 +778,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
775
778
  if ((s->trailing_md_sent || s->t->is_client) && s->send_message_op) {
776
779
  // Nothing further will try to receive from this stream, so finish off
777
780
  // any outstanding send_message op
778
- s->send_message_op->payload->send_message.send_message.reset();
781
+ ResetSendMessage(s->send_message_op);
779
782
  s->send_message_op->payload->send_message.stream_write_closed = true;
780
783
  complete_if_batch_end_locked(
781
784
  s, new_err, s->send_message_op,
@@ -795,7 +798,8 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
795
798
  // We should schedule the recv_trailing_md_op completion if
796
799
  // 1. this stream is the client-side
797
800
  // 2. this stream is the server-side AND has already sent its trailing md
798
- // (If the server hasn't already sent its trailing md, it doesn't have
801
+ // (If the server hasn't already sent its trailing md, it doesn't
802
+ // have
799
803
  // a final status, so don't mark this op complete)
800
804
  if (s->t->is_client || s->trailing_md_sent) {
801
805
  grpc_core::ExecCtx::Run(
@@ -840,7 +844,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
840
844
  // No further message will come on this stream, so finish off the
841
845
  // recv_message_op
842
846
  INPROC_LOG(GPR_INFO, "op_state_machine %p scheduling message-ready", s);
843
- *s->recv_message_op->payload->recv_message.recv_message = nullptr;
847
+ s->recv_message_op->payload->recv_message.recv_message->reset();
844
848
  grpc_core::ExecCtx::Run(
845
849
  DEBUG_LOCATION,
846
850
  s->recv_message_op->payload->recv_message.recv_message_ready,
@@ -853,7 +857,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error_handle error) {
853
857
  if (s->trailing_md_recvd && s->send_message_op && s->t->is_client) {
854
858
  // Nothing further will try to receive from this stream, so finish off
855
859
  // any outstanding send_message op
856
- s->send_message_op->payload->send_message.send_message.reset();
860
+ ResetSendMessage(s->send_message_op);
857
861
  complete_if_batch_end_locked(
858
862
  s, new_err, s->send_message_op,
859
863
  "op_state_machine scheduling send-message-on-complete case 3");
@@ -881,7 +885,7 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
881
885
  bool ret = false; // was the cancel accepted
882
886
  INPROC_LOG(GPR_INFO, "cancel_stream %p with %s", s,
883
887
  grpc_error_std_string(error).c_str());
884
- if (s->cancel_self_error == GRPC_ERROR_NONE) {
888
+ if (GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
885
889
  ret = true;
886
890
  s->cancel_self_error = GRPC_ERROR_REF(error);
887
891
  // Catch current value of other before it gets closed off
@@ -901,11 +905,11 @@ bool cancel_stream_locked(inproc_stream* s, grpc_error_handle error) {
901
905
  (void)fill_in_metadata(s, &cancel_md, 0, dest, nullptr, destfilled);
902
906
 
903
907
  if (other != nullptr) {
904
- if (other->cancel_other_error == GRPC_ERROR_NONE) {
908
+ if (GRPC_ERROR_IS_NONE(other->cancel_other_error)) {
905
909
  other->cancel_other_error = GRPC_ERROR_REF(s->cancel_self_error);
906
910
  }
907
911
  maybe_process_ops_locked(other, other->cancel_other_error);
908
- } else if (s->write_buffer_cancel_error == GRPC_ERROR_NONE) {
912
+ } else if (GRPC_ERROR_IS_NONE(s->write_buffer_cancel_error)) {
909
913
  s->write_buffer_cancel_error = GRPC_ERROR_REF(s->cancel_self_error);
910
914
  }
911
915
 
@@ -968,7 +972,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
968
972
  // this function is responsible to make sure that that field gets unref'ed
969
973
  cancel_stream_locked(s, op->payload->cancel_stream.cancel_error);
970
974
  // this op can complete without an error
971
- } else if (s->cancel_self_error != GRPC_ERROR_NONE) {
975
+ } else if (!GRPC_ERROR_IS_NONE(s->cancel_self_error)) {
972
976
  // already self-canceled so still give it an error
973
977
  error = GRPC_ERROR_REF(s->cancel_self_error);
974
978
  } else {
@@ -983,12 +987,12 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
983
987
  }
984
988
 
985
989
  inproc_stream* other = s->other_side;
986
- if (error == GRPC_ERROR_NONE &&
990
+ if (GRPC_ERROR_IS_NONE(error) &&
987
991
  (op->send_initial_metadata || op->send_trailing_metadata)) {
988
992
  if (s->t->is_closed) {
989
993
  error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("Endpoint already shutdown");
990
994
  }
991
- if (error == GRPC_ERROR_NONE && op->send_initial_metadata) {
995
+ if (GRPC_ERROR_IS_NONE(error) && op->send_initial_metadata) {
992
996
  grpc_metadata_batch* dest = (other == nullptr)
993
997
  ? &s->write_buffer_initial_md
994
998
  : &other->to_read_initial_md;
@@ -1022,7 +1026,7 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1022
1026
  }
1023
1027
  }
1024
1028
 
1025
- if (error == GRPC_ERROR_NONE &&
1029
+ if (GRPC_ERROR_IS_NONE(error) &&
1026
1030
  (op->send_message || op->send_trailing_metadata ||
1027
1031
  op->recv_initial_metadata || op->recv_message ||
1028
1032
  op->recv_trailing_metadata)) {
@@ -1062,11 +1066,11 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1062
1066
  s->ops_needed = true;
1063
1067
  }
1064
1068
  } else {
1065
- if (error != GRPC_ERROR_NONE) {
1066
- // Consume any send message that was sent here but that we are not pushing
1067
- // to the other side
1069
+ if (!GRPC_ERROR_IS_NONE(error)) {
1070
+ // Consume any send message that was sent here but that we are not
1071
+ // pushing to the other side
1068
1072
  if (op->send_message) {
1069
- op->payload->send_message.send_message.reset();
1073
+ ResetSendMessage(op);
1070
1074
  }
1071
1075
  // Schedule op's closures that we didn't push to op state machine
1072
1076
  if (op->recv_initial_metadata) {
@@ -1102,10 +1106,10 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1102
1106
  GRPC_ERROR_REF(error));
1103
1107
  }
1104
1108
  if (op->recv_trailing_metadata) {
1105
- INPROC_LOG(
1106
- GPR_INFO,
1107
- "perform_stream_op error %p scheduling trailing-metadata-ready %s",
1108
- s, grpc_error_std_string(error).c_str());
1109
+ INPROC_LOG(GPR_INFO,
1110
+ "perform_stream_op error %p scheduling "
1111
+ "trailing-metadata-ready %s",
1112
+ s, grpc_error_std_string(error).c_str());
1109
1113
  grpc_core::ExecCtx::Run(
1110
1114
  DEBUG_LOCATION,
1111
1115
  op->payload->recv_trailing_metadata.recv_trailing_metadata_ready,
@@ -1158,11 +1162,11 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1158
1162
  }
1159
1163
 
1160
1164
  bool do_close = false;
1161
- if (op->goaway_error != GRPC_ERROR_NONE) {
1165
+ if (!GRPC_ERROR_IS_NONE(op->goaway_error)) {
1162
1166
  do_close = true;
1163
1167
  GRPC_ERROR_UNREF(op->goaway_error);
1164
1168
  }
1165
- if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1169
+ if (!GRPC_ERROR_IS_NONE(op->disconnect_with_error)) {
1166
1170
  do_close = true;
1167
1171
  GRPC_ERROR_UNREF(op->disconnect_with_error);
1168
1172
  }
@@ -1264,7 +1268,8 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1264
1268
  args = grpc_channel_args_copy_and_add(args, &default_authority_arg, 1);
1265
1269
  const grpc_channel_args* client_args = grpc_core::CoreConfiguration::Get()
1266
1270
  .channel_args_preconditioning()
1267
- .PreconditionChannelArgs(args);
1271
+ .PreconditionChannelArgs(args)
1272
+ .ToC();
1268
1273
  grpc_channel_args_destroy(args);
1269
1274
  grpc_transport* server_transport;
1270
1275
  grpc_transport* client_transport;
@@ -1275,11 +1280,11 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1275
1280
  grpc_error_handle error = core_server->SetupTransport(
1276
1281
  server_transport, nullptr, server_args, nullptr);
1277
1282
  grpc_channel* channel = nullptr;
1278
- if (error == GRPC_ERROR_NONE) {
1279
- channel = grpc_channel_create_internal("inproc", client_args,
1280
- GRPC_CLIENT_DIRECT_CHANNEL,
1281
- client_transport, &error);
1282
- if (error != GRPC_ERROR_NONE) {
1283
+ if (GRPC_ERROR_IS_NONE(error)) {
1284
+ auto new_channel = grpc_core::Channel::Create(
1285
+ "inproc", grpc_core::ChannelArgs::FromC(client_args),
1286
+ GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1287
+ if (!new_channel.ok()) {
1283
1288
  GPR_ASSERT(!channel);
1284
1289
  gpr_log(GPR_ERROR, "Failed to create client channel: %s",
1285
1290
  grpc_error_std_string(error).c_str());
@@ -1294,6 +1299,8 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1294
1299
  grpc_transport_destroy(server_transport);
1295
1300
  channel = grpc_lame_client_channel_create(
1296
1301
  nullptr, status, "Failed to create client channel");
1302
+ } else {
1303
+ channel = new_channel->release()->c_ptr();
1297
1304
  }
1298
1305
  } else {
1299
1306
  GPR_ASSERT(!channel);
@@ -21,7 +21,9 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "src/core/lib/transport/transport_impl.h"
24
+ #include <grpc/impl/codegen/grpc_types.h>
25
+
26
+ #include "src/core/lib/debug/trace.h"
25
27
 
26
28
  grpc_channel* grpc_inproc_channel_create(grpc_server* server,
27
29
  const grpc_channel_args* args,
@@ -0,0 +1,52 @@
1
+ /* This file was generated by upbc (the upb compiler) from the input
2
+ * file:
3
+ *
4
+ * envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.proto
5
+ *
6
+ * Do not edit -- your changes will be discarded when the file is
7
+ * regenerated. */
8
+
9
+ #include <stddef.h>
10
+ #include "upb/msg_internal.h"
11
+ #include "envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h"
12
+ #include "google/protobuf/wrappers.upb.h"
13
+ #include "udpa/annotations/status.upb.h"
14
+ #include "validate/validate.upb.h"
15
+
16
+ #include "upb/port_def.inc"
17
+
18
+ static const upb_MiniTable_Sub envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_submsgs[3] = {
19
+ {.submsg = &google_protobuf_UInt64Value_msginit},
20
+ {.submsg = &google_protobuf_UInt64Value_msginit},
21
+ {.submsg = &google_protobuf_UInt32Value_msginit},
22
+ };
23
+
24
+ static const upb_MiniTable_Field envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash__fields[5] = {
25
+ {1, UPB_SIZE(4, 4), UPB_SIZE(0, 0), kUpb_NoSub, 5, kUpb_FieldMode_Scalar | (kUpb_FieldRep_4Byte << kUpb_FieldRep_Shift)},
26
+ {2, UPB_SIZE(12, 16), UPB_SIZE(1, 1), 0, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
27
+ {3, UPB_SIZE(16, 24), UPB_SIZE(2, 2), 1, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
28
+ {4, UPB_SIZE(8, 8), UPB_SIZE(0, 0), kUpb_NoSub, 8, kUpb_FieldMode_Scalar | (kUpb_FieldRep_1Byte << kUpb_FieldRep_Shift)},
29
+ {5, UPB_SIZE(20, 32), UPB_SIZE(3, 3), 2, 11, kUpb_FieldMode_Scalar | (kUpb_FieldRep_Pointer << kUpb_FieldRep_Shift)},
30
+ };
31
+
32
+ const upb_MiniTable envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit = {
33
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_submsgs[0],
34
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash__fields[0],
35
+ UPB_SIZE(24, 40), 5, kUpb_ExtMode_NonExtendable, 5, 255, 0,
36
+ };
37
+
38
+ static const upb_MiniTable *messages_layout[1] = {
39
+ &envoy_extensions_load_balancing_policies_ring_hash_v3_RingHash_msginit,
40
+ };
41
+
42
+ const upb_MiniTable_File envoy_extensions_load_balancing_policies_ring_hash_v3_ring_hash_proto_upb_file_layout = {
43
+ messages_layout,
44
+ NULL,
45
+ NULL,
46
+ 1,
47
+ 0,
48
+ 0,
49
+ };
50
+
51
+ #include "upb/port_undef.inc"
52
+