grpc 1.46.3 → 1.47.0

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 (481) 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/version.rb +1 -1
  461. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  462. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  463. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +504 -0
  464. metadata +36 -29
  465. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  466. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  467. data/src/core/lib/event_engine/sockaddr.h +0 -44
  468. data/src/core/lib/gprpp/capture.h +0 -76
  469. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  470. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  471. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  472. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  473. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -85
  474. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -87
  475. data/src/core/lib/iomgr/event_engine/promise.h +0 -51
  476. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -47
  477. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -37
  478. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -133
  479. data/src/core/lib/iomgr/event_engine/resolver.h +0 -56
  480. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -296
  481. data/src/core/lib/iomgr/event_engine/timer.cc +0 -62
@@ -17,6 +17,7 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <new>
20
21
  #include <utility>
21
22
 
22
23
  namespace grpc_core {
@@ -20,12 +20,9 @@
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
22
  #include <atomic>
23
- #include <cassert>
24
- #include <cinttypes>
23
+ #include <cstdint>
25
24
 
26
- #include <grpc/support/atm.h>
27
25
  #include <grpc/support/log.h>
28
- #include <grpc/support/sync.h>
29
26
 
30
27
  #include "src/core/lib/gprpp/debug_location.h"
31
28
  #include "src/core/lib/gprpp/orphanable.h"
@@ -21,7 +21,6 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <functional>
25
24
  #include <string>
26
25
 
27
26
  #include "absl/types/optional.h"
@@ -20,15 +20,12 @@
20
20
 
21
21
  #include "src/core/lib/gprpp/fork.h"
22
22
 
23
- #include <string.h>
24
-
25
- #include <grpc/support/alloc.h>
23
+ #include <grpc/impl/codegen/gpr_types.h>
24
+ #include <grpc/support/atm.h>
26
25
  #include <grpc/support/sync.h>
27
26
  #include <grpc/support/time.h>
28
27
 
29
- #include "src/core/lib/gpr/useful.h"
30
- #include "src/core/lib/gprpp/global_config.h"
31
- #include "src/core/lib/gprpp/memory.h"
28
+ #include "src/core/lib/gprpp/global_config_env.h"
32
29
 
33
30
  /*
34
31
  * NOTE: FORKING IS NOT GENERALLY SUPPORTED, THIS IS ONLY INTENDED TO WORK
@@ -21,8 +21,6 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <stdint.h>
25
-
26
24
  // --------------------------------------------------------------------
27
25
  // How to use global configuration variables:
28
26
  //
@@ -89,7 +87,7 @@
89
87
  // bool gpr_global_config_get_test();
90
88
  // void gpr_global_config_set_test(bool value);
91
89
 
92
- #include "src/core/lib/gprpp/global_config_custom.h"
93
- #include "src/core/lib/gprpp/global_config_env.h"
90
+ #include "src/core/lib/gprpp/global_config_custom.h" // IWYU pragma: export
91
+ #include "src/core/lib/gprpp/global_config_env.h" // IWYU pragma: export
94
92
 
95
93
  #endif /* GRPC_CORE_LIB_GPRPP_GLOBAL_CONFIG_H */
@@ -21,13 +21,14 @@
21
21
  #include "src/core/lib/gprpp/global_config_env.h"
22
22
 
23
23
  #include <ctype.h>
24
- #include <string.h>
24
+ #include <stdlib.h>
25
25
 
26
+ #include <memory>
26
27
  #include <string>
28
+ #include <type_traits>
27
29
 
28
30
  #include "absl/strings/str_format.h"
29
31
 
30
- #include <grpc/support/alloc.h>
31
32
  #include <grpc/support/log.h>
32
33
  #include <grpc/support/string_util.h>
33
34
 
@@ -21,7 +21,9 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include "src/core/lib/gprpp/global_config_generic.h"
24
+ #include <stdint.h>
25
+
26
+ #include "src/core/lib/gprpp/global_config_generic.h" // IWYU pragma: export
25
27
  #include "src/core/lib/gprpp/memory.h"
26
28
 
27
29
  namespace grpc_core {
@@ -21,10 +21,6 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <stdint.h>
25
-
26
- #include "src/core/lib/gprpp/memory.h"
27
-
28
24
  #define GPR_GLOBAL_CONFIG_GET(name) gpr_global_config_get_##name()
29
25
 
30
26
  #define GPR_GLOBAL_CONFIG_SET(name, value) gpr_global_config_set_##name(value)
@@ -20,6 +20,8 @@
20
20
 
21
21
  #include "src/core/lib/gprpp/host_port.h"
22
22
 
23
+ #include <stddef.h>
24
+
23
25
  #include "absl/strings/str_format.h"
24
26
  #include "absl/strings/string_view.h"
25
27
 
@@ -24,7 +24,6 @@
24
24
  #include <grpc/support/port_platform.h>
25
25
 
26
26
  #include <stddef.h>
27
- #include <stdlib.h>
28
27
 
29
28
  #include <new>
30
29
  #include <type_traits>
@@ -17,6 +17,8 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <type_traits>
21
+
20
22
  #include "absl/types/variant.h"
21
23
 
22
24
  #include "src/core/lib/gprpp/overload.h"
@@ -21,14 +21,10 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
- #include <limits>
25
24
  #include <memory>
26
- #include <utility>
27
-
28
- #include "absl/memory/memory.h"
25
+ #include <type_traits>
29
26
 
30
27
  #include <grpc/support/alloc.h>
31
- #include <grpc/support/log.h>
32
28
 
33
29
  namespace grpc_core {
34
30
 
@@ -23,12 +23,9 @@
23
23
 
24
24
  #include <cinttypes>
25
25
  #include <memory>
26
-
27
- #include <grpc/support/log.h>
28
- #include <grpc/support/sync.h>
26
+ #include <utility>
29
27
 
30
28
  #include "src/core/lib/gprpp/debug_location.h"
31
- #include "src/core/lib/gprpp/memory.h"
32
29
  #include "src/core/lib/gprpp/ref_counted.h"
33
30
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
34
31
 
@@ -25,13 +25,10 @@
25
25
  #include <cassert>
26
26
  #include <cinttypes>
27
27
 
28
- #include <grpc/support/atm.h>
29
28
  #include <grpc/support/log.h>
30
- #include <grpc/support/sync.h>
31
29
 
32
30
  #include "src/core/lib/gprpp/atomic_utils.h"
33
31
  #include "src/core/lib/gprpp/debug_location.h"
34
- #include "src/core/lib/gprpp/memory.h"
35
32
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
36
33
 
37
34
  namespace grpc_core {
@@ -234,6 +231,7 @@ enum UnrefBehavior {
234
231
  namespace internal {
235
232
  template <typename T, UnrefBehavior UnrefBehaviorArg>
236
233
  class Delete;
234
+
237
235
  template <typename T>
238
236
  class Delete<T, kUnrefDelete> {
239
237
  public:
@@ -21,11 +21,11 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <iosfwd>
24
25
  #include <type_traits>
25
26
  #include <utility>
26
27
 
27
28
  #include "src/core/lib/gprpp/debug_location.h"
28
- #include "src/core/lib/gprpp/memory.h"
29
29
 
30
30
  namespace grpc_core {
31
31
 
@@ -19,11 +19,9 @@
19
19
 
20
20
  #include <grpc/support/port_platform.h>
21
21
 
22
- #include <stdio.h>
23
22
  #include <time.h>
24
23
 
25
24
  #include "absl/status/status.h"
26
- #include "absl/strings/string_view.h"
27
25
 
28
26
  namespace grpc_core {
29
27
 
@@ -16,12 +16,17 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
+ // IWYU pragma: no_include <bits/struct_stat.h>
20
+
21
+ #include <string.h>
22
+
23
+ #include "absl/status/status.h"
24
+ #include "absl/strings/string_view.h"
25
+
19
26
  #ifdef GPR_POSIX_STAT
20
27
 
21
28
  #include <errno.h>
22
29
  #include <sys/stat.h>
23
- #include <sys/types.h>
24
- #include <unistd.h>
25
30
 
26
31
  #include <grpc/support/log.h>
27
32
 
@@ -20,22 +20,26 @@
20
20
 
21
21
  #include "src/core/lib/gprpp/status_helper.h"
22
22
 
23
- #include <type_traits>
23
+ #include <string.h>
24
+
25
+ #include <algorithm>
26
+ #include <new>
27
+ #include <utility>
24
28
 
25
29
  #include "absl/strings/cord.h"
26
30
  #include "absl/strings/escaping.h"
27
31
  #include "absl/strings/match.h"
28
- #include "absl/strings/str_format.h"
32
+ #include "absl/strings/numbers.h"
33
+ #include "absl/strings/str_cat.h"
29
34
  #include "absl/strings/str_join.h"
30
35
  #include "absl/time/clock.h"
31
36
  #include "google/protobuf/any.upb.h"
32
37
  #include "google/rpc/status.upb.h"
38
+ #include "upb/upb.h"
33
39
  #include "upb/upb.hpp"
34
40
 
35
41
  #include <grpc/support/log.h>
36
42
 
37
- #include "src/core/lib/gprpp/time_util.h"
38
-
39
43
  namespace grpc_core {
40
44
 
41
45
  namespace {
@@ -21,9 +21,13 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <stdint.h>
25
+
26
+ #include <string>
24
27
  #include <vector>
25
28
 
26
29
  #include "absl/status/status.h"
30
+ #include "absl/strings/string_view.h"
27
31
  #include "absl/time/time.h"
28
32
  #include "absl/types/optional.h"
29
33
 
@@ -21,13 +21,15 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include "absl/base/thread_annotations.h"
24
25
  #include "absl/synchronization/mutex.h"
25
26
 
26
27
  #include <grpc/support/log.h>
27
28
  #include <grpc/support/sync.h>
28
- #include <grpc/support/time.h>
29
29
 
30
+ #ifndef GPR_ABSEIL_SYNC
30
31
  #include "src/core/lib/gprpp/time_util.h"
32
+ #endif
31
33
 
32
34
  // The core library is not accessible in C++ codegen headers, and vice versa.
33
35
  // Thus, we need to have duplicate headers with similar functionality.
@@ -17,8 +17,14 @@
17
17
 
18
18
  #include <grpc/support/port_platform.h>
19
19
 
20
+ #include <stddef.h>
21
+
22
+ #include <initializer_list>
23
+ #include <new>
24
+ #include <type_traits>
20
25
  #include <utility>
21
26
 
27
+ #include "absl/meta/type_traits.h"
22
28
  #include "absl/utility/utility.h"
23
29
 
24
30
  #include "src/core/lib/gprpp/bitset.h"
@@ -31,6 +37,7 @@ namespace table_detail {
31
37
  // A tuple-like type that contains manually constructed elements.
32
38
  template <typename... Ts>
33
39
  struct Elements;
40
+
34
41
  template <typename T, typename... Ts>
35
42
  struct Elements<T, Ts...> : Elements<Ts...> {
36
43
  union U {
@@ -71,6 +78,7 @@ struct GetElem<I, T, Ts...> {
71
78
  // Sets a member constant N to the number of times Needle is in Haystack.
72
79
  template <typename Needle, typename... Haystack>
73
80
  struct CountIncludedStruct;
81
+
74
82
  template <typename Needle, typename Straw, typename... RestOfHaystack>
75
83
  struct CountIncludedStruct<Needle, Straw, RestOfHaystack...> {
76
84
  static constexpr size_t N =
@@ -92,6 +100,7 @@ constexpr size_t CountIncluded() {
92
100
  // Ignored should be void always, and is used for enable_if_t.
93
101
  template <typename Ignored, typename Needle, typename... Haystack>
94
102
  struct IndexOfStruct;
103
+
95
104
  template <typename Needle, typename Straw, typename... RestOfHaystack>
96
105
  struct IndexOfStruct<absl::enable_if_t<std::is_same<Needle, Straw>::value>,
97
106
  Needle, Straw, RestOfHaystack...> {
@@ -123,6 +132,7 @@ IndexOf() {
123
132
  // Implemented as a simple type recursion.
124
133
  template <size_t I, typename... Ts>
125
134
  struct TypeIndexStruct;
135
+
126
136
  template <typename T, typename... Ts>
127
137
  struct TypeIndexStruct<0, T, Ts...> {
128
138
  using Type = T;
@@ -23,12 +23,9 @@
23
23
 
24
24
  #include <grpc/support/port_platform.h>
25
25
 
26
- #include <grpc/support/log.h>
27
- #include <grpc/support/sync.h>
28
- #include <grpc/support/thd_id.h>
29
- #include <grpc/support/time.h>
26
+ #include <stddef.h>
30
27
 
31
- #include "src/core/lib/gprpp/memory.h"
28
+ #include <grpc/support/log.h>
32
29
 
33
30
  namespace grpc_core {
34
31
  namespace internal {
@@ -20,6 +20,9 @@
20
20
 
21
21
  #include <grpc/support/port_platform.h>
22
22
 
23
+ #include <grpc/impl/codegen/gpr_types.h>
24
+ #include <grpc/support/time.h>
25
+
23
26
  #ifdef GPR_POSIX_SYNC
24
27
 
25
28
  #include <pthread.h>
@@ -27,19 +30,18 @@
27
30
  #include <string.h>
28
31
  #include <unistd.h>
29
32
 
30
- #include <grpc/support/alloc.h>
31
33
  #include <grpc/support/log.h>
32
34
  #include <grpc/support/sync.h>
33
35
  #include <grpc/support/thd_id.h>
34
36
 
35
37
  #include "src/core/lib/gpr/useful.h"
36
38
  #include "src/core/lib/gprpp/fork.h"
37
- #include "src/core/lib/gprpp/memory.h"
38
39
  #include "src/core/lib/gprpp/thd.h"
39
40
 
40
41
  namespace grpc_core {
41
42
  namespace {
42
43
  class ThreadInternalsPosix;
44
+
43
45
  struct thd_arg {
44
46
  ThreadInternalsPosix* thread;
45
47
  void (*body)(void* arg); /* body of a thread */
@@ -26,7 +26,9 @@
26
26
 
27
27
  #include <grpc/support/alloc.h>
28
28
  #include <grpc/support/log.h>
29
+ #include <grpc/support/sync.h>
29
30
  #include <grpc/support/thd_id.h>
31
+ #include <grpc/support/time.h>
30
32
 
31
33
  #include "src/core/lib/gpr/tls.h"
32
34
  #include "src/core/lib/gprpp/memory.h"
@@ -20,6 +20,9 @@
20
20
  #include <cstdint>
21
21
  #include <limits>
22
22
  #include <string>
23
+ #include <utility>
24
+
25
+ #include "absl/strings/str_format.h"
23
26
 
24
27
  #include <grpc/impl/codegen/gpr_types.h>
25
28
  #include <grpc/support/log.h>
@@ -182,6 +185,11 @@ std::string Duration::ToString() const {
182
185
  return std::to_string(millis_) + "ms";
183
186
  }
184
187
 
188
+ std::string Duration::ToJsonString() const {
189
+ gpr_timespec ts = as_timespec();
190
+ return absl::StrFormat("%d.%09ds", ts.tv_sec, ts.tv_nsec);
191
+ }
192
+
185
193
  void TestOnlySetProcessEpoch(gpr_timespec epoch) {
186
194
  g_process_epoch_seconds.store(
187
195
  gpr_convert_clock_type(epoch, GPR_CLOCK_MONOTONIC).tv_sec);
@@ -19,11 +19,11 @@
19
19
 
20
20
  #include <stdint.h>
21
21
 
22
- #include <cstdint>
23
22
  #include <limits>
24
23
  #include <ostream>
25
24
  #include <string>
26
25
 
26
+ #include <grpc/impl/codegen/gpr_types.h>
27
27
  #include <grpc/support/time.h>
28
28
 
29
29
  #include "src/core/lib/gpr/time_precise.h"
@@ -211,6 +211,11 @@ class Duration {
211
211
 
212
212
  std::string ToString() const;
213
213
 
214
+ // Returns the duration in the JSON form corresponding to a
215
+ // google.protobuf.Duration proto, as defined here:
216
+ // https://developers.google.com/protocol-buffers/docs/proto3#json
217
+ std::string ToJsonString() const;
218
+
214
219
  private:
215
220
  explicit constexpr Duration(int64_t millis) : millis_(millis) {}
216
221
 
@@ -18,7 +18,11 @@
18
18
 
19
19
  #include "src/core/lib/gprpp/time_util.h"
20
20
 
21
+ #include <stdint.h>
22
+ #include <time.h>
23
+
21
24
  #include <grpc/support/log.h>
25
+ #include <grpc/support/time.h>
22
26
 
23
27
  namespace grpc_core {
24
28
 
@@ -21,7 +21,7 @@
21
21
 
22
22
  #include "absl/time/time.h"
23
23
 
24
- #include <grpc/support/time.h>
24
+ #include <grpc/impl/codegen/gpr_types.h>
25
25
 
26
26
  namespace grpc_core {
27
27
 
@@ -0,0 +1,104 @@
1
+ //
2
+ // Copyright 2022 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
18
+ #define GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <string>
23
+
24
+ #include "absl/strings/string_view.h"
25
+
26
+ #include "src/core/lib/gpr/useful.h"
27
+
28
+ // Provides a type name that is unique by instance rather than by
29
+ // string content. This is useful in cases where there are different
30
+ // implementations of a given interface that need to be differentiated from
31
+ // each other for down-casting purposes, where it is undesirable to provide
32
+ // a registry to avoid name collisions.
33
+ //
34
+ // Expected usage:
35
+ /*
36
+ // Interface has a virtual method that returns a UniqueTypeName.
37
+ class Interface {
38
+ public:
39
+ virtual ~Interface() = default;
40
+ virtual UniqueTypeName type() const = 0;
41
+ };
42
+
43
+ // Implementation uses a static factory instance to return the same
44
+ // UniqueTypeName for every instance.
45
+ class FooImplementation : public Interface {
46
+ public:
47
+ UniqueTypeName type() const override {
48
+ static UniqueTypeName::Factory kFactory("Foo");
49
+ return kFactory.Create();
50
+ }
51
+ };
52
+ */
53
+
54
+ namespace grpc_core {
55
+
56
+ class UniqueTypeName {
57
+ public:
58
+ // Factory class. There should be a single static instance of this
59
+ // for each unique type name.
60
+ class Factory {
61
+ public:
62
+ explicit Factory(absl::string_view name) : name_(new std::string(name)) {}
63
+
64
+ Factory(const Factory&) = delete;
65
+ Factory& operator=(const Factory&) = delete;
66
+
67
+ UniqueTypeName Create() { return UniqueTypeName(*name_); }
68
+
69
+ private:
70
+ std::string* name_;
71
+ };
72
+
73
+ // Copyable.
74
+ UniqueTypeName(const UniqueTypeName& other) : name_(other.name_) {}
75
+ UniqueTypeName& operator=(const UniqueTypeName& other) {
76
+ name_ = other.name_;
77
+ return *this;
78
+ }
79
+
80
+ bool operator==(const UniqueTypeName& other) const {
81
+ return name_.data() == other.name_.data();
82
+ }
83
+ bool operator!=(const UniqueTypeName& other) const {
84
+ return name_.data() != other.name_.data();
85
+ }
86
+ bool operator<(const UniqueTypeName& other) const {
87
+ return name_.data() < other.name_.data();
88
+ }
89
+
90
+ int Compare(const UniqueTypeName& other) const {
91
+ return QsortCompare(name_.data(), other.name_.data());
92
+ }
93
+
94
+ absl::string_view name() const { return name_; }
95
+
96
+ private:
97
+ explicit UniqueTypeName(absl::string_view name) : name_(name) {}
98
+
99
+ absl::string_view name_;
100
+ };
101
+
102
+ } // namespace grpc_core
103
+
104
+ #endif // GRPC_CORE_LIB_GPRPP_UNIQUE_TYPE_NAME_H
@@ -95,6 +95,35 @@ grpc_slice grpc_httpcli_format_post_request(const grpc_http_request* request,
95
95
  return grpc_slice_from_copied_buffer(req.data(), req.size());
96
96
  }
97
97
 
98
+ grpc_slice grpc_httpcli_format_put_request(const grpc_http_request* request,
99
+ const char* host, const char* path) {
100
+ std::vector<std::string> out;
101
+ out.push_back("PUT ");
102
+ fill_common_header(request, host, path, true, &out);
103
+ if (request->body != nullptr) {
104
+ bool has_content_type = false;
105
+ for (size_t i = 0; i < request->hdr_count; i++) {
106
+ if (strcmp(request->hdrs[i].key, "Content-Type") == 0) {
107
+ has_content_type = true;
108
+ break;
109
+ }
110
+ }
111
+ if (!has_content_type) {
112
+ out.push_back("Content-Type: text/plain\r\n");
113
+ }
114
+ out.push_back(
115
+ absl::StrFormat("Content-Length: %lu\r\n",
116
+ static_cast<unsigned long>(request->body_length)));
117
+ }
118
+ out.push_back("\r\n");
119
+ std::string req = absl::StrJoin(out, "");
120
+ if (request->body != nullptr) {
121
+ absl::StrAppend(&req,
122
+ absl::string_view(request->body, request->body_length));
123
+ }
124
+ return grpc_slice_from_copied_buffer(req.data(), req.size());
125
+ }
126
+
98
127
  grpc_slice grpc_httpcli_format_connect_request(const grpc_http_request* request,
99
128
  const char* host,
100
129
  const char* path) {
@@ -29,6 +29,8 @@ grpc_slice grpc_httpcli_format_get_request(const grpc_http_request* request,
29
29
  const char* host, const char* path);
30
30
  grpc_slice grpc_httpcli_format_post_request(const grpc_http_request* request,
31
31
  const char* host, const char* path);
32
+ grpc_slice grpc_httpcli_format_put_request(const grpc_http_request* request,
33
+ const char* host, const char* path);
32
34
  grpc_slice grpc_httpcli_format_connect_request(const grpc_http_request* request,
33
35
  const char* host,
34
36
  const char* path);