grpc 1.47.0 → 1.48.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


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

Files changed (574) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +105 -47
  3. data/include/grpc/compression.h +1 -1
  4. data/include/grpc/event_engine/event_engine.h +20 -11
  5. data/include/grpc/event_engine/slice_buffer.h +8 -2
  6. data/include/grpc/grpc.h +3 -3
  7. data/include/grpc/impl/codegen/compression_types.h +2 -1
  8. data/include/grpc/impl/codegen/connectivity_state.h +2 -1
  9. data/include/grpc/impl/codegen/gpr_types.h +2 -1
  10. data/include/grpc/impl/codegen/grpc_types.h +2 -1
  11. data/include/grpc/impl/codegen/port_platform.h +6 -3
  12. data/src/core/ext/filters/census/grpc_context.cc +3 -0
  13. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +17 -5
  14. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +16 -0
  15. data/src/core/ext/filters/channel_idle/idle_filter_state.h +2 -0
  16. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -1
  17. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -2
  18. data/src/core/ext/filters/client_channel/client_channel.cc +51 -65
  19. data/src/core/ext/filters/client_channel/client_channel.h +19 -4
  20. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +6 -4
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +1 -1
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -2
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +1 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +73 -43
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +0 -1
  30. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +33 -35
  31. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +106 -112
  32. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +91 -42
  33. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +177 -138
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +4 -1
  35. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +47 -44
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +118 -103
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +83 -78
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +57 -67
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +2 -2
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -7
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +13 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +3 -3
  43. data/src/core/ext/filters/client_channel/lb_policy.h +0 -7
  44. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -5
  45. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -1
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +6 -6
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +5 -5
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +10 -5
  50. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +12 -3
  51. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +5 -5
  52. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +3 -4
  53. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -0
  55. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +24 -15
  56. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +3 -1
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -7
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +35 -36
  59. data/src/core/ext/filters/client_channel/retry_filter.h +1 -0
  60. data/src/core/ext/filters/client_channel/retry_service_config.cc +4 -4
  61. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -1
  62. data/src/core/ext/filters/client_channel/subchannel.cc +53 -50
  63. data/src/core/ext/filters/client_channel/subchannel.h +6 -22
  64. data/src/core/ext/filters/client_channel/subchannel_interface.h +10 -18
  65. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +12 -97
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +5 -9
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +12 -7
  68. data/src/core/ext/filters/deadline/deadline_filter.h +8 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +21 -2
  70. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +8 -3
  71. data/src/core/ext/filters/fault_injection/service_config_parser.cc +7 -4
  72. data/src/core/ext/filters/fault_injection/service_config_parser.h +17 -3
  73. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -5
  74. data/src/core/ext/filters/http/client/http_client_filter.h +8 -1
  75. data/src/core/ext/filters/http/client_authority_filter.cc +11 -10
  76. data/src/core/ext/filters/http/client_authority_filter.h +5 -2
  77. data/src/core/ext/filters/http/http_filters_plugin.cc +9 -1
  78. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +64 -187
  79. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +1 -2
  80. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +42 -106
  81. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +1 -0
  82. data/src/core/ext/filters/http/server/http_server_filter.cc +16 -9
  83. data/src/core/ext/filters/http/server/http_server_filter.h +6 -1
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +25 -15
  85. data/src/core/ext/filters/message_size/message_size_filter.h +13 -0
  86. data/src/core/ext/filters/rbac/rbac_filter.cc +14 -3
  87. data/src/core/ext/filters/rbac/rbac_filter.h +8 -0
  88. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +13 -2
  89. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +14 -2
  90. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +1 -0
  91. data/src/core/ext/filters/server_config_selector/server_config_selector.h +9 -0
  92. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +22 -2
  93. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +1 -0
  94. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -4
  95. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +15 -15
  96. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +196 -476
  97. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -1
  98. data/src/core/ext/transport/chttp2/transport/flow_control.cc +141 -261
  99. data/src/core/ext/transport/chttp2/transport/flow_control.h +176 -289
  100. data/src/core/ext/transport/chttp2/transport/frame_data.cc +57 -215
  101. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -36
  102. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +0 -41
  103. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -12
  104. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +7 -6
  105. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +0 -2
  106. data/src/core/ext/transport/chttp2/transport/internal.h +9 -111
  107. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -38
  108. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +0 -4
  109. data/src/core/ext/transport/chttp2/transport/writing.cc +18 -21
  110. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -1
  111. data/src/core/ext/transport/inproc/inproc_transport.cc +85 -81
  112. data/src/core/ext/transport/inproc/inproc_transport.h +3 -1
  113. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +52 -0
  114. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +164 -0
  115. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  116. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +94 -0
  117. data/src/core/ext/xds/certificate_provider_factory.h +6 -1
  118. data/src/core/ext/xds/certificate_provider_registry.cc +8 -8
  119. data/src/core/ext/xds/certificate_provider_registry.h +3 -1
  120. data/src/core/ext/xds/certificate_provider_store.cc +2 -0
  121. data/src/core/ext/xds/certificate_provider_store.h +9 -0
  122. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +9 -0
  123. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +8 -0
  124. data/src/core/ext/xds/upb_utils.h +1 -2
  125. data/src/core/ext/xds/xds_api.cc +16 -18
  126. data/src/core/ext/xds/xds_api.h +12 -5
  127. data/src/core/ext/xds/xds_bootstrap.cc +37 -24
  128. data/src/core/ext/xds/xds_bootstrap.h +9 -11
  129. data/src/core/ext/xds/xds_certificate_provider.cc +12 -3
  130. data/src/core/ext/xds/xds_certificate_provider.h +16 -1
  131. data/src/core/ext/xds/xds_channel_stack_modifier.cc +9 -0
  132. data/src/core/ext/xds/xds_channel_stack_modifier.h +5 -1
  133. data/src/core/ext/xds/xds_client.cc +71 -22
  134. data/src/core/ext/xds/xds_client.h +17 -3
  135. data/src/core/ext/xds/xds_client_stats.cc +3 -4
  136. data/src/core/ext/xds/xds_client_stats.h +4 -3
  137. data/src/core/ext/xds/xds_cluster.cc +21 -10
  138. data/src/core/ext/xds/xds_cluster.h +9 -1
  139. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +16 -7
  140. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +1 -8
  141. data/src/core/ext/xds/xds_common_types.cc +36 -22
  142. data/src/core/ext/xds/xds_common_types.h +12 -4
  143. data/src/core/ext/xds/xds_endpoint.cc +25 -15
  144. data/src/core/ext/xds/xds_endpoint.h +13 -5
  145. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -5
  146. data/src/core/ext/xds/xds_http_fault_filter.h +3 -1
  147. data/src/core/ext/xds/xds_http_filters.cc +7 -0
  148. data/src/core/ext/xds/xds_http_filters.h +3 -3
  149. data/src/core/ext/xds/xds_http_rbac_filter.cc +16 -0
  150. data/src/core/ext/xds/xds_http_rbac_filter.h +7 -0
  151. data/src/core/ext/xds/xds_lb_policy_registry.cc +291 -0
  152. data/src/core/ext/xds/xds_lb_policy_registry.h +72 -0
  153. data/src/core/ext/xds/xds_listener.cc +51 -33
  154. data/src/core/ext/xds/xds_listener.h +10 -1
  155. data/src/core/ext/xds/xds_resource_type.h +3 -3
  156. data/src/core/ext/xds/xds_resource_type_impl.h +7 -3
  157. data/src/core/ext/xds/xds_route_config.cc +56 -28
  158. data/src/core/ext/xds/xds_route_config.h +11 -2
  159. data/src/core/ext/xds/xds_routing.cc +16 -0
  160. data/src/core/ext/xds/xds_routing.h +7 -2
  161. data/src/core/ext/xds/xds_server_config_fetcher.cc +54 -6
  162. data/src/core/lib/address_utils/parse_address.cc +5 -8
  163. data/src/core/lib/address_utils/parse_address.h +3 -2
  164. data/src/core/lib/address_utils/sockaddr_utils.cc +8 -7
  165. data/src/core/lib/address_utils/sockaddr_utils.h +2 -0
  166. data/src/core/lib/avl/avl.h +3 -3
  167. data/src/core/lib/backoff/backoff.cc +1 -1
  168. data/src/core/lib/backoff/backoff.h +1 -1
  169. data/src/core/lib/channel/call_tracer.h +3 -3
  170. data/src/core/lib/channel/channel_args.h +1 -0
  171. data/src/core/lib/channel/channel_args_preconditioning.cc +1 -0
  172. data/src/core/lib/channel/channel_fwd.h +26 -0
  173. data/src/core/lib/channel/channel_stack.cc +4 -4
  174. data/src/core/lib/channel/channel_stack.h +1 -11
  175. data/src/core/lib/channel/channel_stack_builder.h +2 -5
  176. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  177. data/src/core/lib/channel/channel_stack_builder_impl.h +1 -0
  178. data/src/core/lib/channel/channelz.cc +2 -1
  179. data/src/core/lib/channel/channelz.h +2 -3
  180. data/src/core/lib/channel/channelz_registry.cc +4 -5
  181. data/src/core/lib/channel/connected_channel.cc +1 -0
  182. data/src/core/lib/channel/connected_channel.h +1 -0
  183. data/src/core/lib/channel/promise_based_filter.cc +11 -5
  184. data/src/core/lib/channel/promise_based_filter.h +2 -0
  185. data/src/core/lib/compression/compression.cc +6 -1
  186. data/src/core/lib/compression/compression_internal.cc +3 -6
  187. data/src/core/lib/compression/compression_internal.h +3 -2
  188. data/src/core/lib/compression/message_compress.cc +3 -1
  189. data/src/core/lib/compression/message_compress.h +2 -3
  190. data/src/core/lib/debug/stats.cc +9 -9
  191. data/src/core/lib/debug/stats.h +2 -1
  192. data/src/core/lib/debug/stats_data.cc +2 -1
  193. data/src/core/lib/debug/stats_data.h +0 -4
  194. data/src/core/lib/debug/trace.h +13 -12
  195. data/src/core/lib/event_engine/default_event_engine_factory.cc +1 -1
  196. data/src/core/lib/event_engine/event_engine.cc +24 -19
  197. data/src/core/lib/event_engine/event_engine_factory.h +2 -2
  198. data/src/core/lib/event_engine/{iomgr_engine.cc → iomgr_engine/iomgr_engine.cc} +44 -91
  199. data/src/core/lib/event_engine/{iomgr_engine.h → iomgr_engine/iomgr_engine.h} +20 -16
  200. data/src/core/lib/event_engine/iomgr_engine/thread_pool.cc +123 -0
  201. data/src/core/lib/event_engine/iomgr_engine/thread_pool.h +70 -0
  202. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.cc +62 -0
  203. data/src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h +81 -0
  204. data/src/core/lib/event_engine/iomgr_engine/timer.cc +312 -0
  205. data/src/core/lib/event_engine/iomgr_engine/timer.h +193 -0
  206. data/src/core/lib/event_engine/iomgr_engine/timer_heap.cc +107 -0
  207. data/src/core/lib/event_engine/iomgr_engine/timer_heap.h +56 -0
  208. data/src/core/lib/event_engine/iomgr_engine/timer_manager.cc +254 -0
  209. data/src/core/lib/event_engine/iomgr_engine/timer_manager.h +111 -0
  210. data/src/core/lib/event_engine/promise.h +69 -0
  211. data/src/core/lib/gpr/time_posix.cc +6 -9
  212. data/src/core/lib/gpr/time_windows.cc +10 -7
  213. data/src/core/lib/gprpp/manual_constructor.h +0 -67
  214. data/src/core/lib/gprpp/status_helper.cc +44 -30
  215. data/src/core/lib/gprpp/time.cc +8 -0
  216. data/src/core/lib/gprpp/time.h +4 -0
  217. data/src/core/lib/http/format_request.cc +5 -4
  218. data/src/core/lib/http/format_request.h +1 -1
  219. data/src/core/lib/http/httpcli.cc +18 -12
  220. data/src/core/lib/http/httpcli.h +19 -3
  221. data/src/core/lib/http/httpcli_security_connector.cc +16 -4
  222. data/src/core/lib/http/httpcli_ssl_credentials.h +3 -1
  223. data/src/core/lib/http/parser.cc +6 -7
  224. data/src/core/lib/http/parser.h +3 -0
  225. data/src/core/lib/iomgr/call_combiner.cc +2 -2
  226. data/src/core/lib/iomgr/endpoint.h +1 -1
  227. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -2
  228. data/src/core/lib/iomgr/error.cc +11 -9
  229. data/src/core/lib/iomgr/error.h +9 -5
  230. data/src/core/lib/iomgr/ev_epoll1_linux.cc +57 -18
  231. data/src/core/lib/iomgr/ev_epoll1_linux.h +1 -1
  232. data/src/core/lib/iomgr/ev_poll_posix.cc +77 -52
  233. data/src/core/lib/iomgr/ev_poll_posix.h +2 -2
  234. data/src/core/lib/iomgr/ev_posix.cc +54 -92
  235. data/src/core/lib/iomgr/ev_posix.h +5 -3
  236. data/src/core/lib/iomgr/fork_posix.cc +1 -1
  237. data/src/core/lib/iomgr/iomgr.cc +7 -0
  238. data/src/core/lib/iomgr/iomgr_posix.cc +1 -0
  239. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -0
  240. data/src/core/lib/iomgr/load_file.cc +1 -1
  241. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -1
  242. data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
  243. data/src/core/lib/iomgr/tcp_client.cc +12 -7
  244. data/src/core/lib/iomgr/tcp_client.h +24 -13
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +15 -9
  246. data/src/core/lib/iomgr/tcp_client_posix.cc +143 -25
  247. data/src/core/lib/iomgr/tcp_client_posix.h +1 -1
  248. data/src/core/lib/iomgr/tcp_client_windows.cc +14 -10
  249. data/src/core/lib/iomgr/tcp_posix.cc +91 -29
  250. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -7
  251. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +12 -12
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +2 -2
  253. data/src/core/lib/iomgr/tcp_server_windows.cc +7 -7
  254. data/src/core/lib/iomgr/tcp_windows.cc +5 -5
  255. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -2
  256. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  257. data/src/core/lib/iomgr/wakeup_fd_posix.cc +15 -12
  258. data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -2
  259. data/src/core/lib/iomgr/work_serializer.h +2 -3
  260. data/src/core/lib/matchers/matchers.cc +6 -3
  261. data/src/core/lib/matchers/matchers.h +2 -0
  262. data/src/core/lib/promise/activity.cc +0 -1
  263. data/src/core/lib/promise/activity.h +7 -13
  264. data/src/core/lib/promise/loop.h +1 -0
  265. data/src/core/lib/promise/promise.h +1 -0
  266. data/src/core/lib/promise/sleep.cc +36 -31
  267. data/src/core/lib/promise/sleep.h +25 -25
  268. data/src/core/lib/resolver/resolver.cc +5 -0
  269. data/src/core/lib/resolver/resolver.h +3 -0
  270. data/src/core/lib/resolver/resolver_factory.h +5 -2
  271. data/src/core/lib/resolver/resolver_registry.cc +2 -9
  272. data/src/core/lib/resolver/resolver_registry.h +12 -1
  273. data/src/core/lib/resolver/server_address.cc +8 -0
  274. data/src/core/lib/resolver/server_address.h +9 -2
  275. data/src/core/lib/resource_quota/memory_quota.cc +18 -60
  276. data/src/core/lib/resource_quota/memory_quota.h +11 -25
  277. data/src/core/lib/security/authorization/authorization_policy_provider.h +7 -0
  278. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +4 -0
  279. data/src/core/lib/security/authorization/evaluate_args.cc +9 -3
  280. data/src/core/lib/security/authorization/evaluate_args.h +6 -3
  281. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +6 -0
  282. data/src/core/lib/security/authorization/grpc_authorization_engine.h +7 -0
  283. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +12 -0
  284. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +12 -1
  285. data/src/core/lib/security/authorization/matchers.cc +9 -1
  286. data/src/core/lib/security/authorization/matchers.h +7 -0
  287. data/src/core/lib/security/authorization/rbac_policy.cc +5 -0
  288. data/src/core/lib/security/authorization/rbac_policy.h +7 -0
  289. data/src/core/lib/security/context/security_context.cc +5 -2
  290. data/src/core/lib/security/context/security_context.h +14 -2
  291. data/src/core/lib/security/credentials/alts/alts_credentials.cc +4 -2
  292. data/src/core/lib/security/credentials/alts/alts_credentials.h +6 -1
  293. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +1 -3
  294. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -4
  295. data/src/core/lib/security/credentials/call_creds_util.cc +8 -0
  296. data/src/core/lib/security/credentials/call_creds_util.h +1 -0
  297. data/src/core/lib/security/credentials/channel_creds_registry.h +6 -1
  298. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +10 -0
  299. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  300. data/src/core/lib/security/credentials/composite/composite_credentials.h +16 -2
  301. data/src/core/lib/security/credentials/credentials.cc +4 -8
  302. data/src/core/lib/security/credentials/credentials.h +10 -8
  303. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +28 -10
  304. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +10 -0
  305. data/src/core/lib/security/credentials/external/aws_request_signer.cc +9 -0
  306. data/src/core/lib/security/credentials/external/external_account_credentials.cc +24 -9
  307. data/src/core/lib/security/credentials/external/external_account_credentials.h +11 -0
  308. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +12 -4
  309. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +6 -0
  310. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -4
  311. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -0
  312. data/src/core/lib/security/credentials/fake/fake_credentials.cc +8 -6
  313. data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -1
  314. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -0
  315. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -10
  316. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -1
  317. data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -3
  318. data/src/core/lib/security/credentials/iam/iam_credentials.h +10 -0
  319. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +4 -0
  320. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +5 -0
  321. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  322. data/src/core/lib/security/credentials/jwt/json_token.h +2 -2
  323. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +11 -5
  324. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +14 -0
  325. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +28 -3
  326. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -2
  327. data/src/core/lib/security/credentials/local/local_credentials.cc +4 -3
  328. data/src/core/lib/security/credentials/local/local_credentials.h +7 -0
  329. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +26 -13
  330. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +20 -0
  331. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +8 -7
  332. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +24 -0
  333. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -0
  334. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +13 -0
  335. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +6 -6
  336. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -3
  337. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -10
  338. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +9 -4
  339. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +9 -2
  340. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +6 -7
  341. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -5
  342. data/src/core/lib/security/credentials/tls/tls_credentials.cc +7 -2
  343. data/src/core/lib/security/credentials/tls/tls_credentials.h +5 -1
  344. data/src/core/lib/security/credentials/tls/tls_utils.cc +2 -0
  345. data/src/core/lib/security/credentials/tls/tls_utils.h +1 -1
  346. data/src/core/lib/security/credentials/xds/xds_credentials.cc +8 -1
  347. data/src/core/lib/security/credentials/xds/xds_credentials.h +14 -0
  348. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -2
  349. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +6 -3
  350. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -1
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +2 -2
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +9 -0
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +17 -2
  354. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +5 -3
  355. data/src/core/lib/security/security_connector/{load_system_roots_linux.cc → load_system_roots_supported.cc} +27 -19
  356. data/src/core/lib/security/security_connector/{load_system_roots_linux.h → load_system_roots_supported.h} +5 -5
  357. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -3
  358. data/src/core/lib/security/security_connector/local/local_security_connector.h +6 -2
  359. data/src/core/lib/security/security_connector/security_connector.cc +20 -18
  360. data/src/core/lib/security/security_connector/security_connector.h +18 -6
  361. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -6
  362. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -2
  363. data/src/core/lib/security/security_connector/ssl_utils.cc +12 -2
  364. data/src/core/lib/security/security_connector/ssl_utils.h +10 -7
  365. data/src/core/lib/security/security_connector/ssl_utils_config.h +1 -1
  366. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -13
  367. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +23 -3
  368. data/src/core/lib/security/transport/auth_filters.h +7 -0
  369. data/src/core/lib/security/transport/client_auth_filter.cc +18 -9
  370. data/src/core/lib/security/transport/secure_endpoint.cc +63 -13
  371. data/src/core/lib/security/transport/secure_endpoint.h +4 -3
  372. data/src/core/lib/security/transport/security_handshaker.cc +44 -11
  373. data/src/core/lib/security/transport/security_handshaker.h +4 -0
  374. data/src/core/lib/security/transport/server_auth_filter.cc +26 -4
  375. data/src/core/lib/security/util/json_util.cc +3 -2
  376. data/src/core/lib/security/util/json_util.h +0 -2
  377. data/src/core/lib/service_config/service_config_call_data.h +2 -1
  378. data/src/core/lib/service_config/service_config_impl.cc +6 -6
  379. data/src/core/lib/service_config/service_config_impl.h +1 -3
  380. data/src/core/lib/service_config/service_config_parser.cc +2 -4
  381. data/src/core/lib/slice/slice_buffer.cc +30 -1
  382. data/src/core/lib/slice/slice_buffer.h +37 -6
  383. data/src/core/lib/slice/slice_string_helpers.cc +0 -20
  384. data/src/core/lib/slice/slice_string_helpers.h +0 -4
  385. data/src/core/lib/surface/call.cc +53 -115
  386. data/src/core/lib/surface/call.h +5 -1
  387. data/src/core/lib/surface/channel.h +2 -0
  388. data/src/core/lib/surface/channel_ping.cc +1 -1
  389. data/src/core/lib/surface/completion_queue.cc +15 -14
  390. data/src/core/lib/surface/completion_queue.h +2 -1
  391. data/src/core/lib/surface/init.cc +0 -1
  392. data/src/core/lib/surface/lame_client.cc +1 -1
  393. data/src/core/lib/surface/lame_client.h +1 -1
  394. data/src/core/lib/surface/server.cc +14 -8
  395. data/src/core/lib/surface/server.h +4 -1
  396. data/src/core/lib/surface/validate_metadata.cc +1 -1
  397. data/src/core/lib/surface/version.cc +2 -2
  398. data/src/core/lib/transport/error_utils.cc +13 -7
  399. data/src/core/lib/transport/handshaker.cc +3 -3
  400. data/src/core/lib/transport/http_connect_handshaker.cc +4 -4
  401. data/src/core/lib/transport/tcp_connect_handshaker.cc +2 -2
  402. data/src/core/lib/transport/transport.cc +0 -3
  403. data/src/core/lib/transport/transport.h +20 -14
  404. data/src/core/lib/transport/transport_fwd.h +20 -0
  405. data/src/core/lib/transport/transport_impl.h +1 -0
  406. data/src/core/lib/transport/transport_op_string.cc +9 -9
  407. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
  408. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +9 -1
  409. data/src/core/tsi/fake_transport_security.cc +13 -1
  410. data/src/core/tsi/fake_transport_security.h +6 -0
  411. data/src/core/tsi/ssl_transport_security.cc +1 -1
  412. data/src/core/tsi/transport_security_grpc.cc +3 -2
  413. data/src/core/tsi/transport_security_grpc.h +5 -2
  414. data/src/ruby/ext/grpc/ext-export-truffleruby.clang +2 -0
  415. data/src/ruby/ext/grpc/ext-export-truffleruby.gcc +7 -0
  416. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  417. data/src/ruby/ext/grpc/ext-export.gcc +1 -0
  418. data/src/ruby/ext/grpc/extconf.rb +49 -18
  419. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  420. data/src/ruby/lib/grpc/errors.rb +1 -1
  421. data/src/ruby/lib/grpc/version.rb +1 -1
  422. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  423. data/third_party/abseil-cpp/absl/algorithm/container.h +1 -1
  424. data/third_party/abseil-cpp/absl/base/attributes.h +49 -22
  425. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  426. data/third_party/abseil-cpp/absl/base/config.h +182 -41
  427. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  428. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +67 -2
  429. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +3 -3
  430. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  431. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +2 -0
  432. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  433. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  434. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +29 -22
  435. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +13 -12
  436. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +3 -0
  437. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +8 -0
  438. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  439. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  440. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  441. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +0 -1
  442. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  443. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  444. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -3
  445. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  446. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  447. data/third_party/abseil-cpp/absl/base/optimization.h +19 -11
  448. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  449. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  450. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -0
  451. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  452. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +15 -9
  453. data/third_party/abseil-cpp/absl/container/inlined_vector.h +20 -9
  454. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -5
  455. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +10 -28
  456. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +68 -20
  457. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +29 -11
  458. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +59 -38
  459. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +4 -0
  460. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +515 -184
  461. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  462. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +4 -0
  463. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  464. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +8 -3
  465. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  466. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  467. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  468. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +20 -18
  469. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +8 -3
  470. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +15 -2
  471. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  472. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +46 -7
  473. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  474. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  475. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  476. data/third_party/abseil-cpp/absl/hash/internal/hash.h +218 -23
  477. data/third_party/abseil-cpp/absl/numeric/bits.h +2 -1
  478. data/third_party/abseil-cpp/absl/numeric/int128.cc +4 -2
  479. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  480. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +21 -6
  481. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +4 -4
  482. data/third_party/abseil-cpp/absl/random/distributions.h +3 -3
  483. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +3 -0
  484. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +2 -1
  485. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +2 -2
  486. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +59 -48
  487. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +1 -1
  488. data/third_party/abseil-cpp/absl/random/internal/randen.h +5 -11
  489. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -2
  490. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +48 -23
  491. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +24 -26
  492. data/third_party/abseil-cpp/absl/random/internal/traits.h +53 -5
  493. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +5 -5
  494. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +33 -48
  495. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +9 -10
  496. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +7 -4
  497. data/third_party/abseil-cpp/absl/random/seed_sequences.h +1 -0
  498. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +2 -2
  499. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  500. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +4 -3
  501. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +17 -0
  502. data/third_party/abseil-cpp/absl/status/status.cc +174 -2
  503. data/third_party/abseil-cpp/absl/status/status.h +22 -12
  504. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  505. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  506. data/third_party/abseil-cpp/absl/strings/cord.cc +194 -913
  507. data/third_party/abseil-cpp/absl/strings/cord.h +202 -81
  508. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  509. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  510. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  511. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +572 -0
  512. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  513. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  514. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +123 -88
  515. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +149 -49
  516. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +44 -59
  517. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +3 -1
  518. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  519. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  520. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  521. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  522. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +54 -0
  523. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +102 -0
  524. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  525. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  526. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +11 -38
  527. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +1 -0
  528. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  529. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +6 -5
  530. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +1 -1
  531. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +1 -1
  532. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +1 -1
  533. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +38 -7
  534. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -2
  535. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +4 -5
  536. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +5 -2
  537. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  538. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +4 -2
  539. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  540. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  541. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  542. data/third_party/abseil-cpp/absl/strings/numbers.cc +8 -8
  543. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  544. data/third_party/abseil-cpp/absl/strings/str_cat.h +20 -13
  545. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  546. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  547. data/third_party/abseil-cpp/absl/strings/string_view.cc +2 -13
  548. data/third_party/abseil-cpp/absl/strings/string_view.h +3 -2
  549. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  550. data/third_party/abseil-cpp/absl/strings/substitute.h +10 -2
  551. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  552. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  553. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  554. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  555. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  556. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  557. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -40
  558. data/third_party/abseil-cpp/absl/synchronization/mutex.h +17 -9
  559. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -2
  560. data/third_party/abseil-cpp/absl/time/duration.cc +5 -4
  561. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  562. data/third_party/abseil-cpp/absl/time/time.h +16 -12
  563. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  564. data/third_party/abseil-cpp/absl/types/internal/variant.h +3 -3
  565. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  566. data/third_party/abseil-cpp/absl/types/span.h +2 -1
  567. metadata +39 -15
  568. data/src/core/lib/slice/slice_split.cc +0 -103
  569. data/src/core/lib/slice/slice_split.h +0 -36
  570. data/src/core/lib/transport/byte_stream.cc +0 -165
  571. data/src/core/lib/transport/byte_stream.h +0 -170
  572. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +0 -140
  573. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +0 -100
  574. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
