grpc 1.46.3-x86_64-linux → 1.47.0-x86_64-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (487) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +49 -97
  3. data/include/grpc/event_engine/event_engine.h +42 -7
  4. data/include/grpc/event_engine/memory_allocator.h +0 -15
  5. data/include/grpc/event_engine/port.h +1 -1
  6. data/include/grpc/event_engine/slice.h +286 -0
  7. data/include/grpc/event_engine/slice_buffer.h +112 -0
  8. data/include/grpc/grpc_security.h +11 -0
  9. data/include/grpc/impl/codegen/port_platform.h +100 -36
  10. data/include/grpc/impl/codegen/slice.h +1 -1
  11. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +18 -30
  12. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +4 -1
  13. data/src/core/ext/filters/client_channel/backend_metric.cc +17 -12
  14. data/src/core/ext/filters/client_channel/backend_metric.h +19 -9
  15. data/src/core/ext/filters/client_channel/backup_poller.cc +5 -5
  16. data/src/core/ext/filters/client_channel/backup_poller.h +2 -4
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +42 -20
  18. data/src/core/ext/filters/client_channel/client_channel.cc +60 -17
  19. data/src/core/ext/filters/client_channel/client_channel.h +26 -6
  20. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +3 -5
  21. data/src/core/ext/filters/client_channel/client_channel_channelz.h +12 -2
  22. data/src/core/ext/filters/client_channel/client_channel_factory.cc +5 -0
  23. data/src/core/ext/filters/client_channel/client_channel_factory.h +8 -0
  24. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -13
  25. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  26. data/src/core/ext/filters/client_channel/config_selector.h +7 -5
  27. data/src/core/ext/filters/client_channel/connector.h +8 -2
  28. data/src/core/ext/filters/client_channel/dynamic_filters.cc +13 -2
  29. data/src/core/ext/filters/client_channel/dynamic_filters.h +11 -1
  30. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +2 -0
  31. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +3 -0
  32. data/src/core/ext/filters/client_channel/health/health_check_client.cc +14 -1
  33. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -0
  34. data/src/core/ext/filters/client_channel/http_proxy.cc +10 -2
  35. data/src/core/ext/filters/client_channel/http_proxy.h +3 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +6 -2
  37. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +1 -0
  38. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  39. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +12 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +9 -3
  42. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -19
  43. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +4 -0
  44. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +6 -0
  45. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +10 -1
  46. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +6 -3
  47. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
  48. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
  50. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +60 -52
  52. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +102 -60
  53. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +157 -96
  54. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +2 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +45 -10
  56. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -171
  57. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +39 -36
  58. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +30 -5
  59. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +99 -23
  60. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +6 -0
  61. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -4
  62. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +23 -3
  63. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +75 -11
  64. data/src/core/ext/filters/client_channel/lb_policy.cc +4 -2
  65. data/src/core/ext/filters/client_channel/lb_policy.h +18 -24
  66. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -0
  67. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
  68. data/src/core/ext/filters/client_channel/lb_policy_registry.h +6 -1
  69. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  70. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +1 -0
  71. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  72. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  73. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  74. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +23 -5
  75. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +134 -43
  76. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -1
  77. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +10 -8
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +26 -9
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +13 -4
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +2 -1
  82. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  83. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  84. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +30 -7
  85. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +13 -14
  86. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +5 -2
  87. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +59 -13
  88. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +13 -1
  89. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -1
  90. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +15 -11
  91. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +89 -33
  92. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +5 -11
  93. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +11 -5
  94. data/src/core/ext/filters/client_channel/retry_filter.cc +42 -2
  95. data/src/core/ext/filters/client_channel/retry_service_config.cc +8 -9
  96. data/src/core/ext/filters/client_channel/retry_service_config.h +10 -1
  97. data/src/core/ext/filters/client_channel/retry_throttle.cc +1 -8
  98. data/src/core/ext/filters/client_channel/retry_throttle.h +7 -1
  99. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +22 -5
  100. data/src/core/ext/filters/client_channel/subchannel.cc +156 -160
  101. data/src/core/ext/filters/client_channel/subchannel.h +80 -20
  102. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
  103. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  104. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +12 -2
  105. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -3
  106. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +16 -2
  107. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +12 -0
  108. data/src/core/ext/filters/deadline/deadline_filter.cc +6 -2
  109. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -4
  110. data/src/core/ext/filters/http/client/http_client_filter.cc +14 -5
  111. data/src/core/ext/filters/http/client/http_client_filter.h +7 -1
  112. data/src/core/ext/filters/http/client_authority_filter.cc +5 -10
  113. data/src/core/ext/filters/http/http_filters_plugin.cc +7 -8
  114. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +1 -0
  115. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +3 -1
  116. data/src/core/ext/filters/http/server/http_server_filter.cc +80 -247
  117. data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
  118. data/src/core/ext/filters/message_size/message_size_filter.cc +20 -26
  119. data/src/core/ext/filters/message_size/message_size_filter.h +2 -2
  120. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -0
  121. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +101 -135
  122. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +9 -7
  123. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -15
  124. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -0
  125. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -3
  126. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -1
  127. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +1 -0
  128. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +69 -20
  129. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +5 -0
  130. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -0
  131. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -1
  132. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -2
  133. data/src/core/ext/transport/chttp2/transport/flow_control.h +6 -2
  134. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  135. data/src/core/ext/transport/chttp2/transport/frame_data.cc +7 -1
  136. data/src/core/ext/transport/chttp2/transport/frame_data.h +4 -1
  137. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +3 -0
  138. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +3 -1
  139. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -0
  140. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -0
  141. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +6 -2
  142. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +3 -0
  143. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +12 -3
  144. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -0
  145. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -1
  146. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -0
  147. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +14 -12
  148. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +15 -2
  149. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +3 -0
  150. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +3 -0
  151. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -7
  152. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  153. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +55 -37
  154. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +38 -21
  155. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  156. data/src/core/ext/transport/chttp2/transport/internal.h +24 -3
  157. data/src/core/ext/transport/chttp2/transport/parsing.cc +27 -6
  158. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +13 -9
  159. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  160. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  161. data/src/core/ext/transport/chttp2/transport/varint.h +2 -0
  162. data/src/core/ext/transport/chttp2/transport/writing.cc +38 -2
  163. data/src/core/ext/transport/inproc/inproc_transport.cc +8 -5
  164. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  165. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  166. data/src/core/ext/xds/certificate_provider_store.cc +4 -2
  167. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  168. data/src/core/ext/xds/xds_certificate_provider.cc +4 -1
  169. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  170. data/src/core/ext/xds/xds_channel_stack_modifier.cc +5 -5
  171. data/src/core/ext/xds/xds_client.cc +46 -22
  172. data/src/core/ext/xds/xds_cluster.cc +106 -16
  173. data/src/core/ext/xds/xds_cluster.h +3 -0
  174. data/src/core/ext/xds/xds_http_fault_filter.cc +3 -3
  175. data/src/core/ext/xds/xds_listener.cc +19 -9
  176. data/src/core/ext/xds/xds_server_config_fetcher.cc +2 -1
  177. data/src/core/lib/address_utils/sockaddr_utils.cc +56 -23
  178. data/src/core/lib/address_utils/sockaddr_utils.h +7 -4
  179. data/src/core/lib/avl/avl.h +3 -1
  180. data/src/core/lib/channel/call_finalization.h +4 -0
  181. data/src/core/lib/channel/call_tracer.h +8 -2
  182. data/src/core/lib/channel/channel_args.cc +41 -22
  183. data/src/core/lib/channel/channel_args.h +33 -3
  184. data/src/core/lib/channel/channel_args_preconditioning.cc +3 -3
  185. data/src/core/lib/channel/channel_args_preconditioning.h +3 -2
  186. data/src/core/lib/channel/channel_stack.cc +41 -3
  187. data/src/core/lib/channel/channel_stack.h +49 -3
  188. data/src/core/lib/channel/channel_stack_builder.cc +9 -19
  189. data/src/core/lib/channel/channel_stack_builder.h +15 -27
  190. data/src/core/lib/channel/channel_stack_builder_impl.cc +36 -41
  191. data/src/core/lib/channel/channel_stack_builder_impl.h +3 -6
  192. data/src/core/lib/channel/channel_trace.cc +8 -13
  193. data/src/core/lib/channel/channel_trace.h +6 -3
  194. data/src/core/lib/channel/channelz.cc +8 -13
  195. data/src/core/lib/channel/channelz.h +13 -4
  196. data/src/core/lib/channel/channelz_registry.cc +7 -14
  197. data/src/core/lib/channel/channelz_registry.h +10 -9
  198. data/src/core/lib/channel/connected_channel.cc +21 -31
  199. data/src/core/lib/channel/connected_channel.h +1 -0
  200. data/src/core/lib/channel/promise_based_filter.cc +444 -189
  201. data/src/core/lib/channel/promise_based_filter.h +160 -27
  202. data/src/core/lib/channel/status_util.cc +2 -0
  203. data/src/core/lib/channel/status_util.h +0 -3
  204. data/src/core/lib/compression/compression_internal.cc +45 -10
  205. data/src/core/lib/compression/compression_internal.h +1 -1
  206. data/src/core/lib/config/core_configuration.cc +3 -0
  207. data/src/core/lib/config/core_configuration.h +2 -1
  208. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +4 -2
  209. data/src/core/lib/event_engine/channel_args_endpoint_config.h +3 -2
  210. data/src/core/lib/event_engine/default_event_engine_factory.cc +8 -2
  211. data/src/core/lib/event_engine/event_engine.cc +12 -2
  212. data/src/core/lib/event_engine/event_engine_factory.h +5 -0
  213. data/src/core/lib/event_engine/handle_containers.h +67 -0
  214. data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
  215. data/src/core/lib/event_engine/iomgr_engine.h +118 -0
  216. data/src/core/lib/event_engine/memory_allocator.cc +12 -4
  217. data/src/core/lib/event_engine/resolved_address.cc +4 -2
  218. data/src/core/lib/event_engine/slice.cc +102 -0
  219. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  220. data/src/core/lib/{iomgr/event_engine/pollset.h → event_engine/trace.cc} +3 -10
  221. data/src/core/lib/{iomgr/endpoint_pair_event_engine.cc → event_engine/trace.h} +12 -14
  222. data/src/core/lib/gpr/log.cc +5 -0
  223. data/src/core/lib/gpr/tls.h +3 -5
  224. data/src/core/lib/gprpp/bitset.h +5 -1
  225. data/src/core/lib/gprpp/chunked_vector.h +4 -0
  226. data/src/core/lib/gprpp/construct_destruct.h +1 -0
  227. data/src/core/lib/gprpp/dual_ref_counted.h +1 -4
  228. data/src/core/lib/gprpp/examine_stack.h +0 -1
  229. data/src/core/lib/gprpp/fork.cc +3 -6
  230. data/src/core/lib/gprpp/global_config.h +2 -4
  231. data/src/core/lib/gprpp/global_config_env.cc +3 -2
  232. data/src/core/lib/gprpp/global_config_env.h +3 -1
  233. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  234. data/src/core/lib/gprpp/host_port.cc +2 -0
  235. data/src/core/lib/gprpp/manual_constructor.h +0 -1
  236. data/src/core/lib/gprpp/match.h +2 -0
  237. data/src/core/lib/gprpp/memory.h +1 -5
  238. data/src/core/lib/gprpp/orphanable.h +1 -4
  239. data/src/core/lib/gprpp/ref_counted.h +1 -3
  240. data/src/core/lib/gprpp/ref_counted_ptr.h +1 -1
  241. data/src/core/lib/gprpp/stat.h +0 -2
  242. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  243. data/src/core/lib/gprpp/status_helper.cc +8 -4
  244. data/src/core/lib/gprpp/status_helper.h +4 -0
  245. data/src/core/lib/gprpp/sync.h +3 -1
  246. data/src/core/lib/gprpp/table.h +10 -0
  247. data/src/core/lib/gprpp/thd.h +2 -5
  248. data/src/core/lib/gprpp/thd_posix.cc +4 -2
  249. data/src/core/lib/gprpp/thd_windows.cc +2 -0
  250. data/src/core/lib/gprpp/time.cc +8 -0
  251. data/src/core/lib/gprpp/time.h +6 -1
  252. data/src/core/lib/gprpp/time_util.cc +4 -0
  253. data/src/core/lib/gprpp/time_util.h +1 -1
  254. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  255. data/src/core/lib/http/format_request.cc +29 -0
  256. data/src/core/lib/http/format_request.h +2 -0
  257. data/src/core/lib/http/httpcli.cc +88 -81
  258. data/src/core/lib/http/httpcli.h +39 -7
  259. data/src/core/lib/http/httpcli_security_connector.cc +3 -4
  260. data/src/core/lib/iomgr/endpoint.cc +4 -4
  261. data/src/core/lib/iomgr/endpoint.h +6 -4
  262. data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -4
  263. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -1
  264. data/src/core/lib/iomgr/ev_posix.cc +1 -4
  265. data/src/core/lib/iomgr/exec_ctx.h +1 -2
  266. data/src/core/lib/iomgr/internal_errqueue.cc +38 -47
  267. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  268. data/src/core/lib/iomgr/iomgr.cc +0 -1
  269. data/src/core/{ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc → lib/iomgr/iomgr_fwd.h} +9 -12
  270. data/src/core/lib/iomgr/pollset_set.h +1 -2
  271. data/src/core/lib/iomgr/port.h +25 -6
  272. data/src/core/lib/iomgr/resolve_address.cc +8 -0
  273. data/src/core/lib/iomgr/resolve_address.h +21 -14
  274. data/src/core/lib/iomgr/resolve_address_impl.h +2 -3
  275. data/src/core/lib/iomgr/resolve_address_posix.cc +8 -14
  276. data/src/core/lib/iomgr/resolve_address_posix.h +5 -2
  277. data/src/core/lib/iomgr/resolve_address_windows.cc +7 -14
  278. data/src/core/lib/iomgr/resolve_address_windows.h +5 -2
  279. data/src/core/lib/iomgr/sockaddr.h +2 -3
  280. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  281. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  282. data/src/core/lib/iomgr/socket_utils_common_posix.cc +3 -2
  283. data/src/core/lib/iomgr/tcp_client_cfstream.cc +10 -2
  284. data/src/core/lib/iomgr/tcp_client_posix.cc +12 -5
  285. data/src/core/lib/iomgr/tcp_client_windows.cc +13 -6
  286. data/src/core/lib/iomgr/tcp_posix.cc +9 -27
  287. data/src/core/lib/iomgr/tcp_server_posix.cc +26 -12
  288. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +30 -27
  289. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -4
  290. data/src/core/lib/iomgr/tcp_server_windows.cc +13 -5
  291. data/src/core/lib/iomgr/tcp_windows.cc +7 -4
  292. data/src/core/lib/json/json.h +1 -2
  293. data/src/core/lib/json/json_reader.cc +9 -1
  294. data/src/core/lib/json/json_util.cc +7 -0
  295. data/src/core/lib/json/json_util.h +10 -1
  296. data/src/core/lib/json/json_writer.cc +6 -1
  297. data/src/core/lib/promise/activity.cc +1 -1
  298. data/src/core/lib/promise/activity.h +6 -6
  299. data/src/core/lib/promise/arena_promise.h +11 -1
  300. data/src/core/lib/promise/call_push_pull.h +4 -0
  301. data/src/core/lib/promise/context.h +1 -1
  302. data/src/core/lib/promise/detail/basic_seq.h +2 -2
  303. data/src/core/lib/promise/detail/promise_factory.h +0 -1
  304. data/src/core/lib/promise/latch.h +0 -1
  305. data/src/core/lib/promise/loop.h +1 -0
  306. data/src/core/lib/promise/race.h +0 -1
  307. data/src/core/lib/promise/seq.h +0 -2
  308. data/src/core/lib/promise/sleep.cc +2 -0
  309. data/src/core/lib/promise/sleep.h +10 -0
  310. data/src/core/lib/promise/try_seq.h +2 -2
  311. data/src/core/lib/resolver/resolver_factory.h +1 -2
  312. data/src/core/lib/resolver/server_address.cc +9 -3
  313. data/src/core/lib/resolver/server_address.h +4 -4
  314. data/src/core/lib/resource_quota/api.cc +14 -1
  315. data/src/core/lib/resource_quota/api.h +4 -1
  316. data/src/core/lib/resource_quota/arena.cc +0 -6
  317. data/src/core/lib/resource_quota/arena.h +1 -2
  318. data/src/core/lib/resource_quota/memory_quota.cc +47 -5
  319. data/src/core/lib/resource_quota/memory_quota.h +24 -5
  320. data/src/core/lib/resource_quota/resource_quota.h +8 -0
  321. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  322. data/src/core/lib/resource_quota/thread_quota.h +4 -0
  323. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +3 -0
  324. data/src/core/lib/security/credentials/alts/alts_credentials.cc +8 -2
  325. data/src/core/lib/security/credentials/alts/alts_credentials.h +2 -2
  326. data/src/core/lib/security/credentials/call_creds_util.cc +2 -0
  327. data/src/core/lib/security/credentials/channel_creds_registry.h +1 -0
  328. data/src/core/lib/security/credentials/composite/composite_credentials.cc +7 -3
  329. data/src/core/lib/security/credentials/composite/composite_credentials.h +5 -4
  330. data/src/core/lib/security/credentials/credentials.h +17 -10
  331. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +81 -0
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +8 -0
  333. data/src/core/lib/security/credentials/external/external_account_credentials.cc +3 -0
  334. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -0
  335. data/src/core/lib/security/credentials/fake/fake_credentials.cc +13 -3
  336. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  337. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +25 -15
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +2 -2
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +4 -1
  340. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  341. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +8 -2
  342. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +4 -4
  343. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -2
  344. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  345. data/src/core/lib/security/credentials/local/local_credentials.cc +8 -2
  346. data/src/core/lib/security/credentials/local/local_credentials.h +2 -2
  347. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -6
  348. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
  349. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +4 -1
  350. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -1
  351. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -2
  352. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +4 -4
  353. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +10 -0
  354. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +5 -7
  355. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +26 -1
  356. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +28 -4
  357. data/src/core/lib/security/credentials/tls/tls_credentials.cc +10 -0
  358. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  359. data/src/core/lib/security/credentials/xds/xds_credentials.cc +12 -3
  360. data/src/core/lib/security/credentials/xds/xds_credentials.h +5 -5
  361. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  362. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -1
  363. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  364. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  365. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +1 -1
  366. data/src/core/lib/security/transport/client_auth_filter.cc +6 -8
  367. data/src/core/lib/security/transport/secure_endpoint.cc +23 -12
  368. data/src/core/lib/security/transport/security_handshaker.cc +5 -5
  369. data/src/core/lib/security/transport/security_handshaker.h +1 -1
  370. data/src/core/lib/security/transport/server_auth_filter.cc +3 -2
  371. data/src/core/lib/service_config/service_config.h +4 -8
  372. data/src/core/lib/service_config/service_config_call_data.h +4 -1
  373. data/src/core/lib/service_config/service_config_impl.cc +7 -0
  374. data/src/core/lib/service_config/service_config_impl.h +9 -2
  375. data/src/core/lib/service_config/service_config_parser.cc +8 -0
  376. data/src/core/lib/service_config/service_config_parser.h +7 -0
  377. data/src/core/lib/slice/b64.cc +1 -1
  378. data/src/core/lib/slice/b64.h +2 -0
  379. data/src/core/lib/slice/percent_encoding.cc +4 -1
  380. data/src/core/lib/slice/percent_encoding.h +0 -6
  381. data/src/core/lib/slice/slice.cc +2 -1
  382. data/src/core/lib/slice/slice.h +10 -5
  383. data/src/core/lib/slice/slice_api.cc +1 -1
  384. data/src/core/lib/slice/slice_buffer.cc +50 -23
  385. data/src/core/lib/slice/slice_buffer.h +106 -0
  386. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  387. data/src/core/lib/slice/slice_internal.h +4 -3
  388. data/src/core/lib/slice/slice_refcount.h +2 -3
  389. data/src/core/lib/slice/slice_refcount_base.h +2 -3
  390. data/src/core/lib/slice/slice_split.cc +3 -0
  391. data/src/core/lib/slice/slice_split.h +0 -4
  392. data/src/core/lib/slice/slice_string_helpers.cc +4 -0
  393. data/src/core/lib/slice/slice_string_helpers.h +1 -4
  394. data/src/core/lib/surface/builtins.cc +7 -2
  395. data/src/core/lib/surface/byte_buffer.cc +7 -1
  396. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  397. data/src/core/lib/surface/call.cc +41 -26
  398. data/src/core/lib/surface/call.h +16 -2
  399. data/src/core/lib/surface/call_details.cc +4 -4
  400. data/src/core/lib/surface/call_log_batch.cc +7 -1
  401. data/src/core/lib/surface/call_test_only.h +4 -1
  402. data/src/core/lib/surface/channel.cc +179 -242
  403. data/src/core/lib/surface/channel.h +94 -57
  404. data/src/core/lib/surface/channel_init.h +2 -0
  405. data/src/core/lib/surface/channel_ping.cc +8 -2
  406. data/src/core/lib/surface/channel_stack_type.cc +0 -2
  407. data/src/core/lib/surface/channel_stack_type.h +0 -2
  408. data/src/core/lib/surface/completion_queue.cc +14 -6
  409. data/src/core/lib/surface/completion_queue.h +5 -1
  410. data/src/core/lib/surface/completion_queue_factory.cc +1 -0
  411. data/src/core/lib/surface/completion_queue_factory.h +1 -3
  412. data/src/core/lib/surface/event_string.cc +1 -7
  413. data/src/core/lib/surface/event_string.h +1 -1
  414. data/src/core/lib/surface/init.cc +17 -45
  415. data/src/core/lib/surface/init.h +0 -8
  416. data/src/core/lib/surface/lame_client.cc +64 -110
  417. data/src/core/lib/surface/lame_client.h +40 -2
  418. data/src/core/lib/surface/metadata_array.cc +2 -0
  419. data/src/core/lib/surface/server.cc +69 -56
  420. data/src/core/lib/surface/server.h +39 -9
  421. data/src/core/lib/surface/validate_metadata.cc +2 -5
  422. data/src/core/lib/surface/validate_metadata.h +3 -0
  423. data/src/core/lib/surface/version.cc +2 -2
  424. data/src/core/lib/transport/bdp_estimator.cc +3 -1
  425. data/src/core/lib/transport/bdp_estimator.h +2 -3
  426. data/src/core/lib/transport/byte_stream.cc +4 -3
  427. data/src/core/lib/transport/byte_stream.h +5 -1
  428. data/src/core/lib/transport/connectivity_state.cc +6 -4
  429. data/src/core/lib/transport/connectivity_state.h +2 -3
  430. data/src/core/lib/transport/error_utils.cc +4 -2
  431. data/src/core/lib/transport/error_utils.h +5 -1
  432. data/src/core/lib/{channel → transport}/handshaker.cc +9 -4
  433. data/src/core/lib/{channel → transport}/handshaker.h +13 -6
  434. data/src/core/lib/{channel → transport}/handshaker_factory.h +9 -10
  435. data/src/core/lib/{channel → transport}/handshaker_registry.cc +5 -1
  436. data/src/core/lib/{channel → transport}/handshaker_registry.h +5 -4
  437. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.cc +24 -10
  438. data/src/core/{ext/filters/client_channel → lib/transport}/http_connect_handshaker.h +3 -3
  439. data/src/core/lib/transport/metadata_batch.cc +287 -0
  440. data/src/core/lib/transport/metadata_batch.h +133 -264
  441. data/src/core/lib/transport/parsed_metadata.cc +2 -0
  442. data/src/core/lib/transport/parsed_metadata.h +10 -3
  443. data/src/core/lib/transport/status_conversion.cc +2 -0
  444. data/src/core/lib/transport/status_conversion.h +2 -2
  445. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  446. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  447. data/src/core/lib/transport/timeout_encoding.cc +2 -6
  448. data/src/core/lib/transport/timeout_encoding.h +5 -1
  449. data/src/core/lib/transport/transport.cc +18 -17
  450. data/src/core/lib/transport/transport.h +28 -2
  451. data/src/core/lib/transport/transport_impl.h +10 -0
  452. data/src/core/lib/transport/transport_op_string.cc +9 -10
  453. data/src/core/lib/uri/uri_parser.cc +11 -3
  454. data/src/core/lib/uri/uri_parser.h +0 -2
  455. data/src/core/plugin_registry/grpc_plugin_registry.cc +11 -0
  456. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -0
  457. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  458. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -0
  459. data/src/ruby/ext/grpc/extconf.rb +2 -2
  460. data/src/ruby/lib/grpc/2.5/grpc_c.so +0 -0
  461. data/src/ruby/lib/grpc/2.6/grpc_c.so +0 -0
  462. data/src/ruby/lib/grpc/2.7/grpc_c.so +0 -0
  463. data/src/ruby/lib/grpc/3.0/grpc_c.so +0 -0
  464. data/src/ruby/lib/grpc/3.1/grpc_c.so +0 -0
  465. data/src/ruby/lib/grpc/grpc_c.so +0 -0
  466. data/src/ruby/lib/grpc/version.rb +1 -1
  467. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  468. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  469. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  470. metadata +36 -29
  471. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  472. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  473. data/src/core/lib/event_engine/sockaddr.h +0 -44
  474. data/src/core/lib/gprpp/capture.h +0 -76
  475. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  476. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  477. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  478. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  479. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  480. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  481. data/src/core/lib/iomgr/event_engine/promise.h +0 -51
  482. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  483. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  484. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  485. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  486. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  487. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -21,32 +21,43 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <stddef.h>
