grpc 1.37.1 → 1.38.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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +2 -2
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +5 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -50,15 +50,15 @@ void grpc_wakeup_fd_global_destroy(void) { wakeup_fd_vtable = nullptr; }
50
50
 
51
51
  int grpc_has_wakeup_fd(void) { return has_real_wakeup_fd; }
52
52
 
53
- grpc_error* grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) {
53
+ grpc_error_handle grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) {
54
54
  return wakeup_fd_vtable->init(fd_info);
55
55
  }
56
56
 
57
- grpc_error* grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) {
57
+ grpc_error_handle grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info) {
58
58
  return wakeup_fd_vtable->consume(fd_info);
59
59
  }
60
60
 
61
- grpc_error* grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) {
61
+ grpc_error_handle grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) {
62
62
  return wakeup_fd_vtable->wakeup(fd_info);
63
63
  }
64
64
 
@@ -65,9 +65,9 @@ void grpc_enable_cv_wakeup_fds(int enable);
65
65
  typedef struct grpc_wakeup_fd grpc_wakeup_fd;
66
66
 
67
67
  typedef struct grpc_wakeup_fd_vtable {
68
- grpc_error* (*init)(grpc_wakeup_fd* fd_info);
69
- grpc_error* (*consume)(grpc_wakeup_fd* fd_info);
70
- grpc_error* (*wakeup)(grpc_wakeup_fd* fd_info);
68
+ grpc_error_handle (*init)(grpc_wakeup_fd* fd_info);
69
+ grpc_error_handle (*consume)(grpc_wakeup_fd* fd_info);
70
+ grpc_error_handle (*wakeup)(grpc_wakeup_fd* fd_info);
71
71
  void (*destroy)(grpc_wakeup_fd* fd_info);
72
72
  /* Must be called before calling any other functions */
73
73
  int (*check_availability)(void);
@@ -83,10 +83,12 @@ extern int grpc_allow_pipe_wakeup_fd;
83
83
 
84
84
  #define GRPC_WAKEUP_FD_GET_READ_FD(fd_info) ((fd_info)->read_fd)
85
85
 
86
- grpc_error* grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info) GRPC_MUST_USE_RESULT;
87
- grpc_error* grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info)
86
+ grpc_error_handle grpc_wakeup_fd_init(grpc_wakeup_fd* fd_info)
87
+ GRPC_MUST_USE_RESULT;
88
+ grpc_error_handle grpc_wakeup_fd_consume_wakeup(grpc_wakeup_fd* fd_info)
89
+ GRPC_MUST_USE_RESULT;
90
+ grpc_error_handle grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info)
88
91
  GRPC_MUST_USE_RESULT;
89
- grpc_error* grpc_wakeup_fd_wakeup(grpc_wakeup_fd* fd_info) GRPC_MUST_USE_RESULT;
90
92
  void grpc_wakeup_fd_destroy(grpc_wakeup_fd* fd_info);
91
93
 
