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
@@ -0,0 +1,180 @@
1
+ //
2
+ //
3
+ // Copyright 2021 the gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
+
19
+ #ifndef GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
20
+ #define GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include "absl/status/status.h"
25
+ #include "absl/time/time.h"
26
+
27
+ #include "src/core/lib/gprpp/debug_location.h"
28
+
29
+ extern "C" {
30
+ struct google_rpc_Status;
31
+ struct upb_arena;
32
+ }
33
+
34
+ namespace grpc_core {
35
+
36
+ /// This enum should have the same value of grpc_error_ints
37
+ // TODO(veblush): Use camel-case names once migration to absl::Status is done.
38
+ enum class StatusIntProperty {
39
+ /// 'errno' from the operating system
40
+ kErrorNo,
41
+ /// __LINE__ from the call site creating the error
42
+ kFileLine,
43
+ /// stream identifier: for errors that are associated with an individual
44
+ /// wire stream
45
+ kStreamId,
46
+ /// grpc status code representing this error
47
+ // TODO(veblush): Remove this after grpc_error is replaced with absl::Status
48
+ kRpcStatus,
49
+ /// offset into some binary blob (usually represented by
50
+ /// RAW_BYTES) where the error occurred
51
+ kOffset,
52
+ /// context sensitive index associated with the error
53
+ kIndex,
54
+ /// context sensitive size associated with the error
55
+ kSize,
56
+ /// http2 error code associated with the error (see the HTTP2 RFC)
57
+ kHttp2Error,
58
+ /// TSI status code associated with the error
59
+ kTsiCode,
60
+ /// WSAGetLastError() reported when this error occurred
61
+ kWsaError,
62
+ /// File descriptor associated with this error
63
+ kFd,
64
+ /// HTTP status (i.e. 404)
65
+ kHttpStatus,
66
+ /// chttp2: did the error occur while a write was in progress
67
+ kOccurredDuringWrite,
68
+ /// channel connectivity state associated with the error
69
+ ChannelConnectivityState,
70
+ /// LB policy drop
71
+ kLbPolicyDrop,
72
+ };
73
+
74
+ /// This enum should have the same value of grpc_error_strs
75
+ // TODO(veblush): Use camel-case names once migration to absl::Status is done.
76
+ enum class StatusStrProperty {
77
+ /// top-level textual description of this error
78
+ kDescription,
79
+ /// source file in which this error occurred
80
+ kFile,
81
+ /// operating system description of this error
82
+ kOsError,
83
+ /// syscall that generated this error
84
+ kSyscall,
85
+ /// peer that we were trying to communicate when this error occurred
86
+ kTargetAddress,
87
+ /// grpc status message associated with this error
88
+ kGrpcMessage,
89
+ /// hex dump (or similar) with the data that generated this error
90
+ kRawBytes,
91
+ /// tsi error string associated with this error
92
+ kTsiError,
93
+ /// filename that we were trying to read/write when this error occurred
94
+ kFilename,
95
+ /// key associated with the error
96
+ kKey,
97
+ /// value associated with the error
98
+ kValue,
99
+ };
100
+
101
+ /// This enum should have the same value of grpc_error_times
102
+ enum class StatusTimeProperty {
103
+ /// timestamp of error creation
104
+ kCreated,
105
+ };
106
+
107
+ /// Creates a status with given additional information
108
+ absl::Status StatusCreate(
109
+ absl::StatusCode code, absl::string_view msg, const DebugLocation& location,
110
+ std::initializer_list<absl::Status> children) GRPC_MUST_USE_RESULT;
111
+
112
+ /// Sets the int property to the status
113
+ void StatusSetInt(absl::Status* status, StatusIntProperty key, intptr_t value);
114
+
115
+ /// Gets the int property from the status
116
+ absl::optional<intptr_t> StatusGetInt(
117
+ const absl::Status& status, StatusIntProperty key) GRPC_MUST_USE_RESULT;
118
+
119
+ /// Sets the str property to the status
120
+ void StatusSetStr(absl::Status* status, StatusStrProperty key,
121
+ absl::string_view value);
122
+
123
+ /// Gets the str property from the status
124
+ absl::optional<std::string> StatusGetStr(
125
+ const absl::Status& status, StatusStrProperty key) GRPC_MUST_USE_RESULT;
126
+
127
+ /// Sets the time property to the status
128
+ void StatusSetTime(absl::Status* status, StatusTimeProperty key,
129
+ absl::Time time);
130
+
131
+ /// Gets the time property from the status
132
+ absl::optional<absl::Time> StatusGetTime(
133
+ const absl::Status& status, StatusTimeProperty key) GRPC_MUST_USE_RESULT;
134
+
135
+ /// Adds a child status to status
136
+ void StatusAddChild(absl::Status* status, absl::Status child);
137
+
138
+ /// Returns all children status from a status
139
+ std::vector<absl::Status> StatusGetChildren(absl::Status status)
140
+ GRPC_MUST_USE_RESULT;
141
+
142
+ /// Returns a string representation from status
143
+ /// Error status will be like
144
+ /// STATUS[:MESSAGE] [{PAYLOADS[, children:[CHILDREN-STATUS-LISTS]]}]
145
+ /// e.g.
146
+ /// CANCELLATION:SampleMessage {errno:'2021', line:'54', children:[ABORTED]}
147
+ std::string StatusToString(const absl::Status& status) GRPC_MUST_USE_RESULT;
148
+
149
+ namespace internal {
150
+
151
+ /// Builds a upb message, google_rpc_Status from a status
152
+ /// This is for internal implementation & test only
153
+ google_rpc_Status* StatusToProto(absl::Status status,
154
+ upb_arena* arena) GRPC_MUST_USE_RESULT;
155
+
156
+ /// Builds a status from a upb message, google_rpc_Status
157
+ /// This is for internal implementation & test only
158
+ absl::Status StatusFromProto(google_rpc_Status* msg) GRPC_MUST_USE_RESULT;
159
+
160
+ /// The same value of grpc_core::internal::StatusAllocPtr(absl::OkStatus())
161
+ static constexpr uintptr_t kOkStatusPtr = 0;
162
+
163
+ /// Returns ptr where the given status is copied into.
164
+ /// This ptr can be used to get Status later and should be freed by
165
+ /// StatusFreePtr. This shouldn't be used except migration purpose.
166
+ uintptr_t StatusAllocPtr(absl::Status s);
167
+
168
+ /// Frees the allocated status at ptr.
169
+ /// This shouldn't be used except migration purpose.
170
+ void StatusFreePtr(uintptr_t ptr);
171
+
172
+ /// Get the status from ptr.
173
+ /// This shouldn't be used except migration purpose.
174
+ absl::Status StatusGetFromPtr(uintptr_t ptr);
175
+
176
+ } // namespace internal
177
+
178
+ } // namespace grpc_core
179
+
180
+ #endif // GRPC_CORE_LIB_GPRPP_STATUS_HELPER_H
@@ -30,6 +30,7 @@
30
30
  #include <grpc/support/log.h>