25
+ #include <stdint.h>
26
+
27
+ #include <atomic>
24
28
  #include <map>
29
+ #include <string>
30
+ #include <utility>
31
+
32
+ #include "absl/base/thread_annotations.h"
33
+ #include "absl/status/statusor.h"
34
+ #include "absl/strings/string_view.h"
35
+ #include "absl/types/optional.h"
25
36
 
26
- #include "src/core/lib/channel/channel_stack.h"
37
+ #include <grpc/event_engine/memory_allocator.h>
38
+ #include <grpc/impl/codegen/compression_types.h>
39
+ #include <grpc/impl/codegen/grpc_types.h>
40
+ #include <grpc/slice.h>
41
+
42
+ #include "src/core/lib/channel/channel_args.h"
43
+ #include "src/core/lib/channel/channel_stack.h" // IWYU pragma: keep
27
44
  #include "src/core/lib/channel/channel_stack_builder.h"
28
45
  #include "src/core/lib/channel/channelz.h"
29
- #include "src/core/lib/gprpp/manual_constructor.h"
46
+ #include "src/core/lib/gprpp/cpp_impl_of.h"
47
+ #include "src/core/lib/gprpp/debug_location.h"
48
+ #include "src/core/lib/gprpp/ref_counted.h"
49
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
50
+ #include "src/core/lib/gprpp/sync.h"
51
+ #include "src/core/lib/gprpp/time.h"
52
+ #include "src/core/lib/iomgr/iomgr_fwd.h"
30
53
  #include "src/core/lib/resource_quota/memory_quota.h"