92
94
  /* Defined in some specialized implementation's .c file, or by
@@ -20,6 +20,8 @@
20
20
 
21
21
  #include <functional>
22
22
 
23
+ #include "absl/synchronization/mutex.h"
24
+
23
25
  #include "src/core/lib/debug/trace.h"
24
26
  #include "src/core/lib/gprpp/atomic.h"
25
27
  #include "src/core/lib/gprpp/debug_location.h"
@@ -43,12 +45,26 @@ namespace grpc_core {
43
45
  // other callbacks from other threads might also be executed before Run()
44
46
  // returns. Since an arbitrary set of callbacks might be executed when Run() is
45
47
  // called, generally no locks should be held while calling Run().
46
- class WorkSerializer {
48
+ class ABSL_LOCKABLE WorkSerializer {
47
49
  public:
48
50
  WorkSerializer();
49
51
 
50
52
  ~WorkSerializer();
51
53
 
54
+ // Runs a given callback.
55
+ //
56
+ // If you want to use clang thread annotation to make sure that callback is
57
+ // called by WorkSerializer only, you need to add the annotation to both the
58
+ // lambda function given to Run and the actual callback function like;
59
+ //
60
+ // void run_callback() {
61
+ // work_serializer.Run(
62
+ // []() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer) {
63
+ // callback();
64
+ // }, DEBUG_LOCATION);
65
+ // }
66
+ // void callback() ABSL_EXCLUSIVE_LOCKS_REQUIRED(work_serializer) { ... }
67
+ //
52
68
  // TODO(yashkt): Replace grpc_core::DebugLocation with absl::SourceLocation
53
69
  // once we can start using it directly.
54
70
  void Run(std::function<void()> callback,
@@ -56,7 +56,7 @@ class Json {
56
56
  using Array = std::vector<Json>;
57
57
 
58
58
  // Parses JSON string from json_str. On error, sets *error.
59
- static Json Parse(absl::string_view json_str, grpc_error** error);
59
+ static Json Parse(absl::string_view json_str, grpc_error_handle* error);
60
60
 
61
61
  Json() = default;
62
62
 
@@ -38,7 +38,7 @@ namespace {
38
38
 
39
39
  class JsonReader {
40
40
  public:
41
- static grpc_error* Parse(absl::string_view input, Json* output);
41
+ static grpc_error_handle Parse(absl::string_view input, Json* output);
42
42
 
43
43
  private:
44
44
  enum class Status {
@@ -117,7 +117,7 @@ class JsonReader {
117
117
  bool container_just_begun_ = false;
118
118
  uint16_t unicode_char_ = 0;
119
119
  uint16_t unicode_high_surrogate_ = 0;
120
- std::vector<grpc_error*> errors_;
120
+ std::vector<grpc_error_handle> errors_;
121
121
  bool truncated_errors_ = false;
122
122
 
123
123
  Json root_value_;
@@ -821,7 +821,7 @@ JsonReader::Status JsonReader::Run() {
821
821
  GPR_UNREACHABLE_CODE(return Status::GRPC_JSON_INTERNAL_ERROR);
822
822
  }
823
823
 
824
- grpc_error* JsonReader::Parse(absl::string_view input, Json* output) {
824
+ grpc_error_handle JsonReader::Parse(absl::string_view input, Json* output) {
825
825
  JsonReader reader(input);
826
826
  Status status = reader.Run();
827
827
  if (reader.truncated_errors_) {
@@ -849,7 +849,7 @@ grpc_error* JsonReader::Parse(absl::string_view input, Json* output) {
849
849
 
850
850
  } // namespace
851
851
 
852
- Json Json::Parse(absl::string_view json_str, grpc_error** error) {
852
+ Json Json::Parse(absl::string_view json_str, grpc_error_handle* error) {
853
853
  Json value;
854
854
  *error = JsonReader::Parse(json_str, &value);
855
855
  return value;
@@ -31,7 +31,7 @@ namespace grpc_core {
31
31
  absl::StatusOr<StringMatcher> StringMatcher::Create(Type type,
32
32
  absl::string_view matcher,
33
33
  bool case_sensitive) {
34
- if (type == Type::SAFE_REGEX) {
34
+ if (type == Type::kSafeRegex) {
35
35
  RE2::Options options;
36
36
  options.set_case_sensitive(case_sensitive);
37
37
  auto regex_matcher = absl::make_unique<RE2>(std::string(matcher), options);
@@ -51,13 +51,13 @@ StringMatcher::StringMatcher(Type type, absl::string_view matcher,
51
51
 
52
52
  StringMatcher::StringMatcher(std::unique_ptr<RE2> regex_matcher,
53
53
  bool case_sensitive)
54
- : type_(Type::SAFE_REGEX),
54
+ : type_(Type::kSafeRegex),
55
55
  regex_matcher_(std::move(regex_matcher)),
56
56
  case_sensitive_(case_sensitive) {}
57
57
 
58
58
  StringMatcher::StringMatcher(const StringMatcher& other)
59
59
  : type_(other.type_), case_sensitive_(other.case_sensitive_) {
60
- if (type_ == Type::SAFE_REGEX) {
60
+ if (type_ == Type::kSafeRegex) {
61
61
  RE2::Options options;
62
62
  options.set_case_sensitive(other.case_sensitive_);
63
63
  regex_matcher_ =
@@ -69,7 +69,7 @@ StringMatcher::StringMatcher(const StringMatcher& other)
69
69
 
70
70
  StringMatcher& StringMatcher::operator=(const StringMatcher& other) {
71
71
  type_ = other.type_;
72
- if (type_ == Type::SAFE_REGEX) {
72
+ if (type_ == Type::kSafeRegex) {
73
73
  RE2::Options options;
74
74
  options.set_case_sensitive(other.case_sensitive_);
75
75
  regex_matcher_ =
@@ -83,7 +83,7 @@ StringMatcher& StringMatcher::operator=(const StringMatcher& other) {
83
83
 
84
84
  StringMatcher::StringMatcher(StringMatcher&& other) noexcept
85
85
  : type_(other.type_), case_sensitive_(other.case_sensitive_) {
86
- if (type_ == Type::SAFE_REGEX) {
86
+ if (type_ == Type::kSafeRegex) {
87
87
  regex_matcher_ = std::move(other.regex_matcher_);
88
88
  } else {
89
89
  string_matcher_ = std::move(other.string_matcher_);
@@ -92,7 +92,7 @@ StringMatcher::StringMatcher(StringMatcher&& other) noexcept
92
92
 
93
93
  StringMatcher& StringMatcher::operator=(StringMatcher&& other) noexcept {
94
94
  type_ = other.type_;
95
- if (type_ == Type::SAFE_REGEX) {
95
+ if (type_ == Type::kSafeRegex) {
96
96
  regex_matcher_ = std::move(other.regex_matcher_);
97
97
  } else {
98
98
  string_matcher_ = std::move(other.string_matcher_);
@@ -105,7 +105,7 @@ bool StringMatcher::operator==(const StringMatcher& other) const {
105
105
  if (type_ != other.type_ || case_sensitive_ != other.case_sensitive_) {
106
106
  return false;
107
107
  }
108
- if (type_ == Type::SAFE_REGEX) {
108
+ if (type_ == Type::kSafeRegex) {
109
109
  return regex_matcher_->pattern() == other.regex_matcher_->pattern();
110
110
  } else {
111
111
  return string_matcher_ == other.string_matcher_;
@@ -114,22 +114,22 @@ bool StringMatcher::operator==(const StringMatcher& other) const {
114
114
 
115
115
  bool StringMatcher::Match(absl::string_view value) const {
116
116
  switch (type_) {
117
- case Type::EXACT:
117
+ case Type::kExact:
118
118
  return case_sensitive_ ? value == string_matcher_
119
119
  : absl::EqualsIgnoreCase(value, string_matcher_);
120
- case StringMatcher::Type::PREFIX:
120
+ case StringMatcher::Type::kPrefix:
121
121
  return case_sensitive_
122
122
  ? absl::StartsWith(value, string_matcher_)
123
123
  : absl::StartsWithIgnoreCase(value, string_matcher_);
124
- case StringMatcher::Type::SUFFIX:
124
+ case StringMatcher::Type::kSuffix:
125
125
  return case_sensitive_ ? absl::EndsWith(value, string_matcher_)
126
126
  : absl::EndsWithIgnoreCase(value, string_matcher_);
127
- case StringMatcher::Type::CONTAINS:
127
+ case StringMatcher::Type::kContains:
128
128
  return case_sensitive_
129
129
  ? absl::StrContains(value, string_matcher_)
130
130
  : absl::StrContains(absl::AsciiStrToLower(value),
131
131
  absl::AsciiStrToLower(string_matcher_));
132
- case StringMatcher::Type::SAFE_REGEX:
132
+ case StringMatcher::Type::kSafeRegex:
133
133
  return RE2::FullMatch(std::string(value), *regex_matcher_);
134
134
  default:
135
135
  return false;
@@ -138,19 +138,19 @@ bool StringMatcher::Match(absl::string_view value) const {
138
138
 
139
139
  std::string StringMatcher::ToString() const {
140
140
  switch (type_) {
141
- case Type::EXACT:
141
+ case Type::kExact:
142
142
  return absl::StrFormat("StringMatcher{exact=%s%s}", string_matcher_,
143
143
  case_sensitive_ ? "" : ", case_sensitive=false");
144
- case Type::PREFIX:
144
+ case Type::kPrefix:
145
145
  return absl::StrFormat("StringMatcher{prefix=%s%s}", string_matcher_,
146
146
  case_sensitive_ ? "" : ", case_sensitive=false");
147
- case Type::SUFFIX:
147
+ case Type::kSuffix:
148
148
  return absl::StrFormat("StringMatcher{suffix=%s%s}", string_matcher_,
149
149
  case_sensitive_ ? "" : ", case_sensitive=false");
150
- case Type::CONTAINS:
150
+ case Type::kContains:
151
151
  return absl::StrFormat("StringMatcher{contains=%s%s}", string_matcher_,
152
152
  case_sensitive_ ? "" : ", case_sensitive=false");
153
- case Type::SAFE_REGEX:
153
+ case Type::kSafeRegex:
154
154
  return absl::StrFormat("StringMatcher{safe_regex=%s%s}",
155
155
  regex_matcher_->pattern(),
156
156
  case_sensitive_ ? "" : ", case_sensitive=false");
@@ -177,7 +177,7 @@ absl::StatusOr<HeaderMatcher> HeaderMatcher::Create(
177
177
  }
178
178
  return HeaderMatcher(name, type, std::move(string_matcher.value()),
179
179
  invert_match);
180
- } else if (type == Type::RANGE) {
180
+ } else if (type == Type::kRange) {
181
181
  if (range_start > range_end) {
182
182
  return absl::InvalidArgumentError(
183
183
  "Invalid range specifier specified: end cannot be smaller than "
@@ -199,7 +199,7 @@ HeaderMatcher::HeaderMatcher(absl::string_view name, Type type,
199
199
  HeaderMatcher::HeaderMatcher(absl::string_view name, int64_t range_start,
200
200
  int64_t range_end, bool invert_match)
201
201
  : name_(name),
202
- type_(Type::RANGE),
202
+ type_(Type::kRange),
203
203
  range_start_(range_start),
204
204
  range_end_(range_end),
205
205
  invert_match_(invert_match) {}
@@ -207,7 +207,7 @@ HeaderMatcher::HeaderMatcher(absl::string_view name, int64_t range_start,
207
207
  HeaderMatcher::HeaderMatcher(absl::string_view name, bool present_match,
208
208
  bool invert_match)
209
209
  : name_(name),
210
- type_(Type::PRESENT),
210
+ type_(Type::kPresent),
211
211
  present_match_(present_match),
212
212
  invert_match_(invert_match) {}
213
213
 
@@ -216,11 +216,11 @@ HeaderMatcher::HeaderMatcher(const HeaderMatcher& other)
216
216
  type_(other.type_),
217
217
  invert_match_(other.invert_match_) {
218
218
  switch (type_) {
219
- case Type::RANGE:
219
+ case Type::kRange:
220
220
  range_start_ = other.range_start_;
221
221
  range_end_ = other.range_end_;
222
222
  break;
223
- case Type::PRESENT:
223
+ case Type::kPresent:
224
224
  present_match_ = other.present_match_;
225
225
  break;
226
226
  default:
@@ -233,11 +233,11 @@ HeaderMatcher& HeaderMatcher::operator=(const HeaderMatcher& other) {
233
233
  type_ = other.type_;
234
234
  invert_match_ = other.invert_match_;
235
235
  switch (type_) {
236
- case Type::RANGE:
236
+ case Type::kRange:
237
237
  range_start_ = other.range_start_;
238
238
  range_end_ = other.range_end_;
239
239
  break;
240
- case Type::PRESENT:
240
+ case Type::kPresent:
241
241
  present_match_ = other.present_match_;
242
242
  break;
243
243
  default:
@@ -251,11 +251,11 @@ HeaderMatcher::HeaderMatcher(HeaderMatcher&& other) noexcept
251
251
  type_(other.type_),
252
252
  invert_match_(other.invert_match_) {
253
253
  switch (type_) {
254
- case Type::RANGE:
254
+ case Type::kRange:
255
255
  range_start_ = other.range_start_;
256
256
  range_end_ = other.range_end_;
257
257
  break;
258
- case Type::PRESENT:
258
+ case Type::kPresent:
259
259
  present_match_ = other.present_match_;
260
260
  break;
261
261
  default:
@@ -268,11 +268,11 @@ HeaderMatcher& HeaderMatcher::operator=(HeaderMatcher&& other) noexcept {
268
268
  type_ = other.type_;
269
269
  invert_match_ = other.invert_match_;
270
270
  switch (type_) {
271
- case Type::RANGE:
271
+ case Type::kRange:
272
272
  range_start_ = other.range_start_;
273
273
  range_end_ = other.range_end_;
274
274
  break;
275
- case Type::PRESENT:
275
+ case Type::kPresent:
276
276
  present_match_ = other.present_match_;
277
277
  break;
278
278
  default:
@@ -286,10 +286,10 @@ bool HeaderMatcher::operator==(const HeaderMatcher& other) const {
286
286
  if (type_ != other.type_) return false;
287
287
  if (invert_match_ != other.invert_match_) return false;
288
288
  switch (type_) {
289
- case Type::RANGE:
289
+ case Type::kRange:
290
290
  return range_start_ == other.range_start_ &&
291
291
  range_end_ == other.range_end_;
292
- case Type::PRESENT:
292
+ case Type::kPresent:
293
293
  return present_match_ == other.present_match_;
294
294
  default:
295
295
  return matcher_ == other.matcher_;
@@ -299,12 +299,12 @@ bool HeaderMatcher::operator==(const HeaderMatcher& other) const {
299
299
  bool HeaderMatcher::Match(
300
300
  const absl::optional<absl::string_view>& value) const {
301
301
  bool match;
302
- if (type_ == Type::PRESENT) {
302
+ if (type_ == Type::kPresent) {
303
303
  match = value.has_value() == present_match_;
304
304
  } else if (!value.has_value()) {
305
305
  // All other types fail to match if field is not present.
306
306
  match = false;
307
- } else if (type_ == Type::RANGE) {
307
+ } else if (type_ == Type::kRange) {
308
308
  int64_t int_value;
309
309
  match = absl::SimpleAtoi(value.value(), &int_value) &&
310
310
  int_value >= range_start_ && int_value < range_end_;
@@ -316,19 +316,19 @@ bool HeaderMatcher::Match(
316
316
 
317
317
  std::string HeaderMatcher::ToString() const {
318
318
  switch (type_) {
319
- case Type::RANGE:
319
+ case Type::kRange:
320
320
  return absl::StrFormat("HeaderMatcher{%s %srange=[%d, %d]}", name_,
321
321
  invert_match_ ? "not " : "", range_start_,
322
322
  range_end_);
323
- case Type::PRESENT:
323
+ case Type::kPresent:
324
324
  return absl::StrFormat("HeaderMatcher{%s %spresent=%s}", name_,
325
325
  invert_match_ ? "not " : "",
326
326
  present_match_ ? "true" : "false");
327
- case Type::EXACT:
328
- case Type::PREFIX:
329
- case Type::SUFFIX:
330
- case Type::SAFE_REGEX:
331
- case Type::CONTAINS:
327
+ case Type::kExact:
328
+ case Type::kPrefix:
329
+ case Type::kSuffix:
330
+ case Type::kSafeRegex:
331
+ case Type::kContains:
332
332
  return absl::StrFormat("HeaderMatcher{%s %s%s}", name_,
333
333
  invert_match_ ? "not " : "", matcher_.ToString());
334
334
  default:
@@ -31,11 +31,11 @@ namespace grpc_core {
31
31
  class StringMatcher {
32
32
  public:
33
33
  enum class Type {
34
- EXACT, // value stored in string_matcher_ field
35
- PREFIX, // value stored in string_matcher_ field
36
- SUFFIX, // value stored in string_matcher_ field
37
- SAFE_REGEX, // pattern stored in regex_matcher_ field
38
- CONTAINS, // value stored in string_matcher_ field
34
+ kExact, // value stored in string_matcher_ field
35
+ kPrefix, // value stored in string_matcher_ field
36
+ kSuffix, // value stored in string_matcher_ field
37
+ kSafeRegex, // pattern stored in regex_matcher_ field
38
+ kContains, // value stored in string_matcher_ field
39
39
  };
40
40
 
41
41
  // Creates StringMatcher instance. Returns error status on failure.
@@ -56,10 +56,10 @@ class StringMatcher {
56
56
 
57
57
  Type type() const { return type_; }
58
58
 
59
- // Valid for EXACT, PREFIX, SUFFIX and CONTAINS
59
+ // Valid for kExact, kPrefix, kSuffix and kContains.
60
60
  const std::string& string_matcher() const { return string_matcher_; }
61
61
 
62
- // Valid for SAFE_REGEX
62
+ // Valid for kSafeRegex.
63
63
  RE2* regex_matcher() const { return regex_matcher_.get(); }
64
64
 
65
65
  bool case_sensitive() const { return case_sensitive_; }
@@ -68,7 +68,7 @@ class StringMatcher {
68
68
  StringMatcher(Type type, absl::string_view matcher, bool case_sensitive);
69
69
  StringMatcher(std::unique_ptr<RE2> regex_matcher, bool case_sensitive);
70
70
 
71
- Type type_ = Type::EXACT;
71
+ Type type_ = Type::kExact;
72
72
  std::string string_matcher_;
73
73
  std::unique_ptr<RE2> regex_matcher_;
74
74
  bool case_sensitive_ = true;
@@ -77,32 +77,32 @@ class StringMatcher {
77
77
  class HeaderMatcher {
78
78
  public:
79
79
  enum class Type {
80
- EXACT, // value stored in StringMatcher field
81
- PREFIX, // value stored in StringMatcher field
82
- SUFFIX, // value stored in StringMatcher field
83
- SAFE_REGEX, // value stored in StringMatcher field
84
- CONTAINS, // value stored in StringMatcher field
85
- RANGE, // uses range_start and range_end fields
86
- PRESENT, // uses present_match field
80
+ kExact, // value stored in StringMatcher field
81
+ kPrefix, // value stored in StringMatcher field
82
+ kSuffix, // value stored in StringMatcher field
83
+ kSafeRegex, // value stored in StringMatcher field
84
+ kContains, // value stored in StringMatcher field
85
+ kRange, // uses range_start and range_end fields
86
+ kPresent, // uses present_match field
87
87
  };
88
88
 
89
89
  // Make sure that the first five HeaderMatcher::Type enum values match up to
90
90
  // the corresponding StringMatcher::Type enum values, so that it's safe to
91
91
  // convert by casting when delegating to StringMatcher.
92
- static_assert(static_cast<StringMatcher::Type>(Type::EXACT) ==
93
- StringMatcher::Type::EXACT,
92
+ static_assert(static_cast<StringMatcher::Type>(Type::kExact) ==
93
+ StringMatcher::Type::kExact,
94
94
  "");
95
- static_assert(static_cast<StringMatcher::Type>(Type::PREFIX) ==
96
- StringMatcher::Type::PREFIX,
95
+ static_assert(static_cast<StringMatcher::Type>(Type::kPrefix) ==
96
+ StringMatcher::Type::kPrefix,
97
97
  "");
98
- static_assert(static_cast<StringMatcher::Type>(Type::SUFFIX) ==
99
- StringMatcher::Type::SUFFIX,
98
+ static_assert(static_cast<StringMatcher::Type>(Type::kSuffix) ==
99
+ StringMatcher::Type::kSuffix,
100
100
  "");
101
- static_assert(static_cast<StringMatcher::Type>(Type::SAFE_REGEX) ==
102
- StringMatcher::Type::SAFE_REGEX,
101
+ static_assert(static_cast<StringMatcher::Type>(Type::kSafeRegex) ==
102
+ StringMatcher::Type::kSafeRegex,
103
103
  "");
104
- static_assert(static_cast<StringMatcher::Type>(Type::CONTAINS) ==
105
- StringMatcher::Type::CONTAINS,
104
+ static_assert(static_cast<StringMatcher::Type>(Type::kContains) ==
105
+ StringMatcher::Type::kContains,
106
106
  "");
107
107
 
108
108
  // Creates HeaderMatcher instance. Returns error status on failure.
@@ -124,12 +124,12 @@ class HeaderMatcher {
124
124
 
125
125
  Type type() const { return type_; }
126
126
 
127
- // Valid for EXACT, PREFIX, SUFFIX and CONTAINS
127
+ // Valid for kExact, kPrefix, kSuffix and kContains.
128
128
  const std::string& string_matcher() const {
129
129
  return matcher_.string_matcher();
130
130
  }
131
131
 
132
- // Valid for SAFE_REGEX
132
+ // Valid for kSafeRegex.
133
133
  RE2* regex_matcher() const { return matcher_.regex_matcher(); }
134
134
 
135
135
  bool Match(const absl::optional<absl::string_view>& value) const;
@@ -147,7 +147,7 @@ class HeaderMatcher {
147
147
  HeaderMatcher(absl::string_view name, bool present_match, bool invert_match);
148
148
 
149
149
  std::string name_;
150
- Type type_ = Type::EXACT;
150
+ Type type_ = Type::kExact;
151
151
  StringMatcher matcher_;
152
152
  int64_t range_start_;
153
153
  int64_t range_end_;