@@ -16,6 +16,8 @@
16
16
 
17
17
  #include <ostream>
18
18
 
19
+ #include "absl/base/attributes.h"
20
+
19
21
  namespace absl {
20
22
  ABSL_NAMESPACE_BEGIN
21
23
 
@@ -23,5 +25,31 @@ std::ostream& operator<<(std::ostream& os, absl::LogSeverity s) {
23
25
  if (s == absl::NormalizeLogSeverity(s)) return os << absl::LogSeverityName(s);
24
26
  return os << "absl::LogSeverity(" << static_cast<int>(s) << ")";
25
27
  }
28
+
29
+ std::ostream& operator<<(std::ostream& os, absl::LogSeverityAtLeast s) {
30
+ switch (s) {
31
+ case absl::LogSeverityAtLeast::kInfo:
32
+ case absl::LogSeverityAtLeast::kWarning:
33
+ case absl::LogSeverityAtLeast::kError:
34
+ case absl::LogSeverityAtLeast::kFatal:
35
+ return os << ">=" << static_cast<absl::LogSeverity>(s);
36
+ case absl::LogSeverityAtLeast::kInfinity:
37
+ return os << "INFINITY";
38
+ }
39
+ return os;
40
+ }
41
+
42
+ std::ostream& operator<<(std::ostream& os, absl::LogSeverityAtMost s) {
43
+ switch (s) {
44
+ case absl::LogSeverityAtMost::kInfo:
45
+ case absl::LogSeverityAtMost::kWarning:
46
+ case absl::LogSeverityAtMost::kError:
47
+ case absl::LogSeverityAtMost::kFatal:
48
+ return os << "<=" << static_cast<absl::LogSeverity>(s);
49
+ case absl::LogSeverityAtMost::kNegativeInfinity:
50
+ return os << "NEGATIVE_INFINITY";
51
+ }
52
+ return os;
53
+ }
26
54
  ABSL_NAMESPACE_END
27
55
  } // namespace absl