54
+ #include "src/core/lib/slice/slice.h"
31
55
  #include "src/core/lib/surface/channel_stack_type.h"
32
56
 
33
- /// Creates a grpc_channel.
34
- grpc_channel* grpc_channel_create_internal(
35
- const char* target, const grpc_channel_args* args,
36
- grpc_channel_stack_type channel_stack_type,
37
- grpc_transport* optional_transport, grpc_error_handle* error);
38
-
39
57
  /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
40
58
  * is safe to use from within core. */
41
59
  void grpc_channel_destroy_internal(grpc_channel* channel);
42
60
 
43
- /// Creates a grpc_channel with a builder. See the description of
44
- /// \a grpc_channel_create for variable definitions.
45
- grpc_channel* grpc_channel_create_with_builder(
46
- grpc_core::ChannelStackBuilder* builder,
47
- grpc_channel_stack_type channel_stack_type,
48
- grpc_error_handle* error = nullptr);
49
-
50
61
  /** Create a call given a grpc_channel, in order to call \a method.
51
62
  Progress is tied to activity on \a pollset_set. The returned call object is
52
63
  meant to be used with \a grpc_call_start_batch_and_execute, which relies on
@@ -92,68 +103,94 @@ struct CallRegistrationTable {
92
103
  int method_registration_attempts ABSL_GUARDED_BY(mu) = 0;
93
104
  };
94
105
 
95
- } // namespace grpc_core
96
-
97
- struct grpc_channel {
98
- int is_client;
99
- grpc_compression_options compression_options;
100
-
101
- gpr_atm call_size_estimate;
102
-
103
- // TODO(vjpai): Once the grpc_channel is allocated via new rather than malloc,
104
- // expand the members of the CallRegistrationTable directly into
105
- // the grpc_channel. For now it is kept separate so that all the
106
- // manual constructing can be done with a single call rather than
107
- // a separate manual construction for each field.
108
- grpc_core::ManualConstructor<grpc_core::CallRegistrationTable>
109
- registration_table;
110
- grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node;
111
- grpc_core::ManualConstructor<grpc_core::MemoryAllocator> allocator;
112
-
113
- grpc_core::ManualConstructor<std::string> target;
106
+ class Channel : public RefCounted<Channel>,
107
+ public CppImplOf<Channel, grpc_channel> {
108
+ public:
109
+ static absl::StatusOr<RefCountedPtr<Channel>> Create(
110
+ const char* target, ChannelArgs args,
111
+ grpc_channel_stack_type channel_stack_type,
112
+ grpc_transport* optional_transport);
113
+
114
+ static absl::StatusOr<RefCountedPtr<Channel>> CreateWithBuilder(
115
+ ChannelStackBuilder* builder);
116
+
117
+ grpc_channel_stack* channel_stack() const { return channel_stack_.get(); }
118
+
119
+ grpc_compression_options compression_options() const {
120
+ return compression_options_;
121
+ }
122
+
123
+ channelz::ChannelNode* channelz_node() const { return channelz_node_.get(); }
124
+
125
+ size_t CallSizeEstimate() {
126
+ // We round up our current estimate to the NEXT value of kRoundUpSize.
127
+ // This ensures:
128
+ // 1. a consistent size allocation when our estimate is drifting slowly
129
+ // (which is common) - which tends to help most allocators reuse memory
130
+ // 2. a small amount of allowed growth over the estimate without hitting
131
+ // the arena size doubling case, reducing overall memory usage
132
+ static constexpr size_t kRoundUpSize = 256;
133
+ return (call_size_estimate_.load(std::memory_order_relaxed) +
134
+ 2 * kRoundUpSize) &
135
+ ~(kRoundUpSize - 1);
136
+ }
137
+
138
+ void UpdateCallSizeEstimate(size_t size);
139
+ absl::string_view target() const { return target_; }
140
+ MemoryAllocator* allocator() { return &allocator_; }
141
+ bool is_client() const { return is_client_; }
142
+ RegisteredCall* RegisterCall(const char* method, const char* host);
143
+
144
+ int TestOnlyRegisteredCalls() {
145
+ MutexLock lock(&registration_table_.mu);
146
+ return registration_table_.map.size();
147
+ }
148
+
149
+ int TestOnlyRegistrationAttempts() {
150
+ MutexLock lock(&registration_table_.mu);
151
+ return registration_table_.method_registration_attempts;
152
+ }
153
+
154
+ private:
155
+ Channel(bool is_client, std::string target, ChannelArgs channel_args,
156
+ grpc_compression_options compression_options,
157
+ RefCountedPtr<grpc_channel_stack> channel_stack);
158
+
159
+ const bool is_client_;
160
+ const grpc_compression_options compression_options_;
161
+ std::atomic<size_t> call_size_estimate_;
162
+ CallRegistrationTable registration_table_;
163
+ RefCountedPtr<channelz::ChannelNode> channelz_node_;
164
+ MemoryAllocator allocator_;
165
+ std::string target_;
166
+ const RefCountedPtr<grpc_channel_stack> channel_stack_;
114
167
  };
115
- #define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
168
+
169
+ } // namespace grpc_core
116
170
 
117
171
  inline grpc_compression_options grpc_channel_compression_options(
118
172
  const grpc_channel* channel) {
119
- return channel->compression_options;
173
+ return grpc_core::Channel::FromC(channel)->compression_options();
120
174
  }
121
175
 
122
176
  inline grpc_channel_stack* grpc_channel_get_channel_stack(
123
177
  grpc_channel* channel) {
124
- return CHANNEL_STACK_FROM_CHANNEL(channel);
178
+ return grpc_core::Channel::FromC(channel)->channel_stack();
125
179
  }
126
180
 
127
181
  inline grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
128
182
  grpc_channel* channel) {
129
- return channel->channelz_node.get();
183
+ return grpc_core::Channel::FromC(channel)->channelz_node();
130
184
  }
131
185
 
132
- #ifndef NDEBUG
133
186
  inline void grpc_channel_internal_ref(grpc_channel* channel,
134
187
  const char* reason) {
135
- GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
188
+ grpc_core::Channel::FromC(channel)->Ref(DEBUG_LOCATION, reason).release();
136
189
  }
137
190
  inline void grpc_channel_internal_unref(grpc_channel* channel,
138
191
  const char* reason) {
139
- GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
140
- }
141
- #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
142
- grpc_channel_internal_ref(channel, reason)
143
- #define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
144
- grpc_channel_internal_unref(channel, reason)
145
- #else
146
- inline void grpc_channel_internal_ref(grpc_channel* channel) {
147
- GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
148
- }
149
- inline void grpc_channel_internal_unref(grpc_channel* channel) {
150
- GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
192
+ grpc_core::Channel::FromC(channel)->Unref(DEBUG_LOCATION, reason);
151
193
  }
152
- #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
153
- grpc_channel_internal_ref(channel)
154
- #define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
155
- grpc_channel_internal_unref(channel)
156
- #endif
157
194
 
158
195
  // Return the channel's compression options.
159
196
  grpc_compression_options grpc_channel_compression_options(
@@ -22,9 +22,11 @@
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
24
  #include <functional>
25
+ #include <utility>
25
26
  #include <vector>
26
27
 
27
28
  #include "src/core/lib/channel/channel_stack_builder.h"
29
+ #include "src/core/lib/surface/channel_stack_type.h"
28
30
 
29
31
  #define GRPC_CHANNEL_INIT_BUILTIN_PRIORITY 10000
30
32
 
@@ -18,14 +18,20 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include <string.h>
22
-
21
+ #include <grpc/impl/codegen/grpc_types.h>
23
22
  #include <grpc/support/alloc.h>
24
23
  #include <grpc/support/log.h>
25
24
 
25
+ #include "src/core/lib/channel/channel_stack.h"
26
+ #include "src/core/lib/channel/channel_stack_builder.h"
27
+ #include "src/core/lib/debug/trace.h"
28
+ #include "src/core/lib/iomgr/closure.h"
29
+ #include "src/core/lib/iomgr/error.h"
30
+ #include "src/core/lib/iomgr/exec_ctx.h"
26
31
  #include "src/core/lib/surface/api_trace.h"
27
32
  #include "src/core/lib/surface/channel.h"
28
33
  #include "src/core/lib/surface/completion_queue.h"
34
+ #include "src/core/lib/transport/transport.h"
29
35
 
30
36
  struct ping_result {
31
37
  grpc_closure closure;
@@ -20,8 +20,6 @@
20
20
 
21
21
  #include "src/core/lib/surface/channel_stack_type.h"
22
22
 
23
- #include <grpc/support/log.h>
24
-
25
23
  bool grpc_channel_stack_type_is_client(grpc_channel_stack_type type) {
26
24
  switch (type) {
27
25
  case GRPC_CLIENT_CHANNEL:
@@ -21,8 +21,6 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <stdbool.h>
25
-
26
24
  typedef enum {
27
25
  // normal top-half client channel with load-balancing, connection management
28
26
  GRPC_CLIENT_CHANNEL,
@@ -21,30 +21,38 @@
21
21
 
22
22
  #include <inttypes.h>
23
23
  #include <stdio.h>
24
- #include <string.h>
25
24
 
25
+ #include <algorithm>
26
26
  #include <atomic>
27
+ #include <new>
28
+ #include <string>
29
+ #include <utility>
27
30
  #include <vector>
28
31
 
29
32
  #include "absl/strings/str_format.h"
30
33
  #include "absl/strings/str_join.h"
31
34
 
35
+ #include <grpc/grpc.h>
36
+ #include <grpc/impl/codegen/gpr_types.h>
32
37
  #include <grpc/support/alloc.h>
33
38
  #include <grpc/support/atm.h>
34
39
  #include <grpc/support/log.h>
35
- #include <grpc/support/string_util.h>
36
- #include <grpc/support/time.h>
40
+ #include <grpc/support/sync.h>
37
41
 
38
42
  #include "src/core/lib/debug/stats.h"
39
43
  #include "src/core/lib/gpr/spinlock.h"
40
- #include "src/core/lib/gpr/string.h"
41
44
  #include "src/core/lib/gpr/tls.h"
45
+ #include "src/core/lib/gprpp/atomic_utils.h"
46
+ #include "src/core/lib/gprpp/debug_location.h"
47
+ #include "src/core/lib/gprpp/ref_counted.h"
48
+ #include "src/core/lib/gprpp/time.h"
49
+ #include "src/core/lib/iomgr/closure.h"
50
+ #include "src/core/lib/iomgr/exec_ctx.h"
42
51
  #include "src/core/lib/iomgr/executor.h"
52
+ #include "src/core/lib/iomgr/iomgr.h"
43
53
  #include "src/core/lib/iomgr/pollset.h"
44
- #include "src/core/lib/iomgr/timer.h"
45
54
  #include "src/core/lib/profiling/timers.h"
46
55
  #include "src/core/lib/surface/api_trace.h"
47
- #include "src/core/lib/surface/call.h"
48
56
  #include "src/core/lib/surface/event_string.h"
49
57
 
50
58
  grpc_core::TraceFlag grpc_trace_operation_failures(false, "op_failure");
@@ -23,10 +23,14 @@
23
23
 
24
24
  #include <grpc/support/port_platform.h>
25
25
 
26
- #include <grpc/grpc.h>
26
+ #include <stdint.h>
27
+
28
+ #include <grpc/impl/codegen/grpc_types.h>
27
29
 
28
30
  #include "src/core/lib/debug/trace.h"
29
31
  #include "src/core/lib/gprpp/manual_constructor.h"
32
+ #include "src/core/lib/gprpp/mpscq.h"
33
+ #include "src/core/lib/iomgr/error.h"
30
34
  #include "src/core/lib/iomgr/pollset.h"
31
35
 
32
36
  /* These trace flags default to 1. The corresponding lines are only traced
@@ -20,6 +20,7 @@
20
20
 
21
21
  #include "src/core/lib/surface/completion_queue_factory.h"
22
22
 
23
+ #include <grpc/grpc.h>
23
24
  #include <grpc/support/log.h>
24
25
 
25
26
  #include "src/core/lib/surface/completion_queue.h"
@@ -21,9 +21,7 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <grpc/grpc.h>
25
-
26
- #include "src/core/lib/surface/completion_queue.h"
24
+ #include <grpc/impl/codegen/grpc_types.h>
27
25
 
28
26
  typedef struct grpc_completion_queue_factory_vtable {
29
27
  grpc_completion_queue* (*create)(const grpc_completion_queue_factory*,
@@ -20,18 +20,12 @@
20
20
 
21
21
  #include "src/core/lib/surface/event_string.h"
22
22
 
23
- #include <stdio.h>
24
-
23
+ #include <algorithm>
25
24
  #include <vector>
26
25
 
27
26
  #include "absl/strings/str_format.h"
28
27
  #include "absl/strings/str_join.h"
29
28
 
30
- #include <grpc/byte_buffer.h>
31
- #include <grpc/support/string_util.h>
32
-
33
- #include "src/core/lib/gpr/string.h"
34
-
35
29
  static void addhdr(grpc_event* ev, std::vector<std::string>* buf) {
36
30
  buf->push_back(absl::StrFormat("tag:%p", ev->tag));
37
31
  }
@@ -23,7 +23,7 @@
23
23
 
24
24
  #include <string>
25
25
 
26
- #include <grpc/grpc.h>
26
+ #include <grpc/impl/codegen/grpc_types.h>
27
27
 
28
28
  /* Returns a string describing an event. Must be later freed with gpr_free() */