31
31
  #include <grpc/support/string_util.h>
32
32
 
33
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
33
34
  #include "src/core/lib/channel/channel_args.h"
34
35
  #include "src/core/lib/gpr/string.h"
35
36
  #include "src/core/lib/gprpp/memory.h"
@@ -38,7 +39,6 @@
38
39
  #include "src/core/lib/iomgr/endpoint.h"
39
40
  #include "src/core/lib/iomgr/iomgr_internal.h"
40
41
  #include "src/core/lib/iomgr/resolve_address.h"
41
- #include "src/core/lib/iomgr/sockaddr_utils.h"
42
42
  #include "src/core/lib/iomgr/tcp_client.h"
43
43
  #include "src/core/lib/slice/slice_internal.h"
44
44
 
@@ -62,7 +62,7 @@ struct internal_request {
62
62
  grpc_closure on_read;
63
63
  grpc_closure done_write;
64
64
  grpc_closure connected;
65
- grpc_error* overall_error;
65
+ grpc_error_handle overall_error;
66
66
  grpc_resource_quota* resource_quota;
67
67
  };
68
68
  static grpc_httpcli_get_override g_get_override = nullptr;
@@ -86,9 +86,9 @@ void grpc_httpcli_context_destroy(grpc_httpcli_context* context) {
86
86
  grpc_pollset_set_destroy(context->pollset_set);
87
87
  }