@@ -115,6 +115,57 @@ constexpr absl::LogSeverity NormalizeLogSeverity(int s) {
115
115
  // unspecified; do not rely on it.
116
116
  std::ostream& operator<<(std::ostream& os, absl::LogSeverity s);
117
117
 
118
+ // Enums representing a lower bound for LogSeverity. APIs that only operate on
119
+ // messages of at least a certain level (for example, `SetMinLogLevel()`) use
120
+ // this type to specify that level. absl::LogSeverityAtLeast::kInfinity is
121
+ // a level above all threshold levels and therefore no log message will
122
+ // ever meet this threshold.
123
+ enum class LogSeverityAtLeast : int {
124
+ kInfo = static_cast<int>(absl::LogSeverity::kInfo),
125
+ kWarning = static_cast<int>(absl::LogSeverity::kWarning),
126
+ kError = static_cast<int>(absl::LogSeverity::kError),
127
+ kFatal = static_cast<int>(absl::LogSeverity::kFatal),
128
+ kInfinity = 1000,
129
+ };
130
+
131
+ std::ostream& operator<<(std::ostream& os, absl::LogSeverityAtLeast s);
132
+
133
+ // Enums representing an upper bound for LogSeverity. APIs that only operate on
134
+ // messages of at most a certain level (for example, buffer all messages at or
135
+ // below a certain level) use this type to specify that level.
136
+ // absl::LogSeverityAtMost::kNegativeInfinity is a level below all threshold
137
+ // levels and therefore will exclude all log messages.
138
+ enum class LogSeverityAtMost : int {
139
+ kNegativeInfinity = -1000,
140
+ kInfo = static_cast<int>(absl::LogSeverity::kInfo),
141
+ kWarning = static_cast<int>(absl::LogSeverity::kWarning),
142
+ kError = static_cast<int>(absl::LogSeverity::kError),
143
+ kFatal = static_cast<int>(absl::LogSeverity::kFatal),
144
+ };
145
+
146
+ std::ostream& operator<<(std::ostream& os, absl::LogSeverityAtMost s);
147
+
148
+ #define COMPOP(op1, op2, T) \
149
+ constexpr bool operator op1(absl::T lhs, absl::LogSeverity rhs) { \
150
+ return static_cast<absl::LogSeverity>(lhs) op1 rhs; \
151
+ } \
152
+ constexpr bool operator op2(absl::LogSeverity lhs, absl::T rhs) { \
153
+ return lhs op2 static_cast<absl::LogSeverity>(rhs); \
154
+ }
155
+
156
+ // Comparisons between `LogSeverity` and `LogSeverityAtLeast`/
157
+ // `LogSeverityAtMost` are only supported in one direction.
158
+ // Valid checks are:
159
+ // LogSeverity >= LogSeverityAtLeast
160
+ // LogSeverity < LogSeverityAtLeast
161
+ // LogSeverity <= LogSeverityAtMost
162
+ // LogSeverity > LogSeverityAtMost
163
+ COMPOP(>, <, LogSeverityAtLeast)
164
+ COMPOP(<=, >=, LogSeverityAtLeast)
165
+ COMPOP(<, >, LogSeverityAtMost)
166
+ COMPOP(>=, <=, LogSeverityAtMost)
167
+ #undef COMPOP
168
+
118
169
  ABSL_NAMESPACE_END
119
170
  } // namespace absl