29
29
  std::string grpc_event_string(grpc_event* ev);
@@ -21,49 +21,39 @@
21
21
  #include "src/core/lib/surface/init.h"
22
22
 
23
23
  #include <limits.h>
24
- #include <memory.h>
25
- #include <string.h>
24
+ #include <stdint.h>
25
+
26
+ #include "absl/base/thread_annotations.h"
26
27
 
27
28
  #include <grpc/fork.h>
28
29
  #include <grpc/grpc.h>
29
- #include <grpc/support/alloc.h>
30
+ #include <grpc/grpc_security.h>
31
+ #include <grpc/impl/codegen/grpc_types.h>
30
32
  #include <grpc/support/log.h>
33
+ #include <grpc/support/sync.h>
31
34
  #include <grpc/support/time.h>
32
35
 
33
- #include "src/core/lib/channel/channel_stack.h"
36
+ #include "src/core/lib/channel/channel_args.h"
34
37
  #include "src/core/lib/channel/channel_stack_builder.h"
35
- #include "src/core/lib/channel/channelz_registry.h"
36
- #include "src/core/lib/channel/connected_channel.h"
37
38
  #include "src/core/lib/config/core_configuration.h"
38
39
  #include "src/core/lib/debug/stats.h"
39
40
  #include "src/core/lib/debug/trace.h"
