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
@@ -30,50 +30,70 @@
30
30
  #include <grpc/support/time.h>
31
31
 
32
32
  #include "src/core/lib/debug/trace.h"
33
+ #include "src/core/lib/gprpp/status_helper.h"
34
+
35
+ #include "absl/status/status.h"
33
36
 
34
37
  /// Opaque representation of an error.
35
38
  /// See https://github.com/grpc/grpc/blob/master/doc/core/grpc-error.md for a
36
39
  /// full write up of this object.
37
40
 
41
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
42
+
43
+ typedef absl::Status grpc_error_handle;
44
+
45
+ #else // GRPC_ERROR_IS_ABSEIL_STATUS
46
+
38
47
  typedef struct grpc_error grpc_error;
48
+ typedef grpc_error* grpc_error_handle;
39
49
 
40
- extern grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount;
50
+ #endif // GRPC_ERROR_IS_ABSEIL_STATUS
41
51
 
42
52
  typedef enum {
43
53
  /// 'errno' from the operating system
44
- GRPC_ERROR_INT_ERRNO,
54
+ GRPC_ERROR_INT_ERRNO =
55
+ static_cast<int>(grpc_core::StatusIntProperty::kErrorNo),
45
56
  /// __LINE__ from the call site creating the error
46
- GRPC_ERROR_INT_FILE_LINE,
57
+ GRPC_ERROR_INT_FILE_LINE =
58
+ static_cast<int>(grpc_core::StatusIntProperty::kFileLine),
47
59
  /// stream identifier: for errors that are associated with an individual
48
60
  /// wire stream
49
- GRPC_ERROR_INT_STREAM_ID,
61
+ GRPC_ERROR_INT_STREAM_ID =
62
+ static_cast<int>(grpc_core::StatusIntProperty::kStreamId),
50
63
  /// grpc status code representing this error
51
- GRPC_ERROR_INT_GRPC_STATUS,
64
+ GRPC_ERROR_INT_GRPC_STATUS =
65
+ static_cast<int>(grpc_core::StatusIntProperty::kRpcStatus),
52
66
  /// offset into some binary blob (usually represented by
53
67
  /// GRPC_ERROR_STR_RAW_BYTES) where the error occurred
54
- GRPC_ERROR_INT_OFFSET,
68
+ GRPC_ERROR_INT_OFFSET =
69
+ static_cast<int>(grpc_core::StatusIntProperty::kOffset),
55
70
  /// context sensitive index associated with the error
56
- GRPC_ERROR_INT_INDEX,
71
+ GRPC_ERROR_INT_INDEX = static_cast<int>(grpc_core::StatusIntProperty::kIndex),
57
72
  /// context sensitive size associated with the error
58
- GRPC_ERROR_INT_SIZE,
73
+ GRPC_ERROR_INT_SIZE = static_cast<int>(grpc_core::StatusIntProperty::kSize),
59
74
  /// http2 error code associated with the error (see the HTTP2 RFC)
60
- GRPC_ERROR_INT_HTTP2_ERROR,
75
+ GRPC_ERROR_INT_HTTP2_ERROR =
76
+ static_cast<int>(grpc_core::StatusIntProperty::kHttp2Error),
61
77
  /// TSI status code associated with the error
62
- GRPC_ERROR_INT_TSI_CODE,
63
- /// grpc_security_status associated with the error
64
- GRPC_ERROR_INT_SECURITY_STATUS,
78
+ GRPC_ERROR_INT_TSI_CODE =
79
+ static_cast<int>(grpc_core::StatusIntProperty::kTsiCode),
65
80
  /// WSAGetLastError() reported when this error occurred
66
- GRPC_ERROR_INT_WSA_ERROR,
81
+ GRPC_ERROR_INT_WSA_ERROR =
82
+ static_cast<int>(grpc_core::StatusIntProperty::kWsaError),
67
83
  /// File descriptor associated with this error
68
- GRPC_ERROR_INT_FD,
84
+ GRPC_ERROR_INT_FD = static_cast<int>(grpc_core::StatusIntProperty::kFd),
69
85
  /// HTTP status (i.e. 404)
70
- GRPC_ERROR_INT_HTTP_STATUS,
71
- /// context sensitive limit associated with the error
72
- GRPC_ERROR_INT_LIMIT,
86
+ GRPC_ERROR_INT_HTTP_STATUS =
87
+ static_cast<int>(grpc_core::StatusIntProperty::kHttpStatus),
73
88
  /// chttp2: did the error occur while a write was in progress
74
- GRPC_ERROR_INT_OCCURRED_DURING_WRITE,
89
+ GRPC_ERROR_INT_OCCURRED_DURING_WRITE =
90
+ static_cast<int>(grpc_core::StatusIntProperty::kOccurredDuringWrite),
75
91
  /// channel connectivity state associated with the error
76
- GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE,
92
+ GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE =
93
+ static_cast<int>(grpc_core::StatusIntProperty::ChannelConnectivityState),
94
+ /// LB policy drop
95
+ GRPC_ERROR_INT_LB_POLICY_DROP =
96
+ static_cast<int>(grpc_core::StatusIntProperty::kLbPolicyDrop),
77
97
 
78
98
  /// Must always be last
79
99
  GRPC_ERROR_INT_MAX,
@@ -81,29 +101,35 @@ typedef enum {
81
101
 
82
102
  typedef enum {
83
103
  /// top-level textual description of this error
84
- GRPC_ERROR_STR_DESCRIPTION,
104
+ GRPC_ERROR_STR_DESCRIPTION =
105
+ static_cast<int>(grpc_core::StatusStrProperty::kDescription),
85
106
  /// source file in which this error occurred
86
- GRPC_ERROR_STR_FILE,
107
+ GRPC_ERROR_STR_FILE = static_cast<int>(grpc_core::StatusStrProperty::kFile),
87
108
  /// operating system description of this error
88
- GRPC_ERROR_STR_OS_ERROR,
109
+ GRPC_ERROR_STR_OS_ERROR =
110
+ static_cast<int>(grpc_core::StatusStrProperty::kOsError),
89
111
  /// syscall that generated this error
90
- GRPC_ERROR_STR_SYSCALL,
112
+ GRPC_ERROR_STR_SYSCALL =
113
+ static_cast<int>(grpc_core::StatusStrProperty::kSyscall),
91
114
  /// peer that we were trying to communicate when this error occurred
92
- GRPC_ERROR_STR_TARGET_ADDRESS,
115
+ GRPC_ERROR_STR_TARGET_ADDRESS =
116
+ static_cast<int>(grpc_core::StatusStrProperty::kTargetAddress),
93
117
  /// grpc status message associated with this error
94
- GRPC_ERROR_STR_GRPC_MESSAGE,
118
+ GRPC_ERROR_STR_GRPC_MESSAGE =
119
+ static_cast<int>(grpc_core::StatusStrProperty::kGrpcMessage),
95
120
  /// hex dump (or similar) with the data that generated this error
96
- GRPC_ERROR_STR_RAW_BYTES,
121
+ GRPC_ERROR_STR_RAW_BYTES =
122
+ static_cast<int>(grpc_core::StatusStrProperty::kRawBytes),
97
123
  /// tsi error string associated with this error
98
- GRPC_ERROR_STR_TSI_ERROR,
124
+ GRPC_ERROR_STR_TSI_ERROR =
125
+ static_cast<int>(grpc_core::StatusStrProperty::kTsiError),
99
126
  /// filename that we were trying to read/write when this error occurred
100
- GRPC_ERROR_STR_FILENAME,
101
- /// which data was queued for writing when the error occurred
102
- GRPC_ERROR_STR_QUEUED_BUFFERS,
127
+ GRPC_ERROR_STR_FILENAME =
128
+ static_cast<int>(grpc_core::StatusStrProperty::kFilename),
103
129
  /// key associated with the error
104
- GRPC_ERROR_STR_KEY,
130
+ GRPC_ERROR_STR_KEY = static_cast<int>(grpc_core::StatusStrProperty::kKey),
105
131
  /// value associated with the error
106
- GRPC_ERROR_STR_VALUE,
132
+ GRPC_ERROR_STR_VALUE = static_cast<int>(grpc_core::StatusStrProperty::kValue),
107
133
 
108
134
  /// Must always be last
109
135
  GRPC_ERROR_STR_MAX,
@@ -117,32 +143,135 @@ typedef enum {
117
143
  GRPC_ERROR_TIME_MAX,
118
144
  } grpc_error_times;
119
145
 
146
+ // DEPRECATED: Use grpc_error_std_string instead
147
+ const char* grpc_error_string(grpc_error_handle error);
148
+ std::string grpc_error_std_string(grpc_error_handle error);
149
+
150
+ // debug only toggles that allow for a sanity to check that ensures we will
151
+ // never create any errors in the per-RPC hotpath.
152
+ void grpc_disable_error_creation();
153
+ void grpc_enable_error_creation();
154
+
155
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
156
+
157
+ #define GRPC_ERROR_NONE absl::OkStatus()
158
+ #define GRPC_ERROR_OOM absl::Status(absl::ResourceExhaustedError)
159
+ #define GRPC_ERROR_CANCELLED absl::CancelledError()
160
+
161
+ #define GRPC_ERROR_REF(err) (err)
162
+ #define GRPC_ERROR_UNREF(err)
163
+
164
+ #define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc) \
165
+ StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
166
+ #define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
167
+ StatusCreate(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
168
+ #define GRPC_ERROR_CREATE_FROM_STRING_VIEW(desc) \
169
+ StatusCreate(ababsl::StatusCode::kUnknown, desc, DEBUG_LOCATION, {})
170
+
171
+ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
172
+ const grpc_core::DebugLocation& location,
173
+ size_t children_count,
174
+ absl::Status* children) GRPC_MUST_USE_RESULT;
175
+
176
+ // Create an error that references some other errors. This function adds a
177
+ // reference to each error in errs - it does not consume an existing reference
178
+ #define GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(desc, errs, count) \
179
+ grpc_status_create(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, count, \
180
+ errs)
181
+ #define GRPC_ERROR_CREATE_REFERENCING_FROM_COPIED_STRING(desc, errs, count) \
182
+ grpc_status_create(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION, count, \
183
+ errs)
184
+
185
+ // Consumes all the errors in the vector and forms a referencing error from
186
+ // them. If the vector is empty, return GRPC_ERROR_NONE.
187
+ template <typename VectorType>
188
+ static absl::Status grpc_status_create_from_vector(
189
+ const grpc_core::DebugLocation& location, const char* desc,
190
+ VectorType* error_list) {
191
+ absl::Status error = GRPC_ERROR_NONE;
192
+ if (error_list->size() != 0) {
193
+ error = grpc_status_create(absl::StatusCode::kUnknown, desc, DEBUG_LOCATION,
194
+ error_list->size(), error_list->data());
195
+ error_list->clear();
196
+ }
197
+ return error;
198
+ }
199
+
200
+ #define GRPC_ERROR_CREATE_FROM_VECTOR(desc, error_list) \
201
+ grpc_status_create_from_vector(DEBUG_LOCATION, desc, error_list)
202
+
203
+ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
204
+ const char* call_name) GRPC_MUST_USE_RESULT;
205
+
206
+ inline absl::Status grpc_assert_never_ok(absl::Status error) {
207
+ GPR_ASSERT(error != GRPC_ERROR_NONE);
208
+ return error;
209
+ }
210
+
211
+ /// create an error associated with errno!=0 (an 'operating system' error)
212
+ #define GRPC_OS_ERROR(err, call_name) \
213
+ grpc_assert_never_ok(grpc_os_error(DEBUG_LOCATION, err, call_name))
214
+
215
+ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
216
+ const char* call_name) GRPC_MUST_USE_RESULT;
217
+
218
+ /// windows only: create an error associated with WSAGetLastError()!=0
219
+ #define GRPC_WSA_ERROR(err, call_name) \
220
+ grpc_wsa_error(DEBUG_LOCATION, err, call_name)
221
+
222
+ #else // GRPC_ERROR_IS_ABSEIL_STATUS
223
+
120
224
  /// The following "special" errors can be propagated without allocating memory.
121
225
  /// They are always even so that other code (particularly combiner locks,
122
226
  /// polling engines) can safely use the lower bit for themselves.
123
227
 
124
- #define GRPC_ERROR_NONE ((grpc_error*)NULL)
125
- #define GRPC_ERROR_RESERVED_1 ((grpc_error*)1)
126
- #define GRPC_ERROR_OOM ((grpc_error*)2)
127
- #define GRPC_ERROR_RESERVED_2 ((grpc_error*)3)
128
- #define GRPC_ERROR_CANCELLED ((grpc_error*)4)
228
+ #define GRPC_ERROR_NONE ((grpc_error_handle)NULL)
229
+ #define GRPC_ERROR_RESERVED_1 ((grpc_error_handle)1)
230
+ #define GRPC_ERROR_OOM ((grpc_error_handle)2)
231
+ #define GRPC_ERROR_RESERVED_2 ((grpc_error_handle)3)
232
+ #define GRPC_ERROR_CANCELLED ((grpc_error_handle)4)
129
233
  #define GRPC_ERROR_SPECIAL_MAX GRPC_ERROR_CANCELLED
130
234
 
131
- inline bool grpc_error_is_special(struct grpc_error* err) {
235
+ inline bool grpc_error_is_special(grpc_error_handle err) {
132
236
  return err <= GRPC_ERROR_SPECIAL_MAX;
133
237
  }
134
238
 
135
- // debug only toggles that allow for a sanity to check that ensures we will
136
- // never create any errors in the per-RPC hotpath.
137
- void grpc_disable_error_creation();
138
- void grpc_enable_error_creation();
139
-
140
- const char* grpc_error_string(grpc_error* error);
239
+ #ifndef NDEBUG
240
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file,
241
+ int line);
242
+ void grpc_error_do_unref(grpc_error_handle err, const char* file, int line);
243
+ inline grpc_error_handle grpc_error_ref(grpc_error_handle err, const char* file,
244
+ int line) {
245
+ if (grpc_error_is_special(err)) return err;
246
+ return grpc_error_do_ref(err, file, line);
247
+ }
248
+ inline void grpc_error_unref(grpc_error_handle err, const char* file,
249
+ int line) {
250
+ if (grpc_error_is_special(err)) return;
251
+ grpc_error_do_unref(err, file, line);
252
+ }
253
+ #define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__)
254
+ #define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__)
255
+ #else
256
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err);
257
+ void grpc_error_do_unref(grpc_error_handle err);
258
+ inline grpc_error_handle grpc_error_ref(grpc_error_handle err) {
259
+ if (grpc_error_is_special(err)) return err;
260
+ return grpc_error_do_ref(err);
261
+ }
262
+ inline void grpc_error_unref(grpc_error_handle err) {
263
+ if (grpc_error_is_special(err)) return;
264
+ grpc_error_do_unref(err);
265
+ }
266
+ #define GRPC_ERROR_REF(err) grpc_error_ref(err)
267
+ #define GRPC_ERROR_UNREF(err) grpc_error_unref(err)
268
+ #endif
141
269
 
