grpc 1.73.0 → 1.74.0

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.
Files changed (499) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +38 -17
  3. data/include/grpc/create_channel_from_endpoint.h +54 -0
  4. data/include/grpc/credentials.h +11 -5
  5. data/include/grpc/event_engine/event_engine.h +74 -17
  6. data/include/grpc/grpc_posix.h +20 -1
  7. data/include/grpc/impl/channel_arg_names.h +2 -4
  8. data/include/grpc/module.modulemap +1 -0
  9. data/include/grpc/support/json.h +24 -0
  10. data/src/core/call/interception_chain.h +7 -11
  11. data/src/core/channelz/channel_trace.cc +213 -115
  12. data/src/core/channelz/channel_trace.h +380 -86
  13. data/src/core/channelz/channelz.cc +270 -181
  14. data/src/core/channelz/channelz.h +168 -55
  15. data/src/core/channelz/channelz_registry.cc +2 -1
  16. data/src/core/channelz/channelz_registry.h +24 -0
  17. data/src/core/channelz/property_list.cc +357 -0
  18. data/src/core/channelz/property_list.h +202 -0
  19. data/src/core/channelz/ztrace_collector.h +3 -2
  20. data/src/core/client_channel/backup_poller.cc +17 -2
  21. data/src/core/client_channel/client_channel.cc +17 -28
  22. data/src/core/client_channel/client_channel_filter.cc +19 -29
  23. data/src/core/client_channel/config_selector.h +8 -2
  24. data/src/core/client_channel/dynamic_filters.cc +5 -6
  25. data/src/core/client_channel/dynamic_filters.h +1 -1
  26. data/src/core/client_channel/global_subchannel_pool.cc +4 -1
  27. data/src/core/client_channel/retry_filter.cc +21 -27
  28. data/src/core/client_channel/retry_filter.h +10 -7
  29. data/src/core/client_channel/retry_filter_legacy_call_data.cc +5 -5
  30. data/src/core/client_channel/retry_filter_legacy_call_data.h +1 -1
  31. data/src/core/client_channel/retry_interceptor.cc +30 -44
  32. data/src/core/client_channel/retry_interceptor.h +18 -17
  33. data/src/core/client_channel/retry_throttle.cc +46 -61
  34. data/src/core/client_channel/retry_throttle.h +17 -39
  35. data/src/core/client_channel/subchannel.cc +43 -19
  36. data/src/core/client_channel/subchannel.h +8 -0
  37. data/src/core/config/config_vars.cc +2 -0
  38. data/src/core/config/core_configuration.cc +1 -0
  39. data/src/core/config/core_configuration.h +11 -0
  40. data/src/core/credentials/call/call_creds_registry.h +125 -0
  41. data/src/core/credentials/call/call_creds_registry_init.cc +91 -0
  42. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +6 -48
  43. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +86 -0
  44. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.h +74 -0
  45. data/src/core/credentials/call/jwt_util.cc +70 -0
  46. data/src/core/credentials/call/jwt_util.h +32 -0
  47. data/src/core/credentials/transport/channel_creds_registry_init.cc +1 -1
  48. data/src/core/credentials/transport/google_default/google_default_credentials.cc +72 -4
  49. data/src/core/credentials/transport/ssl/ssl_credentials.cc +0 -1
  50. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +1 -0
  51. data/src/core/credentials/transport/xds/xds_credentials.cc +0 -3
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +8 -8
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +16 -16
  54. data/src/core/ext/filters/http/client_authority_filter.cc +2 -4
  55. data/src/core/ext/filters/http/message_compress/compression_filter.h +25 -22
  56. data/src/core/ext/filters/http/server/http_server_filter.h +12 -11
  57. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +120 -35
  58. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +6 -5
  59. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +162 -115
  60. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +0 -3
  61. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +1239 -3514
  62. data/src/core/ext/transport/chttp2/transport/decode_huff.h +1008 -1486
  63. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -17
  64. data/src/core/ext/transport/chttp2/transport/frame.cc +10 -0
  65. data/src/core/ext/transport/chttp2/transport/frame.h +2 -2
  66. data/src/core/ext/transport/chttp2/transport/frame_data.cc +1 -1
  67. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -5
  69. data/src/core/ext/transport/chttp2/transport/header_assembler.h +299 -0
  70. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +1 -1
  71. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +11 -5
  72. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +12 -1
  73. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +1017 -0
  74. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +593 -0
  75. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -22
  76. data/{third_party/abseil-cpp/absl/strings/cord_buffer.cc → src/core/ext/transport/chttp2/transport/http2_stats_collector.cc} +14 -14
  77. data/src/core/ext/transport/chttp2/transport/http2_stats_collector.h +33 -0
  78. data/src/core/ext/transport/chttp2/transport/http2_status.h +6 -1
  79. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +43 -0
  80. data/src/core/ext/transport/chttp2/transport/http2_transport.h +65 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_ztrace_collector.h +0 -29
  82. data/src/core/ext/transport/chttp2/transport/internal.h +18 -8
  83. data/src/core/ext/transport/chttp2/transport/keepalive.cc +105 -0
  84. data/src/core/ext/transport/chttp2/transport/keepalive.h +138 -0
  85. data/src/core/ext/transport/chttp2/transport/message_assembler.h +185 -0
  86. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
  87. data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +19 -0
  88. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +151 -0
  89. data/src/core/ext/transport/chttp2/transport/ping_promise.h +180 -0
  90. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +5 -9
  91. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +11 -0
  92. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +39 -1
  93. data/src/core/ext/transport/chttp2/transport/transport_common.cc +19 -0
  94. data/src/core/ext/transport/chttp2/transport/transport_common.h +27 -0
  95. data/src/core/ext/transport/chttp2/transport/writing.cc +37 -11
  96. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +571 -0
  97. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +120 -0
  98. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +36 -0
  99. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +1272 -0
  100. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +312 -0
  101. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +50 -0
  102. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +984 -0
  103. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +226 -0
  104. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +44 -0
  105. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.c +175 -0
  106. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/promise.upbdefs.h +82 -0
  107. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +135 -0
  108. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +67 -0
  109. data/src/core/filter/auth/auth_filters.h +0 -25
  110. data/src/core/filter/auth/client_auth_filter.cc +0 -118
  111. data/src/core/filter/filter_args.h +9 -23
  112. data/src/core/handshaker/handshaker.cc +23 -14
  113. data/src/core/handshaker/handshaker.h +3 -0
  114. data/src/core/handshaker/http_connect/http_connect_handshaker.cc +3 -1
  115. data/src/core/handshaker/security/legacy_secure_endpoint.cc +6 -5
  116. data/src/core/handshaker/security/secure_endpoint.cc +70 -25
  117. data/src/core/handshaker/security/security_handshaker.cc +4 -1
  118. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +7 -1
  119. data/src/core/lib/channel/channel_args.cc +15 -0
  120. data/src/core/lib/channel/channel_args.h +3 -0
  121. data/src/core/lib/channel/channel_stack.cc +22 -23
  122. data/src/core/lib/channel/channel_stack.h +9 -7
  123. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  124. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -7
  125. data/src/core/lib/channel/promise_based_filter.h +5 -5
  126. data/src/core/lib/debug/trace_impl.h +0 -1
  127. data/src/core/lib/event_engine/ares_resolver.cc +165 -46
  128. data/src/core/lib/event_engine/ares_resolver.h +48 -2
  129. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +3 -1
  130. data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -4
  131. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +2 -6
  132. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.cc +40 -0
  133. data/src/core/lib/event_engine/endpoint_channel_arg_wrapper.h +60 -0
  134. data/src/core/lib/event_engine/event_engine.cc +7 -0
  135. data/src/core/lib/event_engine/extensions/channelz.h +10 -6
  136. data/src/core/lib/event_engine/grpc_polled_fd.h +5 -0
  137. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +130 -162
  138. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +11 -15
  139. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +75 -117
  140. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -9
  141. data/src/core/lib/event_engine/posix_engine/event_poller.h +18 -15
  142. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +0 -18
  143. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +124 -0
  144. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.h +243 -0
  145. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +29 -19
  146. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +6 -2
  147. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +6 -1
  148. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +145 -92
  149. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -19
  150. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +333 -116
  151. data/src/core/lib/event_engine/posix_engine/posix_engine.h +61 -18
  152. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +45 -37
  153. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +6 -4
  154. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +32 -142
  155. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +6 -5
  156. data/src/core/lib/event_engine/posix_engine/posix_interface.h +211 -0
  157. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +1083 -0
  158. data/src/core/lib/event_engine/posix_engine/posix_interface_windows.cc +281 -0
  159. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.cc +154 -0
  160. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +174 -0
  161. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -719
  162. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +10 -170
  163. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +33 -22
  164. data/src/core/lib/event_engine/posix_engine/timer_manager.h +13 -11
  165. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +117 -151
  166. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +26 -94
  167. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +26 -25
  168. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +6 -2
  169. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +36 -62
  170. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +6 -2
  171. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +7 -6
  172. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +12 -6
  173. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -1
  174. data/src/core/lib/event_engine/shim.cc +9 -0
  175. data/src/core/lib/event_engine/shim.h +3 -0
  176. data/src/core/lib/event_engine/thread_pool/thread_pool.h +7 -3
  177. data/src/core/lib/event_engine/thread_pool/thread_pool_factory.cc +0 -17
  178. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +4 -2
  179. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -2
  180. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -0
  181. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.h +4 -0
  182. data/src/core/lib/event_engine/windows/windows_endpoint.h +2 -6
  183. data/src/core/lib/event_engine/windows/windows_engine.cc +0 -1
  184. data/src/core/lib/event_engine/windows/windows_engine.h +1 -3
  185. data/src/core/lib/event_engine/windows/windows_listener.cc +14 -2
  186. data/src/core/lib/experiments/experiments.cc +45 -93
  187. data/src/core/lib/experiments/experiments.h +21 -51
  188. data/src/core/lib/iomgr/endpoint.cc +4 -3
  189. data/src/core/lib/iomgr/endpoint.h +7 -4
  190. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -2
  191. data/src/core/lib/iomgr/ev_epoll1_linux.cc +7 -2
  192. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -2
  193. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +4 -6
  194. data/src/core/lib/iomgr/tcp_posix.cc +12 -6
  195. data/src/core/lib/iomgr/tcp_windows.cc +3 -2
  196. data/src/core/lib/promise/activity.h +1 -0
  197. data/src/core/lib/promise/arena_promise.h +23 -7
  198. data/src/core/lib/promise/detail/promise_factory.h +10 -0
  199. data/src/core/lib/promise/detail/promise_like.h +118 -11
  200. data/src/core/lib/promise/detail/promise_variant.h +50 -0
  201. data/src/core/lib/promise/detail/seq_state.h +687 -548
  202. data/src/core/lib/promise/if.h +20 -0
  203. data/src/core/lib/promise/inter_activity_latch.h +147 -0
  204. data/src/core/lib/promise/inter_activity_mutex.h +547 -0
  205. data/src/core/lib/promise/loop.h +65 -3
  206. data/src/core/lib/promise/map.h +24 -0
  207. data/src/core/lib/promise/match_promise.h +103 -0
  208. data/src/core/lib/promise/mpsc.cc +425 -0
  209. data/src/core/lib/promise/mpsc.h +490 -0
  210. data/src/core/lib/promise/party.cc +50 -1
  211. data/src/core/lib/promise/party.h +66 -1
  212. data/src/core/lib/promise/race.h +31 -0
  213. data/src/core/lib/promise/seq.h +4 -1
  214. data/src/core/lib/promise/status_flag.h +7 -0
  215. data/src/core/lib/promise/try_seq.h +4 -1
  216. data/src/core/lib/promise/wait_set.cc +28 -0
  217. data/src/core/lib/promise/wait_set.h +86 -0
  218. data/src/core/lib/resource_quota/arena.h +19 -0
  219. data/src/core/lib/slice/slice.h +5 -0
  220. data/src/core/lib/surface/channel_create.cc +88 -13
  221. data/src/core/lib/surface/channel_create.h +4 -0
  222. data/src/core/lib/surface/channel_init.cc +164 -47
  223. data/src/core/lib/surface/channel_init.h +64 -1
  224. data/src/core/lib/surface/filter_stack_call.cc +18 -9
  225. data/src/core/lib/surface/init.cc +6 -15
  226. data/src/core/lib/surface/legacy_channel.cc +3 -5
  227. data/src/core/lib/surface/legacy_channel.h +3 -1
  228. data/src/core/lib/surface/version.cc +2 -2
  229. data/src/core/lib/transport/promise_endpoint.cc +110 -0
  230. data/src/core/lib/transport/promise_endpoint.h +307 -0
  231. data/src/core/load_balancing/child_policy_handler.cc +2 -4
  232. data/src/core/load_balancing/delegating_helper.h +2 -3
  233. data/src/core/load_balancing/health_check_client.cc +1 -5
  234. data/src/core/load_balancing/lb_policy.h +1 -3
  235. data/src/core/load_balancing/oob_backend_metric.cc +1 -5
  236. data/src/core/load_balancing/pick_first/pick_first.cc +3 -0
  237. data/src/core/load_balancing/xds/cds.cc +10 -1
  238. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  239. data/src/core/resolver/xds/xds_config.cc +6 -3
  240. data/src/core/resolver/xds/xds_config.h +9 -4
  241. data/src/core/resolver/xds/xds_dependency_manager.cc +21 -6
  242. data/src/core/resolver/xds/xds_dependency_manager.h +2 -1
  243. data/src/core/resolver/xds/xds_resolver.cc +31 -11
  244. data/src/core/server/server.cc +83 -12
  245. data/src/core/server/server.h +21 -2
  246. data/src/core/server/xds_server_config_fetcher.cc +63 -25
  247. data/src/core/service_config/service_config.h +1 -1
  248. data/src/core/service_config/service_config_impl.h +1 -1
  249. data/src/core/telemetry/context_list_entry.cc +38 -0
  250. data/src/core/telemetry/context_list_entry.h +42 -12
  251. data/src/core/telemetry/stats_data.cc +233 -207
  252. data/src/core/telemetry/stats_data.h +250 -153
  253. data/src/core/telemetry/tcp_tracer.h +1 -1
  254. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +11 -3
  255. data/src/core/tsi/fake_transport_security.cc +17 -0
  256. data/src/core/tsi/ssl_transport_security.cc +2 -0
  257. data/src/core/tsi/transport_security_grpc.cc +8 -0
  258. data/src/core/tsi/transport_security_grpc.h +15 -0
  259. data/src/core/util/backoff.cc +1 -5
  260. data/src/core/util/backoff.h +1 -0
  261. data/src/core/util/down_cast.h +1 -1
  262. data/src/core/util/function_signature.h +15 -1
  263. data/src/core/util/http_client/httpcli.cc +12 -5
  264. data/src/core/util/http_client/httpcli.h +4 -1
  265. data/src/core/util/latent_see.h +8 -5
  266. data/src/core/util/log.cc +4 -0
  267. data/src/core/util/memory_usage.h +268 -0
  268. data/src/core/util/per_cpu.cc +2 -0
  269. data/src/core/util/per_cpu.h +7 -0
  270. data/src/core/util/shared_bit_gen.h +20 -0
  271. data/src/core/util/single_set_ptr.h +2 -2
  272. data/src/core/util/upb_utils.h +42 -0
  273. data/src/core/util/uri.cc +3 -2
  274. data/src/core/util/useful.h +53 -2
  275. data/src/core/util/wait_for_single_owner.cc +31 -0
  276. data/src/core/util/wait_for_single_owner.h +24 -0
  277. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +2 -0
  278. data/src/core/xds/grpc/xds_bootstrap_grpc.h +5 -0
  279. data/src/core/xds/grpc/xds_client_grpc.cc +6 -2
  280. data/src/core/xds/grpc/xds_common_types_parser.cc +138 -50
  281. data/src/core/xds/grpc/xds_common_types_parser.h +12 -0
  282. data/src/core/xds/grpc/xds_http_filter.h +7 -0
  283. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +22 -0
  284. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +3 -0
  285. data/src/core/xds/grpc/xds_route_config_parser.cc +15 -38
  286. data/src/core/xds/grpc/xds_server_grpc.cc +63 -13
  287. data/src/core/xds/grpc/xds_server_grpc.h +10 -2
  288. data/src/core/xds/grpc/xds_server_grpc_interface.h +4 -0
  289. data/src/core/xds/grpc/xds_transport_grpc.cc +18 -0
  290. data/src/core/xds/xds_client/xds_bootstrap.h +2 -0
  291. data/src/core/xds/xds_client/xds_client.cc +26 -5
  292. data/src/ruby/ext/grpc/extconf.rb +2 -0
  293. data/src/ruby/ext/grpc/rb_call.c +1 -8
  294. data/src/ruby/ext/grpc/rb_channel.c +72 -568
  295. data/src/ruby/ext/grpc/rb_channel.h +0 -3
  296. data/src/ruby/ext/grpc/rb_completion_queue.c +26 -14
  297. data/src/ruby/ext/grpc/rb_completion_queue.h +1 -7
  298. data/src/ruby/ext/grpc/rb_grpc.c +9 -5
  299. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  300. data/src/ruby/ext/grpc/rb_loader.c +0 -4
  301. data/src/ruby/ext/grpc/rb_server.c +31 -50
  302. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -4
  303. data/src/ruby/lib/grpc/version.rb +1 -1
  304. data/src/ruby/spec/core_spec.rb +22 -0
  305. data/src/ruby/spec/generic/active_call_spec.rb +1 -1
  306. data/third_party/abseil-cpp/absl/algorithm/container.h +2 -19
  307. data/third_party/abseil-cpp/absl/base/attributes.h +76 -7
  308. data/third_party/abseil-cpp/absl/base/call_once.h +11 -12
  309. data/third_party/abseil-cpp/absl/base/config.h +20 -129
  310. data/third_party/abseil-cpp/absl/base/{internal/fast_type_id.h → fast_type_id.h} +11 -16
  311. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +0 -5
  312. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +7 -7
  313. data/third_party/abseil-cpp/absl/base/internal/endian.h +34 -38
  314. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +71 -0
  315. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +6 -5
  316. data/third_party/abseil-cpp/absl/base/internal/{nullability_impl.h → nullability_deprecated.h} +45 -8
  317. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +0 -9
  318. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -13
  319. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +6 -6
  320. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +8 -3
  321. data/third_party/abseil-cpp/absl/base/no_destructor.h +11 -32
  322. data/third_party/abseil-cpp/absl/base/nullability.h +84 -72
  323. data/third_party/abseil-cpp/absl/base/options.h +3 -80
  324. data/third_party/abseil-cpp/absl/base/policy_checks.h +7 -7
  325. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +1 -3
  326. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -4
  327. data/third_party/abseil-cpp/absl/container/btree_map.h +4 -2
  328. data/third_party/abseil-cpp/absl/container/btree_set.h +4 -2
  329. data/third_party/abseil-cpp/absl/container/fixed_array.h +7 -14
  330. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +5 -0
  331. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +6 -1
  332. data/third_party/abseil-cpp/absl/container/inlined_vector.h +8 -5
  333. data/third_party/abseil-cpp/absl/container/internal/btree.h +132 -29
  334. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +175 -71
  335. data/third_party/abseil-cpp/absl/container/internal/common.h +43 -0
  336. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -2
  337. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +9 -10
  338. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +1 -8
  339. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +0 -4
  340. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +527 -0
  341. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +20 -4
  342. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +31 -12
  343. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +2 -7
  344. data/third_party/abseil-cpp/absl/container/internal/layout.h +26 -42
  345. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +199 -68
  346. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +1354 -183
  347. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +881 -1424
  348. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +80 -0
  349. data/third_party/abseil-cpp/absl/crc/crc32c.cc +0 -4
  350. data/third_party/abseil-cpp/absl/crc/crc32c.h +7 -5
  351. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +0 -22
  352. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +45 -74
  353. data/third_party/abseil-cpp/absl/debugging/internal/addresses.h +57 -0
  354. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.cc +1 -1
  355. data/third_party/abseil-cpp/absl/debugging/internal/decode_rust_punycode.h +5 -5
  356. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +8 -35
  357. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.cc +16 -16
  358. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +40 -37
  359. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +16 -7
  360. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +14 -5
  361. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +10 -4
  362. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +27 -16
  363. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +13 -4
  364. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +4 -3
  365. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +15 -28
  366. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +19 -9
  367. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +144 -27
  368. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +73 -5
  369. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +19 -9
  370. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +3 -2
  371. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +25 -6
  372. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +2 -2
  373. data/third_party/abseil-cpp/absl/flags/flag.h +4 -3
  374. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +2 -2
  375. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +2 -1
  376. data/third_party/abseil-cpp/absl/flags/internal/flag.h +7 -6
  377. data/third_party/abseil-cpp/absl/flags/internal/registry.h +4 -3
  378. data/third_party/abseil-cpp/absl/flags/reflection.cc +2 -3
  379. data/third_party/abseil-cpp/absl/functional/any_invocable.h +8 -10
  380. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -9
  381. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +110 -226
  382. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +10 -12
  383. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -5
  384. data/third_party/abseil-cpp/absl/hash/hash.h +18 -0
  385. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +1 -5
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -61
  387. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +25 -68
  388. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +2 -6
  389. data/third_party/abseil-cpp/absl/hash/internal/weakly_mixed_integer.h +38 -0
  390. data/third_party/abseil-cpp/absl/log/check.h +2 -1
  391. data/third_party/abseil-cpp/absl/log/globals.h +4 -5
  392. data/third_party/abseil-cpp/absl/log/internal/append_truncated.h +28 -0
  393. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +22 -22
  394. data/third_party/abseil-cpp/absl/log/internal/check_op.h +65 -62
  395. data/third_party/abseil-cpp/absl/log/internal/conditions.cc +5 -3
  396. data/third_party/abseil-cpp/absl/log/internal/conditions.h +7 -2
  397. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +85 -43
  398. data/third_party/abseil-cpp/absl/log/internal/log_message.h +84 -59
  399. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -0
  400. data/third_party/abseil-cpp/absl/log/internal/proto.cc +3 -2
  401. data/third_party/abseil-cpp/absl/log/internal/proto.h +3 -3
  402. data/third_party/abseil-cpp/absl/log/internal/strip.h +4 -12
  403. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +8 -6
  404. data/third_party/abseil-cpp/absl/log/internal/voidify.h +10 -4
  405. data/third_party/abseil-cpp/absl/log/log.h +48 -35
  406. data/third_party/abseil-cpp/absl/log/log_sink_registry.h +2 -2
  407. data/third_party/abseil-cpp/absl/meta/type_traits.h +46 -175
  408. data/third_party/abseil-cpp/absl/numeric/bits.h +68 -2
  409. data/third_party/abseil-cpp/absl/numeric/int128.cc +0 -52
  410. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +7 -3
  411. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +1 -1
  412. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +10 -11
  413. data/third_party/abseil-cpp/absl/random/distributions.h +6 -8
  414. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +1 -1
  415. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +5 -6
  416. data/third_party/abseil-cpp/absl/random/internal/{pool_urbg.cc → entropy_pool.cc} +22 -90
  417. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.h +35 -0
  418. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +5 -6
  419. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +1 -1
  420. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +20 -12
  421. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +5 -5
  422. data/third_party/abseil-cpp/absl/random/random.h +88 -53
  423. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +6 -2
  424. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +3 -4
  425. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +3 -4
  426. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -3
  427. data/third_party/abseil-cpp/absl/status/status.cc +4 -8
  428. data/third_party/abseil-cpp/absl/status/status.h +8 -8
  429. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +2 -2
  430. data/third_party/abseil-cpp/absl/status/statusor.cc +2 -2
  431. data/third_party/abseil-cpp/absl/status/statusor.h +6 -6
  432. data/third_party/abseil-cpp/absl/strings/ascii.cc +9 -9
  433. data/third_party/abseil-cpp/absl/strings/ascii.h +18 -18
  434. data/third_party/abseil-cpp/absl/strings/charconv.cc +21 -22
  435. data/third_party/abseil-cpp/absl/strings/charconv.h +5 -5
  436. data/third_party/abseil-cpp/absl/strings/cord.cc +54 -58
  437. data/third_party/abseil-cpp/absl/strings/cord.h +94 -83
  438. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +11 -11
  439. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +3 -3
  440. data/third_party/abseil-cpp/absl/strings/escaping.cc +130 -149
  441. data/third_party/abseil-cpp/absl/strings/escaping.h +9 -10
  442. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +6 -8
  444. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +0 -4
  445. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +0 -4
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +7 -63
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -11
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +0 -22
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +5 -3
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  451. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +3 -3
  452. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +0 -5
  453. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +96 -1
  454. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +15 -1
  455. data/third_party/abseil-cpp/absl/strings/numbers.cc +53 -32
  456. data/third_party/abseil-cpp/absl/strings/numbers.h +87 -58
  457. data/third_party/abseil-cpp/absl/strings/str_cat.cc +6 -7
  458. data/third_party/abseil-cpp/absl/strings/str_cat.h +32 -32
  459. data/third_party/abseil-cpp/absl/strings/str_format.h +18 -18
  460. data/third_party/abseil-cpp/absl/strings/str_replace.cc +3 -3
  461. data/third_party/abseil-cpp/absl/strings/str_replace.h +6 -6
  462. data/third_party/abseil-cpp/absl/strings/string_view.cc +4 -9
  463. data/third_party/abseil-cpp/absl/strings/string_view.h +27 -32
  464. data/third_party/abseil-cpp/absl/strings/strip.h +4 -4
  465. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -4
  466. data/third_party/abseil-cpp/absl/strings/substitute.h +66 -64
  467. data/third_party/abseil-cpp/absl/synchronization/internal/futex_waiter.cc +0 -4
  468. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.cc +0 -5
  469. data/third_party/abseil-cpp/absl/synchronization/internal/pthread_waiter.cc +0 -4
  470. data/third_party/abseil-cpp/absl/synchronization/internal/sem_waiter.cc +0 -4
  471. data/third_party/abseil-cpp/absl/synchronization/internal/stdcpp_waiter.cc +0 -4
  472. data/third_party/abseil-cpp/absl/synchronization/internal/waiter_base.cc +0 -4
  473. data/third_party/abseil-cpp/absl/synchronization/internal/win32_waiter.cc +0 -4
  474. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +1 -1
  475. data/third_party/abseil-cpp/absl/synchronization/mutex.h +97 -69
  476. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -0
  478. data/third_party/abseil-cpp/absl/time/duration.cc +12 -7
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +90 -111
  481. data/third_party/abseil-cpp/absl/time/time.h +20 -15
  482. data/third_party/abseil-cpp/absl/types/optional.h +7 -747
  483. data/third_party/abseil-cpp/absl/types/span.h +13 -11
  484. data/third_party/abseil-cpp/absl/types/variant.h +5 -784
  485. data/third_party/abseil-cpp/absl/utility/utility.h +10 -185
  486. metadata +72 -20
  487. data/src/core/lib/event_engine/forkable.cc +0 -105
  488. data/src/core/lib/event_engine/forkable.h +0 -67
  489. data/src/core/lib/iomgr/python_util.h +0 -46
  490. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +0 -108
  491. data/third_party/abseil-cpp/absl/base/internal/invoke.h +0 -241
  492. data/third_party/abseil-cpp/absl/log/log_entry.cc +0 -41
  493. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +0 -131
  494. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +0 -66
  495. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +0 -78
  496. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +0 -82
  497. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +0 -82
  498. data/third_party/abseil-cpp/absl/types/internal/optional.h +0 -352
  499. data/third_party/abseil-cpp/absl/types/internal/variant.h +0 -1622