40
41
  #include "src/core/lib/gprpp/fork.h"
41
42
  #include "src/core/lib/gprpp/sync.h"
42
- #include "src/core/lib/iomgr/call_combiner.h"
43
- #include "src/core/lib/iomgr/combiner.h"
43
+ #include "src/core/lib/gprpp/thd.h"
44
44
  #include "src/core/lib/iomgr/exec_ctx.h"
45
45
  #include "src/core/lib/iomgr/executor.h"
46
46
  #include "src/core/lib/iomgr/iomgr.h"
47
47
  #include "src/core/lib/iomgr/timer_manager.h"
48
48
  #include "src/core/lib/profiling/timers.h"
49
49
  #include "src/core/lib/security/authorization/grpc_server_authz_filter.h"
50
- #include "src/core/lib/security/context/security_context.h"
51
50
  #include "src/core/lib/security/credentials/credentials.h"
52
- #include "src/core/lib/security/credentials/plugin/plugin_credentials.h"
53
51
  #include "src/core/lib/security/security_connector/security_connector.h"
54
52
  #include "src/core/lib/security/transport/auth_filters.h"
55
- #include "src/core/lib/security/transport/secure_endpoint.h"
56
- #include "src/core/lib/security/transport/security_handshaker.h"
57
- #include "src/core/lib/slice/slice_internal.h"
58
53
  #include "src/core/lib/surface/api_trace.h"