142
270
  /// Create an error - but use GRPC_ERROR_CREATE instead
143
- grpc_error* grpc_error_create(const char* file, int line,
144
- const grpc_slice& desc, grpc_error** referencing,
145
- size_t num_referencing);
271
+ grpc_error_handle grpc_error_create(const char* file, int line,
272
+ const grpc_slice& desc,
273
+ grpc_error_handle* referencing,
274
+ size_t num_referencing);
146
275
  /// Create an error (this is the preferred way of generating an error that is
147
276
  /// not due to a system call - for system calls, use GRPC_OS_ERROR or
148
277
  /// GRPC_WSA_ERROR as appropriate)
@@ -157,6 +286,10 @@ grpc_error* grpc_error_create(const char* file, int line,
157
286
  #define GRPC_ERROR_CREATE_FROM_COPIED_STRING(desc) \
158
287
  grpc_error_create(__FILE__, __LINE__, grpc_slice_from_copied_string(desc), \
159
288
  NULL, 0)
289
+ #define GRPC_ERROR_CREATE_FROM_STRING_VIEW(desc) \
290
+ grpc_error_create( \
291
+ __FILE__, __LINE__, \
292
+ grpc_slice_from_copied_buffer((desc).data(), (desc).size()), NULL, 0)
160
293
 
161
294
  // Create an error that references some other errors. This function adds a
162
295
  // reference to each error in errs - it does not consume an existing reference
@@ -170,41 +303,14 @@ grpc_error* grpc_error_create(const char* file, int line,
170
303
  #define GRPC_ERROR_CREATE_FROM_VECTOR(desc, error_list) \
171
304
  grpc_error_create_from_vector(__FILE__, __LINE__, desc, error_list)
172
305
 
173
- #ifndef NDEBUG
174
- grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line);
175
- void grpc_error_do_unref(grpc_error* err, const char* file, int line);
176
- inline grpc_error* grpc_error_ref(grpc_error* err, const char* file, int line) {
177
- if (grpc_error_is_special(err)) return err;
178
- return grpc_error_do_ref(err, file, line);
179
- }
180
- inline void grpc_error_unref(grpc_error* err, const char* file, int line) {
181
- if (grpc_error_is_special(err)) return;
182
- grpc_error_do_unref(err, file, line);
183
- }
184
- #define GRPC_ERROR_REF(err) grpc_error_ref(err, __FILE__, __LINE__)
185
- #define GRPC_ERROR_UNREF(err) grpc_error_unref(err, __FILE__, __LINE__)
186
- #else
187
- grpc_error* grpc_error_do_ref(grpc_error* err);
188
- void grpc_error_do_unref(grpc_error* err);
189
- inline grpc_error* grpc_error_ref(grpc_error* err) {
190
- if (grpc_error_is_special(err)) return err;
191
- return grpc_error_do_ref(err);
192
- }
193
- inline void grpc_error_unref(grpc_error* err) {
194
- if (grpc_error_is_special(err)) return;
195
- grpc_error_do_unref(err);
196
- }
197
- #define GRPC_ERROR_REF(err) grpc_error_ref(err)
198
- #define GRPC_ERROR_UNREF(err) grpc_error_unref(err)
199
- #endif
200
-
201
306
  // Consumes all the errors in the vector and forms a referencing error from
202
307
  // them. If the vector is empty, return GRPC_ERROR_NONE.
203
308
  template <typename VectorType>
204
- static grpc_error* grpc_error_create_from_vector(const char* file, int line,
205
- const char* desc,
206
- VectorType* error_list) {
207
- grpc_error* error = GRPC_ERROR_NONE;
309
+ static grpc_error_handle grpc_error_create_from_vector(const char* file,
310
+ int line,
311
+ const char* desc,
312
+ VectorType* error_list) {
313
+ grpc_error_handle error = GRPC_ERROR_NONE;
208
314
  if (error_list->size() != 0) {
209
315
  error = grpc_error_create(file, line, grpc_slice_from_static_string(desc),
210
316
  error_list->data(), error_list->size());
@@ -217,18 +323,40 @@ static grpc_error* grpc_error_create_from_vector(const char* file, int line,
217
323
  return error;
218
324
  }
219
325
 
220
- grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which,
221
- intptr_t value) GRPC_MUST_USE_RESULT;
326
+ grpc_error_handle grpc_os_error(const char* file, int line, int err,
327
+ const char* call_name) GRPC_MUST_USE_RESULT;
328
+
329
+ inline grpc_error_handle grpc_assert_never_ok(grpc_error_handle error) {
330
+ GPR_ASSERT(error != GRPC_ERROR_NONE);
331
+ return error;
332
+ }
333
+
334
+ /// create an error associated with errno!=0 (an 'operating system' error)
335
+ #define GRPC_OS_ERROR(err, call_name) \
336
+ grpc_assert_never_ok(grpc_os_error(__FILE__, __LINE__, err, call_name))
337
+ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
338
+ const char* call_name) GRPC_MUST_USE_RESULT;
339
+ /// windows only: create an error associated with WSAGetLastError()!=0
340
+ #define GRPC_WSA_ERROR(err, call_name) \
341
+ grpc_wsa_error(__FILE__, __LINE__, err, call_name)
342
+
343
+ #endif // GRPC_ERROR_IS_ABSEIL_STATUS
344
+
345
+ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
346
+ grpc_error_ints which,
347
+ intptr_t value) GRPC_MUST_USE_RESULT;
222
348
  /// It is an error to pass nullptr as `p`. Caller should allocate a phony
223
349
  /// intptr_t for `p`, even if the value of `p` is not used.
224
- bool grpc_error_get_int(grpc_error* error, grpc_error_ints which, intptr_t* p);
350
+ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
351
+ intptr_t* p);
225
352
  /// This call takes ownership of the slice; the error is responsible for