88
88
 
89
- static void next_address(internal_request* req, grpc_error* due_to_error);
89
+ static void next_address(internal_request* req, grpc_error_handle due_to_error);
90
90
 
91
- static void finish(internal_request* req, grpc_error* error) {
91
+ static void finish(internal_request* req, grpc_error_handle error) {
92
92
  grpc_polling_entity_del_from_pollset_set(req->pollent,
93
93
  req->context->pollset_set);
94
94
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, req->on_done, error);
@@ -110,7 +110,7 @@ static void finish(internal_request* req, grpc_error* error) {
110
110
  gpr_free(req);
111
111
  }
112
112
 
113
- static void append_error(internal_request* req, grpc_error* error) {
113
+ static void append_error(internal_request* req, grpc_error_handle error) {
114
114
  if (req->overall_error == GRPC_ERROR_NONE) {
115
115
  req->overall_error =
116
116
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("Failed HTTP/1 client request");
@@ -127,14 +127,14 @@ static void do_read(internal_request* req) {
127
127
  grpc_endpoint_read(req->ep, &req->incoming, &req->on_read, /*urgent=*/true);
128
128
  }
129
129
 
130
- static void on_read(void* user_data, grpc_error* error) {
130
+ static void on_read(void* user_data, grpc_error_handle error) {
131
131
  internal_request* req = static_cast<internal_request*>(user_data);
132
132
  size_t i;
133
133
 
134
134
  for (i = 0; i < req->incoming.count; i++) {
135
135
  if (GRPC_SLICE_LENGTH(req->incoming.slices[i])) {
136
136
  req->have_read_byte = 1;
137
- grpc_error* err = grpc_http_parser_parse(
137
+ grpc_error_handle err = grpc_http_parser_parse(
138
138
  &req->parser, req->incoming.slices[i], nullptr);
139
139
  if (err != GRPC_ERROR_NONE) {
140
140
  finish(req, err);
@@ -154,7 +154,7 @@ static void on_read(void* user_data, grpc_error* error) {
154
154
 
155
155
  static void on_written(internal_request* req) { do_read(req); }
156
156
 
157
- static void done_write(void* arg, grpc_error* error) {
157
+ static void done_write(void* arg, grpc_error_handle error) {
158
158
  internal_request* req = static_cast<internal_request*>(arg);
159
159
  if (error == GRPC_ERROR_NONE) {
160
160
  on_written(req);
@@ -182,7 +182,7 @@ static void on_handshake_done(void* arg, grpc_endpoint* ep) {
182
182
  start_write(req);
183
183
  }
184
184
 
185
- static void on_connected(void* arg, grpc_error* error) {
185
+ static void on_connected(void* arg, grpc_error_handle error) {
186
186
  internal_request* req = static_cast<internal_request*>(arg);
187
187
 
188
188
  if (!req->ep) {
@@ -194,7 +194,7 @@ static void on_connected(void* arg, grpc_error* error) {
194
194
  req->deadline, on_handshake_done);
195
195
  }
196
196
 
197
- static void next_address(internal_request* req, grpc_error* error) {
197
+ static void next_address(internal_request* req, grpc_error_handle error) {
198
198
  grpc_resolved_address* addr;
199
199
  if (error != GRPC_ERROR_NONE) {
200
200
  append_error(req, error);
@@ -216,7 +216,7 @@ static void next_address(internal_request* req, grpc_error* error) {
216
216
  &args, addr, req->deadline);
217
217
  }
218
218
 
219
- static void on_resolved(void* arg, grpc_error* error) {
219
+ static void on_resolved(void* arg, grpc_error_handle error) {
220
220
  internal_request* req = static_cast<internal_request*>(arg);
221
221
  if (error != GRPC_ERROR_NONE) {
222
222
  finish(req, GRPC_ERROR_REF(error));
@@ -91,7 +91,7 @@ class grpc_httpcli_ssl_channel_security_connector final
91
91
  void check_peer(tsi_peer peer, grpc_endpoint* /*ep*/,
92
92
  grpc_core::RefCountedPtr<grpc_auth_context>* /*auth_context*/,
93
93
  grpc_closure* on_peer_checked) override {
94
- grpc_error* error = GRPC_ERROR_NONE;
94
+ grpc_error_handle error = GRPC_ERROR_NONE;
95
95
 
96
96
  /* Check the peer name. */
97
97
  if (secure_peer_name_ != nullptr &&
@@ -105,6 +105,11 @@ class grpc_httpcli_ssl_channel_security_connector final
105
105
  tsi_peer_destruct(&peer);
106
106
  }
107
107
 
108
+ void cancel_check_peer(grpc_closure* /*on_peer_checked*/,
109
+ grpc_error_handle error) override {
110
+ GRPC_ERROR_UNREF(error);
111
+ }
112
+
108
113
  int cmp(const grpc_security_connector* other_sc) const override {
109
114
  auto* other =
110
115
  reinterpret_cast<const grpc_httpcli_ssl_channel_security_connector*>(
@@ -115,13 +120,13 @@ class grpc_httpcli_ssl_channel_security_connector final
115
120
  bool check_call_host(absl::string_view /*host*/,
116
121
  grpc_auth_context* /*auth_context*/,
117
122
  grpc_closure* /*on_call_host_checked*/,
118
- grpc_error** error) override {
123
+ grpc_error_handle* error) override {
119
124
  *error = GRPC_ERROR_NONE;
120
125
  return true;
121
126
  }
122
127
 
123
128
  void cancel_check_call_host(grpc_closure* /*on_call_host_checked*/,
124
- grpc_error* error) override {
129
+ grpc_error_handle error) override {
125
130
  GRPC_ERROR_UNREF(error);
126
131
  }
127
132
 
@@ -160,13 +165,12 @@ struct on_done_closure {
160
165
  void* arg;
161
166
  grpc_core::RefCountedPtr<grpc_core::HandshakeManager> handshake_mgr;
162
167
  };
163
- static void on_handshake_done(void* arg, grpc_error* error) {
168
+ static void on_handshake_done(void* arg, grpc_error_handle error) {
164
169
  auto* args = static_cast<grpc_core::HandshakerArgs*>(arg);
165
170
  on_done_closure* c = static_cast<on_done_closure*>(args->user_data);
166
171
  if (error != GRPC_ERROR_NONE) {
167
- const char* msg = grpc_error_string(error);
168
- gpr_log(GPR_ERROR, "Secure transport setup failed: %s", msg);
169
-
172
+ gpr_log(GPR_ERROR, "Secure transport setup failed: %s",
173
+ grpc_error_std_string(error).c_str());
170
174
  c->func(c->arg, nullptr);
171
175
  } else {
172
176
  grpc_channel_args_destroy(args->args);
@@ -37,7 +37,7 @@ static char* buf2str(void* buffer, size_t length) {
37
37
  return out;
38
38
  }
39
39
 
40
- static grpc_error* handle_response_line(grpc_http_parser* parser) {
40
+ static grpc_error_handle handle_response_line(grpc_http_parser* parser) {
41
41
  uint8_t* beg = parser->cur_line;
42
42
  uint8_t* cur = beg;
43
43
  uint8_t* end = beg + parser->cur_line_length;
@@ -90,7 +90,7 @@ static grpc_error* handle_response_line(grpc_http_parser* parser) {
90
90
  return GRPC_ERROR_NONE;
91
91
  }
92
92
 
93
- static grpc_error* handle_request_line(grpc_http_parser* parser) {
93
+ static grpc_error_handle handle_request_line(grpc_http_parser* parser) {
94
94
  uint8_t* beg = parser->cur_line;
95
95
  uint8_t* cur = beg;
96
96
  uint8_t* end = beg + parser->cur_line_length;
@@ -161,7 +161,7 @@ static grpc_error* handle_request_line(grpc_http_parser* parser) {
161
161
  return GRPC_ERROR_NONE;
162
162
  }
163
163
 
164
- static grpc_error* handle_first_line(grpc_http_parser* parser) {
164
+ static grpc_error_handle handle_first_line(grpc_http_parser* parser) {
165
165
  switch (parser->type) {
166
166
  case GRPC_HTTP_REQUEST:
167
167
  return handle_request_line(parser);
@@ -172,14 +172,14 @@ static grpc_error* handle_first_line(grpc_http_parser* parser) {
172
172
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Should never reach here"));
173
173
  }
174
174
 
175
- static grpc_error* add_header(grpc_http_parser* parser) {
175
+ static grpc_error_handle add_header(grpc_http_parser* parser) {
176
176
  uint8_t* beg = parser->cur_line;
177
177
  uint8_t* cur = beg;
178
178
  uint8_t* end = beg + parser->cur_line_length;
179
179
  size_t* hdr_count = nullptr;
180
180
  grpc_http_header** hdrs = nullptr;
181
181
  grpc_http_header hdr = {nullptr, nullptr};
182
- grpc_error* error = GRPC_ERROR_NONE;
182
+ grpc_error_handle error = GRPC_ERROR_NONE;
183
183
 
184
184
  GPR_ASSERT(cur != end);
185
185
 
@@ -235,9 +235,9 @@ done:
235
235
  return error;
236
236
  }
237
237
 
238
- static grpc_error* finish_line(grpc_http_parser* parser,
239
- bool* found_body_start) {
240
- grpc_error* err;
238
+ static grpc_error_handle finish_line(grpc_http_parser* parser,
239
+ bool* found_body_start) {
240
+ grpc_error_handle err;
241
241
  switch (parser->state) {
242
242
  case GRPC_HTTP_FIRST_LINE:
243
243
  err = handle_first_line(parser);
@@ -264,7 +264,7 @@ static grpc_error* finish_line(grpc_http_parser* parser,
264
264
  return GRPC_ERROR_NONE;
265
265
  }
266
266
 
267
- static grpc_error* addbyte_body(grpc_http_parser* parser, uint8_t byte) {
267
+ static grpc_error_handle addbyte_body(grpc_http_parser* parser, uint8_t byte) {
268
268
  size_t* body_length = nullptr;
269
269
  char** body = nullptr;
270
270
 
@@ -313,8 +313,8 @@ static bool check_line(grpc_http_parser* parser) {
313
313
  return false;
314
314
  }
315
315
 
316
- static grpc_error* addbyte(grpc_http_parser* parser, uint8_t byte,
317
- bool* found_body_start) {
316
+ static grpc_error_handle addbyte(grpc_http_parser* parser, uint8_t byte,
317
+ bool* found_body_start) {
318
318
  switch (parser->state) {
319
319
  case GRPC_HTTP_FIRST_LINE:
320
320
  case GRPC_HTTP_HEADERS:
@@ -371,12 +371,12 @@ void grpc_http_response_destroy(grpc_http_response* response) {
371
371
  gpr_free(response->hdrs);
372
372
  }
373
373
 
374
- grpc_error* grpc_http_parser_parse(grpc_http_parser* parser,
375
- const grpc_slice& slice,
376
- size_t* start_of_body) {
374
+ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
375
+ const grpc_slice& slice,
376
+ size_t* start_of_body) {
377
377
  for (size_t i = 0; i < GRPC_SLICE_LENGTH(slice); i++) {
378
378
  bool found_body_start = false;
379
- grpc_error* err =
379
+ grpc_error_handle err =
380
380
  addbyte(parser, GRPC_SLICE_START_PTR(slice)[i], &found_body_start);
381
381
  if (err != GRPC_ERROR_NONE) return err;
382
382
  if (found_body_start && start_of_body != nullptr) *start_of_body = i + 1;
@@ -384,7 +384,7 @@ grpc_error* grpc_http_parser_parse(grpc_http_parser* parser,
384
384
  return GRPC_ERROR_NONE;
385
385
  }
386
386
 
387
- grpc_error* grpc_http_parser_eof(grpc_http_parser* parser) {
387
+ grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser) {
388
388
  if (parser->state != GRPC_HTTP_BODY) {
389
389
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Did not finish headers");
390
390
  }
@@ -100,10 +100,10 @@ void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
100
100
  void grpc_http_parser_destroy(grpc_http_parser* parser);
101
101
 
102
102
  /* Sets \a start_of_body to the offset in \a slice of the start of the body. */
103
- grpc_error* grpc_http_parser_parse(grpc_http_parser* parser,
104
- const grpc_slice& slice,
105
- size_t* start_of_body);
106
- grpc_error* grpc_http_parser_eof(grpc_http_parser* parser);
103
+ grpc_error_handle grpc_http_parser_parse(grpc_http_parser* parser,
104
+ const grpc_slice& slice,
105
+ size_t* start_of_body);
106
+ grpc_error_handle grpc_http_parser_eof(grpc_http_parser* parser);
107
107
 
108
108
  void grpc_http_request_destroy(grpc_http_request* request);
109
109
  void grpc_http_response_destroy(grpc_http_response* response);
@@ -40,14 +40,14 @@ void fill_gpr_from_timestamp(gpr_timespec* gts, const struct timespec* ts) {
40
40
  }
41
41
 
42
42
  void default_timestamps_callback(void* /*arg*/, grpc_core::Timestamps* /*ts*/,
43
- grpc_error* /*shudown_err*/) {
43
+ grpc_error_handle /*shudown_err*/) {
44
44
  gpr_log(GPR_DEBUG, "Timestamps callback has not been registered");
45
45
  }
46
46
 
47
47
  /** The saved callback function that will be invoked when we get all the
48
48
  * timestamps that we are going to get for a TracedBuffer. */
49
49
  void (*timestamps_callback)(void*, grpc_core::Timestamps*,
50
- grpc_error* shutdown_err) =
50
+ grpc_error_handle shutdown_err) =
51
51
  default_timestamps_callback;
52
52
 
53
53
  /* Used to extract individual opt stats from cmsg, so as to avoid troubles with
@@ -268,7 +268,7 @@ void TracedBuffer::ProcessTimestamp(TracedBuffer** head,
268
268
  }
269
269
 
270
270
  void TracedBuffer::Shutdown(TracedBuffer** head, void* remaining,
271
- grpc_error* shutdown_err) {
271
+ grpc_error_handle shutdown_err) {
272
272
  GPR_DEBUG_ASSERT(head != nullptr);
273
273
  TracedBuffer* elem = *head;
274
274
  while (elem != nullptr) {
@@ -284,9 +284,8 @@ void TracedBuffer::Shutdown(TracedBuffer** head, void* remaining,
284
284
  GRPC_ERROR_UNREF(shutdown_err);
285
285
  }
286
286
 
287
- void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
288
- grpc_core::Timestamps*,
289
- grpc_error* error)) {
287
+ void grpc_tcp_set_write_timestamps_callback(
288
+ void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)) {
290
289
  timestamps_callback = fn;
291
290
  }
292
291
  } /* namespace grpc_core */
@@ -294,9 +293,8 @@ void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
294
293
  #else /* GRPC_LINUX_ERRQUEUE */
295
294
 
296
295
  namespace grpc_core {
297
- void grpc_tcp_set_write_timestamps_callback(void (*fn)(void*,
298
- grpc_core::Timestamps*,
299
- grpc_error* error)) {
296
+ void grpc_tcp_set_write_timestamps_callback(
297
+ void (*fn)(void*, grpc_core::Timestamps*, grpc_error_handle error)) {
300
298
  // Cast value of fn to void to avoid unused parameter warning.
301
299
  // Can't comment out the name because some compilers and formatters don't
302
300
  // like the sequence */* , which would arise from */*fn*/.