59
- #include "src/core/lib/surface/builtins.h"
60
- #include "src/core/lib/surface/call.h"
54
+ #include "src/core/lib/surface/channel_init.h"
55
+ #include "src/core/lib/surface/channel_stack_type.h"
61
56
  #include "src/core/lib/surface/completion_queue.h"
62
- #include "src/core/lib/surface/lame_client.h"
63
- #include "src/core/lib/surface/server.h"
64
- #include "src/core/lib/transport/bdp_estimator.h"
65
- #include "src/core/lib/transport/connectivity_state.h"
66
- #include "src/core/lib/transport/transport_impl.h"
67
57
 
68
58
  /* (generated) built in registry of plugins */
69
59
  extern void grpc_register_built_in_plugins(void);
@@ -82,41 +72,25 @@ static bool g_shutting_down ABSL_GUARDED_BY(g_init_mu) = false;
82
72
 
83
73
  static bool maybe_prepend_client_auth_filter(
84
74
  grpc_core::ChannelStackBuilder* builder) {
85
- const grpc_channel_args* args = builder->channel_args();
86
- if (args) {
87
- for (size_t i = 0; i < args->num_args; i++) {
88
- if (0 == strcmp(GRPC_ARG_SECURITY_CONNECTOR, args->args[i].key)) {
89
- builder->PrependFilter(&grpc_core::ClientAuthFilter::kFilter, nullptr);
90
- break;
91
- }
92
- }
75
+ if (builder->channel_args().Contains(GRPC_ARG_SECURITY_CONNECTOR)) {
76
+ builder->PrependFilter(&grpc_core::ClientAuthFilter::kFilter);
93
77
  }
94
78
  return true;
95
79
  }
96
80
 
97
81
  static bool maybe_prepend_server_auth_filter(
98
82
  grpc_core::ChannelStackBuilder* builder) {
99
- const grpc_channel_args* args = builder->channel_args();
100
- if (args) {
101
- for (size_t i = 0; i < args->num_args; i++) {
102
- if (0 == strcmp(GRPC_SERVER_CREDENTIALS_ARG, args->args[i].key)) {
103
- builder->PrependFilter(&grpc_server_auth_filter, nullptr);
104
- break;
105
- }
106
- }
83
+ if (builder->channel_args().Contains(GRPC_SERVER_CREDENTIALS_ARG)) {
84
+ builder->PrependFilter(&grpc_server_auth_filter);
107
85
  }
108
86
  return true;
109
87
  }
110
88
 
111
89
  static bool maybe_prepend_grpc_server_authz_filter(
112
90
  grpc_core::ChannelStackBuilder* builder) {
113
- const grpc_channel_args* args = builder->channel_args();
114
- const auto* provider =
115
- grpc_channel_args_find_pointer<grpc_authorization_policy_provider>(
116
- args, GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER);
117
- if (provider != nullptr) {
118
- builder->PrependFilter(&grpc_core::GrpcServerAuthzFilter::kFilterVtable,
119
- nullptr);
91
+ if (builder->channel_args().GetPointer<grpc_authorization_policy_provider>(
92
+ GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER) != nullptr) {
93
+ builder->PrependFilter(&grpc_core::GrpcServerAuthzFilter::kFilterVtable);
120
94
  }
121
95
  return true;
122
96
  }
@@ -180,7 +154,6 @@ void grpc_init(void) {
180
154
  grpc_core::Fork::GlobalInit();
181
155
  grpc_fork_handlers_auto_register();
182
156
  grpc_stats_init();
183
- grpc_core::channelz::ChannelzRegistry::Init();
184
157
  grpc_core::ApplicationCallbackExecCtx::GlobalInit();
185
158
  grpc_iomgr_init();
186
159
  gpr_timers_global_init();
@@ -213,7 +186,6 @@ void grpc_shutdown_internal_locked(void)
213
186
  grpc_iomgr_shutdown();
214
187
  gpr_timers_global_destroy();
215
188
  grpc_tracer_shutdown();
216
- grpc_core::channelz::ChannelzRegistry::Shutdown();
217
189
  grpc_stats_shutdown();
218
190
  grpc_core::Fork::GlobalShutdown();
219
191
  }
@@ -20,14 +20,6 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
- #include <memory>
24
-
25
- namespace grpc_event_engine {
26
- namespace experimental {
27
- class EventEngine;
28
- }
29
- } // namespace grpc_event_engine
30
-
31
23
  void grpc_maybe_wait_for_async_shutdown(void);
32
24
 
33
25
  #endif /* GRPC_CORE_LIB_SURFACE_INIT_H */