120
171
 
@@ -181,35 +181,43 @@
181
181
  #define ABSL_PREDICT_TRUE(x) (x)
182
182
  #endif
183
183
 
184
- // ABSL_INTERNAL_ASSUME(cond)
184
+ // ABSL_ASSUME(cond)
185
+ //
185
186
  // Informs the compiler that a condition is always true and that it can assume
186
- // it to be true for optimization purposes. The call has undefined behavior if
187
- // the condition is false.
187
+ // it to be true for optimization purposes.
188
+ //
189
+ // WARNING: If the condition is false, the program can produce undefined and
190
+ // potentially dangerous behavior.
191
+ //
188
192
  // In !NDEBUG mode, the condition is checked with an assert().
189
- // NOTE: The expression must not have side effects, as it will only be evaluated
190
- // in some compilation modes and not others.
193
+ //
194
+ // NOTE: The expression must not have side effects, as it may only be evaluated
195
+ // in some compilation modes and not others. Some compilers may issue a warning
196
+ // if the compiler cannot prove the expression has no side effects. For example,
197
+ // the expression should not use a function call since the compiler cannot prove
198
+ // that a function call does not have side effects.
191
199
  //
192
200
  // Example:
193
201
  //
194
202
  // int x = ...;
195
- // ABSL_INTERNAL_ASSUME(x >= 0);
203
+ // ABSL_ASSUME(x >= 0);
196
204
  // // The compiler can optimize the division to a simple right shift using the