226
353
  /// eventually unref-ing it.
227
- grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which,
228
- const grpc_slice& str) GRPC_MUST_USE_RESULT;
354
+ grpc_error_handle grpc_error_set_str(
355
+ grpc_error_handle src, grpc_error_strs which,
356
+ const grpc_slice& str) GRPC_MUST_USE_RESULT;
229
357
  /// Returns false if the specified string is not set.
230
358
  /// Caller does NOT own the slice.
231
- bool grpc_error_get_str(grpc_error* error, grpc_error_strs which,
359
+ bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
232
360
  grpc_slice* s);
233
361
 
234
362
  /// Add a child error: an error that is believed to have contributed to this
@@ -242,29 +370,12 @@ bool grpc_error_get_str(grpc_error* error, grpc_error_strs which,
242
370
  /// returns GRPC_ERROR_NONE. 3) If \a src and \a child point to the same error,
243
371
  /// returns a single reference. (Note that, 2 references should have been
244
372
  /// received to the error in this case.)
245
- grpc_error* grpc_error_add_child(grpc_error* src,
246
- grpc_error* child) GRPC_MUST_USE_RESULT;
247
-
248
- grpc_error* grpc_os_error(const char* file, int line, int err,
249
- const char* call_name) GRPC_MUST_USE_RESULT;
250
-
251
- inline grpc_error* grpc_assert_never_ok(grpc_error* error) {
252
- GPR_ASSERT(error != GRPC_ERROR_NONE);
253
- return error;
254
- }
255
-
256
- /// create an error associated with errno!=0 (an 'operating system' error)
257
- #define GRPC_OS_ERROR(err, call_name) \
258
- grpc_assert_never_ok(grpc_os_error(__FILE__, __LINE__, err, call_name))
259
- grpc_error* grpc_wsa_error(const char* file, int line, int err,
260
- const char* call_name) GRPC_MUST_USE_RESULT;
261
- /// windows only: create an error associated with WSAGetLastError()!=0
262
- #define GRPC_WSA_ERROR(err, call_name) \
263
- grpc_wsa_error(__FILE__, __LINE__, err, call_name)
373
+ grpc_error_handle grpc_error_add_child(
374
+ grpc_error_handle src, grpc_error_handle child) GRPC_MUST_USE_RESULT;
264
375
 
265
- bool grpc_log_error(const char* what, grpc_error* error, const char* file,
376
+ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
266
377
  int line);
267
- inline bool grpc_log_if_error(const char* what, grpc_error* error,
378
+ inline bool grpc_log_if_error(const char* what, grpc_error_handle error,
268
379
  const char* file, int line) {
269
380
  return error == GRPC_ERROR_NONE ? true
270
381
  : grpc_log_error(what, error, file, line);
@@ -31,8 +31,9 @@
31
31
 
32
32
  #define MAX_ERROR_DESCRIPTION 256
33
33
 
34
- grpc_error* grpc_error_create_from_cferror(const char* file, int line,
35
- void* arg, const char* custom_desc) {
34
+ grpc_error_handle grpc_error_create_from_cferror(const char* file, int line,
35
+ void* arg,
36
+ const char* custom_desc) {
36
37
  CFErrorRef error = static_cast<CFErrorRef>(arg);
37
38
  char buf_domain[MAX_ERROR_DESCRIPTION];
38
39
  char buf_desc[MAX_ERROR_DESCRIPTION];
@@ -24,8 +24,8 @@
24
24
  #define GRPC_ERROR_CREATE_FROM_CFERROR(error, desc) \
25
25
  grpc_error_create_from_cferror(__FILE__, __LINE__, \
26
26
  static_cast<void*>((error)), (desc))
27
- grpc_error* grpc_error_create_from_cferror(const char* file, int line,
28
- void* arg, const char* desc);
27
+ grpc_error_handle grpc_error_create_from_cferror(const char* file, int line,
28
+ void* arg, const char* desc);
29
29
  #endif /* GRPC_CFSTREAM */
30
30
 
31
31
  #endif /* GRPC_CORE_LIB_IOMGR_ERROR_CFSTREAM_H */
@@ -27,10 +27,12 @@
27
27
  #include <grpc/support/sync.h>
28
28
  #include "src/core/lib/iomgr/error.h"
29
29
 
30
+ #ifndef GRPC_ERROR_IS_ABSEIL_STATUS
31
+
30
32
  typedef struct grpc_linked_error grpc_linked_error;
31
33
 
32
34
  struct grpc_linked_error {
33
- grpc_error* err;
35
+ grpc_error_handle err;
34
36
  uint8_t next;
35
37
  };
36
38
 
@@ -58,4 +60,6 @@ struct grpc_error {
58
60
  intptr_t arena[0];
59
61
  };
60
62
 
63
+ #endif // GRPC_ERROR_IS_ABSEIL_STATUS
64
+
61
65
  #endif /* GRPC_CORE_LIB_IOMGR_ERROR_INTERNAL_H */