@@ -1,105 +0,0 @@
1
- // Copyright 2022 gRPC authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #include "src/core/lib/event_engine/forkable.h"
16
-
17
- #include <grpc/support/port_platform.h>
18
-
19
- #include "absl/log/check.h"
20
-
21
- #ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
22
- #include <pthread.h>
23
- #endif
24
-
25
- #include <algorithm>
26
- #include <utility>
27
- #include <vector>
28
-
29
- #include "src/core/config/config_vars.h"
30
- #include "src/core/lib/debug/trace.h"
31
-
32
- namespace grpc_event_engine::experimental {
33
-
34
- namespace {
35
- bool IsForkEnabled() {
36
- static bool enabled = grpc_core::ConfigVars::Get().EnableForkSupport();
37
- return enabled;
38
- }
39
- } // namespace
40
-
41
- void ObjectGroupForkHandler::RegisterForkable(
42
- std::shared_ptr<Forkable> forkable, GRPC_UNUSED void (*prepare)(void),
43
- GRPC_UNUSED void (*parent)(void), GRPC_UNUSED void (*child)(void)) {
44
- if (IsForkEnabled()) {
45
- CHECK(!is_forking_);
46
- forkables_.emplace_back(forkable);
47
- #ifdef GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
48
- if (!std::exchange(registered_, true)) {
49
- pthread_atfork(prepare, parent, child);
50
- }
51
- #endif // GRPC_POSIX_FORK_ALLOW_PTHREAD_ATFORK
52
- }
53
- }
54
-
55
- void ObjectGroupForkHandler::Prefork() {
56
- if (IsForkEnabled()) {
57
- CHECK(!std::exchange(is_forking_, true));
58
- GRPC_TRACE_LOG(fork, INFO) << "PrepareFork";
59
- for (auto it = forkables_.begin(); it != forkables_.end();) {
60
- auto shared = it->lock();
61
- if (shared) {
62
- shared->PrepareFork();
63
- ++it;
64
- } else {
65
- it = forkables_.erase(it);
66
- }
67
- }
68
- }
69
- }
70
-
71
- void ObjectGroupForkHandler::PostforkParent() {
72
- if (IsForkEnabled()) {
73
- CHECK(is_forking_);
74
- GRPC_TRACE_LOG(fork, INFO) << "PostforkParent";
75
- for (auto it = forkables_.begin(); it != forkables_.end();) {
76
- auto shared = it->lock();
77
- if (shared) {
78
- shared->PostforkParent();
79
- ++it;
80
- } else {
81
- it = forkables_.erase(it);
82
- }
83
- }
84
- is_forking_ = false;
85
- }
86
- }
87
-
88
- void ObjectGroupForkHandler::PostforkChild() {
89
- if (IsForkEnabled()) {
90
- CHECK(is_forking_);
91
- GRPC_TRACE_LOG(fork, INFO) << "PostforkChild";
92
- for (auto it = forkables_.begin(); it != forkables_.end();) {
93
- auto shared = it->lock();
94
- if (shared) {
95
- shared->PostforkChild();
96
- ++it;
97
- } else {
98
- it = forkables_.erase(it);
99
- }
100
- }
101
- is_forking_ = false;
102
- }
103
- }
104
-
105
- } // namespace grpc_event_engine::experimental
@@ -1,67 +0,0 @@
1
- // Copyright 2022 gRPC authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // http://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- #ifndef GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
15
- #define GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
16
-
17
- #include <grpc/support/port_platform.h>
18
-
19
- #include <memory>
20
- #include <vector>
21
-
22
- #include "src/core/lib/debug/trace.h"
23
-
24
- namespace grpc_event_engine::experimental {
25
-
26
- // An interface to be implemented by EventEngines that wish to have managed fork
27
- // support. The child class must guarantee that those methods are thread-safe.
28
- class Forkable {
29
- public:
30
- virtual ~Forkable() = default;
31
- virtual void PrepareFork() = 0;
32
- virtual void PostforkParent() = 0;
33
- virtual void PostforkChild() = 0;
34
- };
35
-
36
- // ObjectGroupForkHandler is meant to be used as a static object in each
37
- // translation unit where Forkables are created and registered with the
38
- // ObjectGroupForkHandler. It essentially provides storage for Forkables'
39
- // instances (as a vector of weak pointers) and helper methods that are meant to
40
- // be invoked inside the fork handlers (see pthread_atfork(3)). The idea is to
41
- // have different Forkables (e.g. PosixEventPoller) to store their instances
42
- // (e.g. a PosixEventPoller object) in a single place separated from other
43
- // Forkables (a sharded approach). Forkables need to register their pthread fork
44
- // handlers and manage the relative ordering themselves. This object is
45
- // thread-unsafe.
46
- class ObjectGroupForkHandler {
47
- public:
48
- // Registers a Forkable with this ObjectGroupForkHandler, the Forkable must be
49
- // created as a shared pointer.
50
- void RegisterForkable(std::shared_ptr<Forkable> forkable,
51
- GRPC_UNUSED void (*prepare)(void),
52
- GRPC_UNUSED void (*parent)(void),
53
- GRPC_UNUSED void (*child)(void));
54
-
55
- void Prefork();
56
- void PostforkParent();
57
- void PostforkChild();
58
-
59
- private:
60
- GRPC_UNUSED bool registered_ = false;
61
- bool is_forking_ = false;
62
- std::vector<std::weak_ptr<Forkable> > forkables_;
63
- };
64
-
65
- } // namespace grpc_event_engine::experimental
66
-
67
- #endif // GRPC_SRC_CORE_LIB_EVENT_ENGINE_FORKABLE_H
@@ -1,46 +0,0 @@
1
- //
2
- //
3
- // Copyright 2018 gRPC authors.
4
- //
5
- // Licensed under the Apache License, Version 2.0 (the "License");
6
- // you may not use this file except in compliance with the License.
7
- // You may obtain a copy of the License at
8
- //
9
- // http://www.apache.org/licenses/LICENSE-2.0
10
- //
11
- // Unless required by applicable law or agreed to in writing, software
12
- // distributed under the License is distributed on an "AS IS" BASIS,
13
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- // See the License for the specific language governing permissions and
15
- // limitations under the License.
16
- //
17
- //
18
-
19
- #ifndef GRPC_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
20
- #define GRPC_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
21
-
22
- #include <grpc/slice.h>
23
- #include <grpc/status.h>
24
- #include <grpc/support/port_platform.h>
25
-
26
- #include "src/core/lib/iomgr/error.h"
27
-
28
- // These are only used by the gRPC Python extensions.
29
- // They are easier to define here (rather than in Cython)
30
- // because Cython doesn't handle #defines well.
31
-
32
- inline grpc_error_handle grpc_socket_error(char* error) {
33
- return grpc_error_set_int(GRPC_ERROR_CREATE(error),
34
- grpc_core::StatusIntProperty::kRpcStatus,
35
- GRPC_STATUS_UNAVAILABLE);
36
- }
37
-
38
- inline char* grpc_slice_buffer_start(grpc_slice_buffer* buffer, int i) {
39
- return reinterpret_cast<char*>(GRPC_SLICE_START_PTR(buffer->slices[i]));
40
- }
41
-
42
- inline int grpc_slice_buffer_length(grpc_slice_buffer* buffer, int i) {
43
- return GRPC_SLICE_LENGTH(buffer->slices[i]);
44
- }
45
-
46
- #endif // GRPC_SRC_CORE_LIB_IOMGR_PYTHON_UTIL_H
@@ -1,108 +0,0 @@
1
- // Copyright 2017 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
-
15
- #ifndef ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
16
- #define ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
17
-
18
- #include <type_traits>
19
-
20
- #include "absl/base/internal/identity.h"
21
-
22
- // File:
23
- // This file define a macro that allows the creation of or emulation of C++17
24
- // inline variables based on whether or not the feature is supported.
25
-
26
- ////////////////////////////////////////////////////////////////////////////////
27
- // Macro: ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init)
28
- //
29
- // Description:
30
- // Expands to the equivalent of an inline constexpr instance of the specified
31
- // `type` and `name`, initialized to the value `init`. If the compiler being
32
- // used is detected as supporting actual inline variables as a language
33
- // feature, then the macro expands to an actual inline variable definition.
34
- //
35
- // Requires:
36
- // `type` is a type that is usable in an extern variable declaration.
37
- //
38
- // Requires: `name` is a valid identifier
39
- //
40
- // Requires:
41
- // `init` is an expression that can be used in the following definition:
42
- // constexpr type name = init;
43
- //
44
- // Usage:
45
- //
46
- // // Equivalent to: `inline constexpr size_t variant_npos = -1;`
47
- // ABSL_INTERNAL_INLINE_CONSTEXPR(size_t, variant_npos, -1);
48
- //
49
- // Differences in implementation:
50
- // For a direct, language-level inline variable, decltype(name) will be the
51
- // type that was specified along with const qualification, whereas for
52
- // emulated inline variables, decltype(name) may be different (in practice
53
- // it will likely be a reference type).
54
- ////////////////////////////////////////////////////////////////////////////////
55
-
56
- #ifdef __cpp_inline_variables
57
-
58
- // Clang's -Wmissing-variable-declarations option erroneously warned that
59
- // inline constexpr objects need to be pre-declared. This has now been fixed,
60
- // but we will need to support this workaround for people building with older
61
- // versions of clang.
62
- //
63
- // Bug: https://bugs.llvm.org/show_bug.cgi?id=35862
64
- //
65
- // Note:
66
- // type_identity_t is used here so that the const and name are in the
67
- // appropriate place for pointer types, reference types, function pointer
68
- // types, etc..
69
- #if defined(__clang__)
70
- #define ABSL_INTERNAL_EXTERN_DECL(type, name) \
71
- extern const ::absl::internal::type_identity_t<type> name;
72
- #else // Otherwise, just define the macro to do nothing.
73
- #define ABSL_INTERNAL_EXTERN_DECL(type, name)
74
- #endif // defined(__clang__)
75
-
76
- // See above comment at top of file for details.
77
- #define ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init) \
78
- ABSL_INTERNAL_EXTERN_DECL(type, name) \
79
- inline constexpr ::absl::internal::type_identity_t<type> name = init
80
-
81
- #else
82
-
83
- // See above comment at top of file for details.
84
- //
85
- // Note:
86
- // type_identity_t is used here so that the const and name are in the
87
- // appropriate place for pointer types, reference types, function pointer
88
- // types, etc..
89
- #define ABSL_INTERNAL_INLINE_CONSTEXPR(var_type, name, init) \
90
- template <class /*AbslInternalDummy*/ = void> \
91
- struct AbslInternalInlineVariableHolder##name { \
92
- static constexpr ::absl::internal::type_identity_t<var_type> kInstance = \
93
- init; \
94
- }; \
95
- \
96
- template <class AbslInternalDummy> \
97
- constexpr ::absl::internal::type_identity_t<var_type> \
98
- AbslInternalInlineVariableHolder##name<AbslInternalDummy>::kInstance; \
99
- \
100
- static constexpr const ::absl::internal::type_identity_t<var_type>& \
101
- name = /* NOLINT */ \
102
- AbslInternalInlineVariableHolder##name<>::kInstance; \
103
- static_assert(sizeof(void (*)(decltype(name))) != 0, \
104
- "Silence unused variable warnings.")
105
-
106
- #endif // __cpp_inline_variables
107
-
108
- #endif // ABSL_BASE_INTERNAL_INLINE_VARIABLE_H_
@@ -1,241 +0,0 @@
1
- // Copyright 2017 The Abseil Authors.
2
- //
3
- // Licensed under the Apache License, Version 2.0 (the "License");
4
- // you may not use this file except in compliance with the License.
5
- // You may obtain a copy of the License at
6
- //
7
- // https://www.apache.org/licenses/LICENSE-2.0
8
- //
9
- // Unless required by applicable law or agreed to in writing, software
10
- // distributed under the License is distributed on an "AS IS" BASIS,
11
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- // See the License for the specific language governing permissions and
13
- // limitations under the License.
14
- //
15
- // absl::base_internal::invoke(f, args...) is an implementation of
16
- // INVOKE(f, args...) from section [func.require] of the C++ standard.
17
- // When compiled as C++17 and later versions, it is implemented as an alias of
18
- // std::invoke.
19
- //
20
- // [func.require]
21
- // Define INVOKE (f, t1, t2, ..., tN) as follows:
22
- // 1. (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
23
- // and t1 is an object of type T or a reference to an object of type T or a
24
- // reference to an object of a type derived from T;
25
- // 2. ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
26
- // class T and t1 is not one of the types described in the previous item;
27
- // 3. t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
28
- // an object of type T or a reference to an object of type T or a reference
29
- // to an object of a type derived from T;
30
- // 4. (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
31
- // is not one of the types described in the previous item;
32
- // 5. f(t1, t2, ..., tN) in all other cases.
33
- //
34
- // The implementation is SFINAE-friendly: substitution failure within invoke()
35
- // isn't an error.
36
-
37
- #ifndef ABSL_BASE_INTERNAL_INVOKE_H_
38
- #define ABSL_BASE_INTERNAL_INVOKE_H_
39
-
40
- #include "absl/base/config.h"
41
-
42
- #if ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
43
-
44
- #include <functional>
45
-
46
- namespace absl {
47
- ABSL_NAMESPACE_BEGIN
48
- namespace base_internal {
49
-
50
- using std::invoke;
51
- using std::invoke_result_t;
52
- using std::is_invocable_r;
53
-
54
- } // namespace base_internal
55
- ABSL_NAMESPACE_END
56
- } // namespace absl
57
-
58
- #else // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
59
-
60
- #include <algorithm>
61
- #include <type_traits>
62
- #include <utility>
63
-
64
- #include "absl/meta/type_traits.h"
65
-
66
- // The following code is internal implementation detail. See the comment at the
67
- // top of this file for the API documentation.
68
-
69
- namespace absl {
70
- ABSL_NAMESPACE_BEGIN
71
- namespace base_internal {
72
-
73
- // The five classes below each implement one of the clauses from the definition
74
- // of INVOKE. The inner class template Accept<F, Args...> checks whether the
75
- // clause is applicable; static function template Invoke(f, args...) does the
76
- // invocation.
77
- //
78
- // By separating the clause selection logic from invocation we make sure that
79
- // Invoke() does exactly what the standard says.
80
-
81
- template <typename Derived>
82
- struct StrippedAccept {
83
- template <typename... Args>
84
- struct Accept : Derived::template AcceptImpl<typename std::remove_cv<
85
- typename std::remove_reference<Args>::type>::type...> {};
86
- };
87
-
88
- // (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
89
- // and t1 is an object of type T or a reference to an object of type T or a
90
- // reference to an object of a type derived from T.
91
- struct MemFunAndRef : StrippedAccept<MemFunAndRef> {
92
- template <typename... Args>
93
- struct AcceptImpl : std::false_type {};
94
-
95
- template <typename MemFunType, typename C, typename Obj, typename... Args>
96
- struct AcceptImpl<MemFunType C::*, Obj, Args...>
97
- : std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
98
- absl::is_function<MemFunType>::value> {
99
- };
100
-
101
- template <typename MemFun, typename Obj, typename... Args>
102
- static decltype((std::declval<Obj>().*
103
- std::declval<MemFun>())(std::declval<Args>()...))
104
- Invoke(MemFun&& mem_fun, Obj&& obj, Args&&... args) {
105
- // Ignore bogus GCC warnings on this line.
106
- // See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101436 for similar example.
107
- #if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
108
- #pragma GCC diagnostic push
109
- #pragma GCC diagnostic ignored "-Warray-bounds"
110
- #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
111
- #endif
112
- return (std::forward<Obj>(obj).*
113
- std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
114
- #if ABSL_INTERNAL_HAVE_MIN_GNUC_VERSION(11, 0)
115
- #pragma GCC diagnostic pop
116
- #endif
117
- }
118
- };
119
-
120
- // ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
121
- // class T and t1 is not one of the types described in the previous item.
122
- struct MemFunAndPtr : StrippedAccept<MemFunAndPtr> {
123
- template <typename... Args>
124
- struct AcceptImpl : std::false_type {};
125
-
126
- template <typename MemFunType, typename C, typename Ptr, typename... Args>
127
- struct AcceptImpl<MemFunType C::*, Ptr, Args...>
128
- : std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
129
- absl::is_function<MemFunType>::value> {
130
- };
131
-
132
- template <typename MemFun, typename Ptr, typename... Args>
133
- static decltype(((*std::declval<Ptr>()).*
134
- std::declval<MemFun>())(std::declval<Args>()...))
135
- Invoke(MemFun&& mem_fun, Ptr&& ptr, Args&&... args) {
136
- return ((*std::forward<Ptr>(ptr)).*
137
- std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
138
- }
139
- };
140
-
141
- // t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
142
- // an object of type T or a reference to an object of type T or a reference
143
- // to an object of a type derived from T.
144
- struct DataMemAndRef : StrippedAccept<DataMemAndRef> {
145
- template <typename... Args>
146
- struct AcceptImpl : std::false_type {};
147
-
148
- template <typename R, typename C, typename Obj>
149
- struct AcceptImpl<R C::*, Obj>
150
- : std::integral_constant<bool, std::is_base_of<C, Obj>::value &&
151
- !absl::is_function<R>::value> {};
152
-
153
- template <typename DataMem, typename Ref>
154
- static decltype(std::declval<Ref>().*std::declval<DataMem>()) Invoke(
155
- DataMem&& data_mem, Ref&& ref) {
156
- return std::forward<Ref>(ref).*std::forward<DataMem>(data_mem);
157
- }
158
- };
159
-
160
- // (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
161
- // is not one of the types described in the previous item.
162
- struct DataMemAndPtr : StrippedAccept<DataMemAndPtr> {
163
- template <typename... Args>
164
- struct AcceptImpl : std::false_type {};
165
-
166
- template <typename R, typename C, typename Ptr>
167
- struct AcceptImpl<R C::*, Ptr>
168
- : std::integral_constant<bool, !std::is_base_of<C, Ptr>::value &&
169
- !absl::is_function<R>::value> {};
170
-
171
- template <typename DataMem, typename Ptr>
172
- static decltype((*std::declval<Ptr>()).*std::declval<DataMem>()) Invoke(
173
- DataMem&& data_mem, Ptr&& ptr) {
174
- return (*std::forward<Ptr>(ptr)).*std::forward<DataMem>(data_mem);
175
- }
176
- };
177
-
178
- // f(t1, t2, ..., tN) in all other cases.
179
- struct Callable {
180
- // Callable doesn't have Accept because it's the last clause that gets picked
181
- // when none of the previous clauses are applicable.
182
- template <typename F, typename... Args>
183
- static decltype(std::declval<F>()(std::declval<Args>()...)) Invoke(
184
- F&& f, Args&&... args) {
185
- return std::forward<F>(f)(std::forward<Args>(args)...);
186
- }
187
- };
188
-
189
- // Resolves to the first matching clause.
190
- template <typename... Args>
191
- struct Invoker {
192
- typedef typename std::conditional<
193
- MemFunAndRef::Accept<Args...>::value, MemFunAndRef,
194
- typename std::conditional<
195
- MemFunAndPtr::Accept<Args...>::value, MemFunAndPtr,
196
- typename std::conditional<
197
- DataMemAndRef::Accept<Args...>::value, DataMemAndRef,
198
- typename std::conditional<DataMemAndPtr::Accept<Args...>::value,
199
- DataMemAndPtr, Callable>::type>::type>::
200
- type>::type type;
201
- };
202
-
203
- // The result type of Invoke<F, Args...>.
204
- template <typename F, typename... Args>
205
- using invoke_result_t = decltype(Invoker<F, Args...>::type::Invoke(
206
- std::declval<F>(), std::declval<Args>()...));
207
-
208
- // Invoke(f, args...) is an implementation of INVOKE(f, args...) from section
209
- // [func.require] of the C++ standard.
210
- template <typename F, typename... Args>
211
- invoke_result_t<F, Args...> invoke(F&& f, Args&&... args) {
212
- return Invoker<F, Args...>::type::Invoke(std::forward<F>(f),
213
- std::forward<Args>(args)...);
214
- }
215
-
216
- template <typename AlwaysVoid, typename, typename, typename...>
217
- struct IsInvocableRImpl : std::false_type {};
218
-
219
- template <typename R, typename F, typename... Args>
220
- struct IsInvocableRImpl<
221
- absl::void_t<absl::base_internal::invoke_result_t<F, Args...> >, R, F,
222
- Args...>
223
- : std::integral_constant<
224
- bool,
225
- std::is_convertible<absl::base_internal::invoke_result_t<F, Args...>,
226
- R>::value ||
227
- std::is_void<R>::value> {};
228
-
229
- // Type trait whose member `value` is true if invoking `F` with `Args` is valid,
230
- // and either the return type is convertible to `R`, or `R` is void.
231
- // C++11-compatible version of `std::is_invocable_r`.
232
- template <typename R, typename F, typename... Args>
233
- using is_invocable_r = IsInvocableRImpl<void, R, F, Args...>;
234
-
235
- } // namespace base_internal
236
- ABSL_NAMESPACE_END
237
- } // namespace absl
238
-
239
- #endif // ABSL_INTERNAL_CPLUSPLUS_LANG >= 201703L
240
-
241
- #endif // ABSL_BASE_INTERNAL_INVOKE_H_
@@ -1,41 +0,0 @@
1
- //
2
- // Copyright 2022 The Abseil 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
- // https://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
- #include "absl/log/log_entry.h"
17
-
18
- #include "absl/base/config.h"
19
-
20
- namespace absl {
21
- ABSL_NAMESPACE_BEGIN
22
-
23
- #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
24
- constexpr int LogEntry::kNoVerbosityLevel;
25
- constexpr int LogEntry::kNoVerboseLevel;
26
- #endif
27
-
28
- // https://github.com/abseil/abseil-cpp/issues/1465
29
- // CMake builds on Apple platforms error when libraries are empty.
30
- // Our CMake configuration can avoid this error on header-only libraries,
31
- // but since this library is conditionally empty, including a single
32
- // variable is an easy workaround.
33
- #ifdef __APPLE__
34
- namespace log_internal {
35
- extern const char kAvoidEmptyLogEntryLibraryWarning;
36
- const char kAvoidEmptyLogEntryLibraryWarning = 0;
37
- } // namespace log_internal
38
- #endif // __APPLE__
39
-
40
- ABSL_NAMESPACE_END
41
- } // namespace absl