197
205
  // // assumption specified above.
198
206
  // int y = x / 16;
199
207
  //
200
208
  #if !defined(NDEBUG)
201
- #define ABSL_INTERNAL_ASSUME(cond) assert(cond)
209
+ #define ABSL_ASSUME(cond) assert(cond)
202
210
  #elif ABSL_HAVE_BUILTIN(__builtin_assume)
203
- #define ABSL_INTERNAL_ASSUME(cond) __builtin_assume(cond)
211
+ #define ABSL_ASSUME(cond) __builtin_assume(cond)
204
212
  #elif defined(__GNUC__) || ABSL_HAVE_BUILTIN(__builtin_unreachable)
205
- #define ABSL_INTERNAL_ASSUME(cond) \
213
+ #define ABSL_ASSUME(cond) \
206
214
  do { \
207
215
  if (!(cond)) __builtin_unreachable(); \
208
216
  } while (0)
209
217
  #elif defined(_MSC_VER)
210
- #define ABSL_INTERNAL_ASSUME(cond) __assume(cond)
218
+ #define ABSL_ASSUME(cond) __assume(cond)
211
219
  #else
212
- #define ABSL_INTERNAL_ASSUME(cond) \
220
+ #define ABSL_ASSUME(cond) \
213
221
  do { \
214
222
  static_cast<void>(false && (cond)); \
215
223
  } while (0)
@@ -206,7 +206,7 @@
206
206
  // allowed.
207
207
 
208
208
  #define ABSL_OPTION_USE_INLINE_NAMESPACE 1
209
- #define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20211102
209
+ #define ABSL_OPTION_INLINE_NAMESPACE_NAME lts_20220623
210
210
 
211
211
  // ABSL_OPTION_HARDENED
212
212
  //
@@ -154,8 +154,8 @@
154
154
 
155
155
  // ABSL_LOCKS_EXCLUDED()
156
156
  //
157
- // Documents the locks acquired in the body of the function. These locks
158
- // cannot be held when calling this function (as Abseil's `Mutex` locks are
157
+ // Documents the locks that cannot be held by callers of this function, as they
158
+ // might be acquired by this function (Abseil's `Mutex` locks are
159
159
  // non-reentrant).
160
160
  #if ABSL_HAVE_ATTRIBUTE(locks_excluded)
161
161
  #define ABSL_LOCKS_EXCLUDED(...) __attribute__((locks_excluded(__VA_ARGS__)))
@@ -489,12 +489,14 @@ class FixedArray {
489
489
  Storage storage_;
490
490
  };
491
491
 
492
+ #ifdef ABSL_INTERNAL_NEED_REDUNDANT_CONSTEXPR_DECL
492
493
  template <typename T, size_t N, typename A>
493
494
  constexpr size_t FixedArray<T, N, A>::kInlineBytesDefault;
494
495
 
495
496
  template <typename T, size_t N, typename A>
496
497
  constexpr typename FixedArray<T, N, A>::size_type
497
498
  FixedArray<T, N, A>::inline_elements;
499
+ #endif
498
500
 
499
501
  template <typename T, size_t N, typename A>
500
502
  void FixedArray<T, N, A>::NonEmptyInlinedStorage::AnnotateConstruct(
@@ -36,6 +36,7 @@
36
36
  #include <utility>
37
37
 
38
38
  #include "absl/algorithm/container.h"
39
+ #include "absl/base/macros.h"
39
40
  #include "absl/container/internal/container_memory.h"
40
41
  #include "absl/container/internal/hash_function_defaults.h" // IWYU pragma: export
41
42
  #include "absl/container/internal/raw_hash_map.h" // IWYU pragma: export
@@ -75,6 +76,10 @@ struct FlatHashMapPolicy;
75
76
  // absl/hash/hash.h for information on extending Abseil hashing to user-defined
76
77
  // types.
77
78
  //
79
+ // Using `absl::flat_hash_map` at interface boundaries in dynamically loaded
80
+ // libraries (e.g. .dll, .so) is unsupported due to way `absl::Hash` values may
81
+ // be randomized across dynamically loaded libraries.
82
+ //
78
83
  // NOTE: A `flat_hash_map` stores its value types directly inside its
79
84
  // implementation array to avoid memory indirection. Because a `flat_hash_map`
80
85
  // is designed to move data when rehashed, map values will not retain pointer
@@ -356,8 +361,8 @@ class flat_hash_map : public absl::container_internal::raw_hash_map<
356
361
  // `flat_hash_map`.
357
362
  //
358
363
  // iterator try_emplace(const_iterator hint,
359
- // const init_type& k, Args&&... args):
360
- // iterator try_emplace(const_iterator hint, init_type&& k, Args&&... args):
364
+ // const key_type& k, Args&&... args):
365
+ // iterator try_emplace(const_iterator hint, key_type&& k, Args&&... args):
361
366
  //
362
367
  // Inserts (via copy or move) the element of the specified key into the
363
368
  // `flat_hash_map` using the position of `hint` as a non-binding suggestion
@@ -541,10 +546,12 @@ class flat_hash_map : public absl::container_internal::raw_hash_map<
541
546
  // erase_if(flat_hash_map<>, Pred)
542
547
  //
543
548
  // Erases all elements that satisfy the predicate `pred` from the container `c`.
549
+ // Returns the number of erased elements.
544
550
  template <typename K, typename V, typename H, typename E, typename A,
545
551
  typename Predicate>
546
- void erase_if(flat_hash_map<K, V, H, E, A>& c, Predicate pred) {
547
- container_internal::EraseIf(pred, &c);
552
+ typename flat_hash_map<K, V, H, E, A>::size_type erase_if(
553
+ flat_hash_map<K, V, H, E, A>& c, Predicate pred) {
554
+ return container_internal::EraseIf(pred, &c);
548
555
  }
549
556
 
550
557
  namespace container_internal {
@@ -67,11 +67,15 @@ struct FlatHashSetPolicy;
67
67
  //
68
68
  // By default, `flat_hash_set` uses the `absl::Hash` hashing framework. All
69
69
  // fundamental and Abseil types that support the `absl::Hash` framework have a
70
- // compatible equality operator for comparing insertions into `flat_hash_map`.
70
+ // compatible equality operator for comparing insertions into `flat_hash_set`.
71
71
  // If your type is not yet supported by the `absl::Hash` framework, see
72
72
  // absl/hash/hash.h for information on extending Abseil hashing to user-defined
73
73
  // types.
74
74
  //
75
+ // Using `absl::flat_hash_set` at interface boundaries in dynamically loaded
76
+ // libraries (e.g. .dll, .so) is unsupported due to way `absl::Hash` values may
77
+ // be randomized across dynamically loaded libraries.
78
+ //
75
79
  // NOTE: A `flat_hash_set` stores its keys directly inside its implementation
76
80
  // array to avoid memory indirection. Because a `flat_hash_set` is designed to
77
81
  // move data when rehashed, set keys will not retain pointer stability. If you
@@ -106,7 +110,7 @@ class flat_hash_set
106
110
  public:
107
111
  // Constructors and Assignment Operators
108
112
  //
109
- // A flat_hash_set supports the same overload set as `std::unordered_map`
113
+ // A flat_hash_set supports the same overload set as `std::unordered_set`
110
114
  // for construction and assignment:
111
115
  //
112
116
  // * Default constructor
@@ -173,7 +177,7 @@ class flat_hash_set
173
177
  // available within the `flat_hash_set`.
174
178
  //
175
179
  // NOTE: this member function is particular to `absl::flat_hash_set` and is
176
- // not provided in the `std::unordered_map` API.
180
+ // not provided in the `std::unordered_set` API.
177
181
  using Base::capacity;
178
182
 
179
183
  // flat_hash_set::empty()
@@ -332,7 +336,7 @@ class flat_hash_set
332
336
  // flat_hash_set::swap(flat_hash_set& other)
333
337
  //
334
338
  // Exchanges the contents of this `flat_hash_set` with those of the `other`
335
- // flat hash map, avoiding invocation of any move, copy, or swap operations on
339
+ // flat hash set, avoiding invocation of any move, copy, or swap operations on
336
340
  // individual elements.
337
341
  //
338
342
  // All iterators and references on the `flat_hash_set` remain valid, excepting
@@ -340,7 +344,7 @@ class flat_hash_set
340
344
  //
341
345
  // `swap()` requires that the flat hash set's hashing and key equivalence
342
346
  // functions be Swappable, and are exchaged using unqualified calls to
343
- // non-member `swap()`. If the map's allocator has
347
+ // non-member `swap()`. If the set's allocator has
344
348
  // `std::allocator_traits<allocator_type>::propagate_on_container_swap::value`
345
349
  // set to `true`, the allocators are also exchanged using an unqualified call
346
350
  // to non-member `swap()`; otherwise, the allocators are not swapped.
@@ -395,14 +399,14 @@ class flat_hash_set
395
399
  // flat_hash_set::bucket_count()
396
400
  //
397
401
  // Returns the number of "buckets" within the `flat_hash_set`. Note that
398
- // because a flat hash map contains all elements within its internal storage,
402
+ // because a flat hash set contains all elements within its internal storage,
399
403
  // this value simply equals the current capacity of the `flat_hash_set`.
400
404
  using Base::bucket_count;
401
405
 
402
406
  // flat_hash_set::load_factor()
403
407
  //
404
408
  // Returns the current load factor of the `flat_hash_set` (the average number
405
- // of slots occupied with a value within the hash map).
409
+ // of slots occupied with a value within the hash set).
406
410
  using Base::load_factor;
407
411
 
408
412
  // flat_hash_set::max_load_factor()
@@ -443,9 +447,11 @@ class flat_hash_set
443
447
  // erase_if(flat_hash_set<>, Pred)
444
448
  //
445
449
  // Erases all elements that satisfy the predicate `pred` from the container `c`.
450
+ // Returns the number of erased elements.
446
451
  template <typename T, typename H, typename E, typename A, typename Predicate>
447
- void erase_if(flat_hash_set<T, H, E, A>& c, Predicate pred) {
448
- container_internal::EraseIf(pred, &c);
452
+ typename flat_hash_set<T, H, E, A>::size_type erase_if(
453
+ flat_hash_set<T, H, E, A>& c, Predicate pred) {
454
+ return container_internal::EraseIf(pred, &c);
449
455
  }
450
456
 
451
457
  namespace container_internal {
@@ -36,7 +36,6 @@
36
36
  #define ABSL_CONTAINER_INLINED_VECTOR_H_
37
37
 
38
38
  #include <algorithm>
39
- #include <cassert>
40
39
  #include <cstddef>
41
40
  #include <cstdlib>
42
41
  #include <cstring>
@@ -152,7 +151,7 @@ class InlinedVector {
152
151
  const allocator_type& allocator = allocator_type())
153
152
  : storage_(allocator) {
154
153
  storage_.Initialize(IteratorValueAdapter<A, ForwardIterator>(first),
155
- std::distance(first, last));
154
+ static_cast<size_t>(std::distance(first, last)));
156
155
  }
157
156
 
158
157
  // Creates an inlined vector with elements constructed from the provided input
@@ -233,8 +232,8 @@ class InlinedVector {
233
232
  // specified allocator is also `noexcept`.
234
233
  InlinedVector(
235
234
  InlinedVector&& other,
236
- const allocator_type& allocator)
237
- noexcept(absl::allocator_is_nothrow<allocator_type>::value)
235
+ const allocator_type&
236
+ allocator) noexcept(absl::allocator_is_nothrow<allocator_type>::value)
238
237
  : storage_(allocator) {
239
238
  if (IsMemcpyOk<A>::value) {
240
239
  storage_.MemcpyFrom(other.storage_);
@@ -486,8 +485,8 @@ class InlinedVector {
486
485
  InlinedVector& operator=(InlinedVector&& other) {
487
486
  if (ABSL_PREDICT_TRUE(this != std::addressof(other))) {
488
487
  if (IsMemcpyOk<A>::value || other.storage_.GetIsAllocated()) {
489
- inlined_vector_internal::DestroyElements<A>(storage_.GetAllocator(),
490
- data(), size());
488
+ inlined_vector_internal::DestroyAdapter<A>::DestroyElements(
489
+ storage_.GetAllocator(), data(), size());
491
490
  storage_.DeallocateIfAllocated();
492
491
  storage_.MemcpyFrom(other.storage_);
493
492
 
@@ -523,7 +522,7 @@ class InlinedVector {
523
522
  EnableIfAtLeastForwardIterator<ForwardIterator> = 0>
524
523
  void assign(ForwardIterator first, ForwardIterator last) {
525
524
  storage_.Assign(IteratorValueAdapter<A, ForwardIterator>(first),
526
- std::distance(first, last));
525
+ static_cast<size_t>(std::distance(first, last)));
527
526
  }
528
527
 
529
528
  // Overload of `InlinedVector::assign(...)` to replace the contents of the
@@ -586,8 +585,20 @@ class InlinedVector {
586
585
 
587
586
  if (ABSL_PREDICT_TRUE(n != 0)) {
588
587
  value_type dealias = v;
588
+ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102329#c2
589
+ // It appears that GCC thinks that since `pos` is a const pointer and may
590
+ // point to uninitialized memory at this point, a warning should be
591
+ // issued. But `pos` is actually only used to compute an array index to
592
+ // write to.
593
+ #if !defined(__clang__) && defined(__GNUC__)
594
+ #pragma GCC diagnostic push
595
+ #pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
596
+ #endif
589
597
  return storage_.Insert(pos, CopyValueAdapter<A>(std::addressof(dealias)),
590
598
  n);
599
+ #if !defined(__clang__) && defined(__GNUC__)
600
+ #pragma GCC diagnostic pop
601
+ #endif
591
602
  } else {
592
603
  return const_cast<iterator>(pos);
593
604
  }
@@ -721,8 +732,8 @@ class InlinedVector {
721
732
  // Destroys all elements in the inlined vector, setting the size to `0` and
722
733
  // deallocating any held memory.
723
734
  void clear() noexcept {
724
- inlined_vector_internal::DestroyElements<A>(storage_.GetAllocator(), data(),
725
- size());
735
+ inlined_vector_internal::DestroyAdapter<A>::DestroyElements(
736
+ storage_.GetAllocator(), data(), size());
726
737
  storage_.DeallocateIfAllocated();
727
738
 
728
739
  storage_.SetInlinedSize(0);
@@ -84,10 +84,11 @@ class node_handle_base {
84
84
  PolicyTraits::transfer(alloc(), slot(), s);
85
85
  }
86
86
 
87
- struct move_tag_t {};
88
- node_handle_base(move_tag_t, const allocator_type& a, slot_type* s)
87
+ struct construct_tag_t {};
88
+ template <typename... Args>
89
+ node_handle_base(construct_tag_t, const allocator_type& a, Args&&... args)
89
90
  : alloc_(a) {
90
- PolicyTraits::construct(alloc(), slot(), s);
91
+ PolicyTraits::construct(alloc(), slot(), std::forward<Args>(args)...);
91
92
  }
92
93
 
93
94
  void destroy() {
@@ -186,8 +187,8 @@ struct CommonAccess {
186
187
  }
187
188
 
188
189
  template <typename T, typename... Args>
189
- static T Move(Args&&... args) {
190
- return T(typename T::move_tag_t{}, std::forward<Args>(args)...);
190
+ static T Construct(Args&&... args) {
191
+ return T(typename T::construct_tag_t{}, std::forward<Args>(args)...);
191
192
  }
192
193
  };
193
194
 
@@ -174,7 +174,7 @@ decltype(std::declval<F>()(std::declval<T>())) WithConstructed(
174
174
  //
175
175
  // 2. auto a = PairArgs(args...);
176
176
  // std::pair<F, S> p(std::piecewise_construct,
177
- // std::move(p.first), std::move(p.second));
177
+ // std::move(a.first), std::move(a.second));
178
178
  inline std::pair<std::tuple<>, std::tuple<>> PairArgs() { return {}; }
179
179
  template <class F, class S>
180
180
  std::pair<std::tuple<F&&>, std::tuple<S&&>> PairArgs(F&& f, S&& s) {
@@ -402,6 +402,15 @@ struct map_slot_policy {
402
402
  }
403
403
  }
404
404
 
405
+ // Construct this slot by copying from another slot.
406
+ template <class Allocator>
407
+ static void construct(Allocator* alloc, slot_type* slot,
408
+ const slot_type* other) {
409
+ emplace(slot);
410
+ absl::allocator_traits<Allocator>::construct(*alloc, &slot->value,
411
+ other->value);
412
+ }
413
+
405
414
  template <class Allocator>
406
415
  static void destroy(Allocator* alloc, slot_type* slot) {
407
416
  if (kMutableKeys::value) {
@@ -424,33 +433,6 @@ struct map_slot_policy {
424
433
  }
425
434
  destroy(alloc, old_slot);
426
435
  }
427
-
428
- template <class Allocator>
429
- static void swap(Allocator* alloc, slot_type* a, slot_type* b) {
430
- if (kMutableKeys::value) {
431
- using std::swap;
432
- swap(a->mutable_value, b->mutable_value);
433
- } else {
434
- value_type tmp = std::move(a->value);
435
- absl::allocator_traits<Allocator>::destroy(*alloc, &a->value);
436
- absl::allocator_traits<Allocator>::construct(*alloc, &a->value,
437
- std::move(b->value));
438
- absl::allocator_traits<Allocator>::destroy(*alloc, &b->value);
439
- absl::allocator_traits<Allocator>::construct(*alloc, &b->value,
440
- std::move(tmp));
441
- }
442
- }
443
-
444
- template <class Allocator>
445
- static void move(Allocator* alloc, slot_type* src, slot_type* dest) {
446
- if (kMutableKeys::value) {
447
- dest->mutable_value = std::move(src->mutable_value);
448
- } else {
449
- absl::allocator_traits<Allocator>::destroy(*alloc, &dest->value);
450
- absl::allocator_traits<Allocator>::construct(*alloc, &dest->value,
451
- std::move(src->value));
452
- }
453
- }
454
436
  };
455
437
 
456
438
  } // namespace container_internal