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
@@ -54,11 +54,11 @@
54
54
  * (OK, Cancelled, Unknown). */
55
55
  #define NUM_CACHED_STATUS_ELEMS 3
56
56
 
57
- static void destroy_channel(void* arg, grpc_error* error);
57
+ static void destroy_channel(void* arg, grpc_error_handle error);
58
58
 
59
59
  grpc_channel* grpc_channel_create_with_builder(
60
60
  grpc_channel_stack_builder* builder,
61
- grpc_channel_stack_type channel_stack_type, grpc_error** error) {
61
+ grpc_channel_stack_type channel_stack_type, grpc_error_handle* error) {
62
62
  char* target = gpr_strdup(grpc_channel_stack_builder_get_target(builder));
63
63
  grpc_channel_args* args = grpc_channel_args_copy(
64
64
  grpc_channel_stack_builder_get_channel_arguments(builder));
@@ -70,12 +70,12 @@ grpc_channel* grpc_channel_create_with_builder(
70
70
  } else {
71
71
  GRPC_STATS_INC_CLIENT_CHANNELS_CREATED();
72
72
  }
73
- grpc_error* builder_error = grpc_channel_stack_builder_finish(
73
+ grpc_error_handle builder_error = grpc_channel_stack_builder_finish(
74
74
  builder, sizeof(grpc_channel), 1, destroy_channel, nullptr,
75
75
  reinterpret_cast<void**>(&channel));
76
76
  if (builder_error != GRPC_ERROR_NONE) {
77
77
  gpr_log(GPR_ERROR, "channel stack builder failed: %s",
78
- grpc_error_string(builder_error));
78
+ grpc_error_std_string(builder_error).c_str());
79
79
  GPR_ASSERT(channel == nullptr);
80
80
  if (error != nullptr) {
81
81
  *error = builder_error;
@@ -225,7 +225,7 @@ grpc_channel* grpc_channel_create(const char* target,
225
225
  grpc_channel_stack_type channel_stack_type,
226
226
  grpc_transport* optional_transport,
227
227
  grpc_resource_user* resource_user,
228
- grpc_error** error) {
228
+ grpc_error_handle* error) {
229
229
  // We need to make sure that grpc_shutdown() does not shut things down
230
230
  // until after the channel is destroyed. However, the channel may not
231
231
  // actually be destroyed by the time grpc_channel_destroy() returns,
@@ -497,7 +497,7 @@ grpc_call* grpc_channel_create_registered_call(
497
497
  return call;
498
498
  }
499
499
 
500
- static void destroy_channel(void* arg, grpc_error* /*error*/) {
500
+ static void destroy_channel(void* arg, grpc_error_handle /*error*/) {
501
501
  grpc_channel* channel = static_cast<grpc_channel*>(arg);
502
502
  if (channel->channelz_node != nullptr) {
503
503
  channel->channelz_node->AddTraceEvent(
@@ -35,7 +35,7 @@ grpc_channel* grpc_channel_create(const char* target,
35
35
  grpc_channel_stack_type channel_stack_type,
36
36
  grpc_transport* optional_transport,
37
37
  grpc_resource_user* resource_user = nullptr,
38
- grpc_error** error = nullptr);
38
+ grpc_error_handle* error = nullptr);
39
39
 
40
40
  /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
41
41
  * is safe to use from within core. */
@@ -43,7 +43,8 @@ void grpc_channel_destroy_internal(grpc_channel* channel);
43
43
 
44
44
  grpc_channel* grpc_channel_create_with_builder(
45
45
  grpc_channel_stack_builder* builder,
46
- grpc_channel_stack_type channel_stack_type, grpc_error** error = nullptr);
46
+ grpc_channel_stack_type channel_stack_type,
47
+ grpc_error_handle* error = nullptr);
47
48
 
48
49
  /** Create a call given a grpc_channel, in order to call \a method.
49
50
  Progress is tied to activity on \a pollset_set. The returned call object is
@@ -38,7 +38,7 @@ static void ping_destroy(void* arg, grpc_cq_completion* /*storage*/) {
38
38
  gpr_free(arg);
39
39
  }
40
40
 
41
- static void ping_done(void* arg, grpc_error* error) {
41
+ static void ping_done(void* arg, grpc_error_handle error) {
42
42
  ping_result* pr = static_cast<ping_result*>(arg);
43
43
  grpc_cq_end_op(pr->cq, pr->tag, GRPC_ERROR_REF(error), ping_destroy, pr,
44
44
  &pr->completion_storage);
@@ -70,10 +70,10 @@ struct cq_poller_vtable {
70
70
  bool can_listen;
71
71
  size_t (*size)(void);
72
72
  void (*init)(grpc_pollset* pollset, gpr_mu** mu);
73
- grpc_error* (*kick)(grpc_pollset* pollset,
74
- grpc_pollset_worker* specific_worker);
75
- grpc_error* (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker,
76
- grpc_millis deadline);
73
+ grpc_error_handle (*kick)(grpc_pollset* pollset,
74
+ grpc_pollset_worker* specific_worker);
75
+ grpc_error_handle (*work)(grpc_pollset* pollset, grpc_pollset_worker** worker,
76
+ grpc_millis deadline);
77
77
  void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure);
78
78
  void (*destroy)(grpc_pollset* pollset);
79
79
  };
@@ -103,9 +103,9 @@ void non_polling_poller_destroy(grpc_pollset* pollset) {
103
103
  gpr_mu_destroy(&npp->mu);
104
104
  }
105
105
 
106
- grpc_error* non_polling_poller_work(grpc_pollset* pollset,
107
- grpc_pollset_worker** worker,
108
- grpc_millis deadline) {
106
+ grpc_error_handle non_polling_poller_work(grpc_pollset* pollset,
107
+ grpc_pollset_worker** worker,
108
+ grpc_millis deadline) {
109
109
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
110
110
  if (npp->shutdown) return GRPC_ERROR_NONE;
111
111
  if (npp->kicked_without_poller) {
@@ -145,8 +145,8 @@ grpc_error* non_polling_poller_work(grpc_pollset* pollset,
145
145
  return GRPC_ERROR_NONE;
146
146
  }
147
147
 
148
- grpc_error* non_polling_poller_kick(grpc_pollset* pollset,
149
- grpc_pollset_worker* specific_worker) {
148
+ grpc_error_handle non_polling_poller_kick(
149
+ grpc_pollset* pollset, grpc_pollset_worker* specific_worker) {
150
150
  non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
151
151
  if (specific_worker == nullptr) {
152
152
  specific_worker = reinterpret_cast<grpc_pollset_worker*>(p->root);
@@ -202,7 +202,7 @@ struct cq_vtable {
202
202
  void (*shutdown)(grpc_completion_queue* cq);
203
203
  void (*destroy)(void* data);
204
204
  bool (*begin_op)(grpc_completion_queue* cq, void* tag);
205
- void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error* error,
205
+ void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error_handle error,
206
206
  void (*done)(void* done_arg, grpc_cq_completion* storage),
207
207
  void* done_arg, grpc_cq_completion* storage, bool internal);
208
208
  grpc_event (*next)(grpc_completion_queue* cq, gpr_timespec deadline,
@@ -376,17 +376,17 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
376
376
  // safe to free up that storage. The storage MUST NOT be freed until the
377
377
  // done callback is invoked.
378
378
  static void cq_end_op_for_next(
379
- grpc_completion_queue* cq, void* tag, grpc_error* error,
379
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
380
380
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
381
381
  grpc_cq_completion* storage, bool internal);
382
382
 
383
383
  static void cq_end_op_for_pluck(
384
- grpc_completion_queue* cq, void* tag, grpc_error* error,
384
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
385
385
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
386
386
  grpc_cq_completion* storage, bool internal);
387
387
 
388
388
  static void cq_end_op_for_callback(
389
- grpc_completion_queue* cq, void* tag, grpc_error* error,
389
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
390
390
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
391
391
  grpc_cq_completion* storage, bool internal);
392
392
 
@@ -439,7 +439,7 @@ grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
439
439
  } \
440
440
  } while (0)
441
441
 
442
- static void on_pollset_shutdown_done(void* arg, grpc_error* error);
442
+ static void on_pollset_shutdown_done(void* arg, grpc_error_handle error);
443
443
 
444
444
  void grpc_cq_global_init() {
445
445
  gpr_tls_init(&g_cached_event);
@@ -604,7 +604,7 @@ void grpc_cq_internal_ref(grpc_completion_queue* cq) {
604
604
  cq->owning_refs.Ref(debug_location, reason);
605
605
  }
606
606
 
607
- static void on_pollset_shutdown_done(void* arg, grpc_error* /*error*/) {
607
+ static void on_pollset_shutdown_done(void* arg, grpc_error_handle /*error*/) {
608
608
  grpc_completion_queue* cq = static_cast<grpc_completion_queue*>(arg);
609
609
  GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy");
610
610
  }
@@ -690,7 +690,7 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
690
690
  * completion
691
691
  * type of GRPC_CQ_NEXT) */
692
692
  static void cq_end_op_for_next(
693
- grpc_completion_queue* cq, void* tag, grpc_error* error,
693
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
694
694
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
695
695
  grpc_cq_completion* storage, bool /*internal*/) {
696
696
  GPR_TIMER_SCOPE("cq_end_op_for_next", 0);
@@ -698,14 +698,15 @@ static void cq_end_op_for_next(
698
698
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
699
699
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
700
700
  error != GRPC_ERROR_NONE)) {
701
- const char* errmsg = grpc_error_string(error);
701
+ std::string errmsg = grpc_error_std_string(error);
702
702
  GRPC_API_TRACE(
703
703
  "cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
704
704
  "done=%p, done_arg=%p, storage=%p)",
705
- 6, (cq, tag, errmsg, done, done_arg, storage));
705
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
706
706
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
707
707
  error != GRPC_ERROR_NONE) {
708
- gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag, errmsg);
708
+ gpr_log(GPR_INFO, "Operation failed: tag=%p, error=%s", tag,
709
+ errmsg.c_str());
709
710
  }
710
711
  }
711
712
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
@@ -736,13 +737,13 @@ static void cq_end_op_for_next(
736
737
  /* Only kick if this is the first item queued */
737
738
  if (is_first) {
738
739
  gpr_mu_lock(cq->mu);
739
- grpc_error* kick_error =
740
+ grpc_error_handle kick_error =
740
741
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
741
742
  gpr_mu_unlock(cq->mu);
742
743
 
743
744
  if (kick_error != GRPC_ERROR_NONE) {
744
- const char* msg = grpc_error_string(kick_error);
745
- gpr_log(GPR_ERROR, "Kick failed: %s", msg);
745
+ gpr_log(GPR_ERROR, "Kick failed: %s",
746
+ grpc_error_std_string(kick_error).c_str());
746
747
  GRPC_ERROR_UNREF(kick_error);
747
748
  }
748
749
  }
@@ -771,7 +772,7 @@ static void cq_end_op_for_next(
771
772
  * completion
772
773
  * type of GRPC_CQ_PLUCK) */
773
774
  static void cq_end_op_for_pluck(
774
- grpc_completion_queue* cq, void* tag, grpc_error* error,
775
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
775
776
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
776
777
  grpc_cq_completion* storage, bool /*internal*/) {
777
778
  GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
@@ -782,14 +783,15 @@ static void cq_end_op_for_pluck(
782
783
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
783
784
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
784
785
  error != GRPC_ERROR_NONE)) {
785
- const char* errmsg = grpc_error_string(error);
786
+ std::string errmsg = grpc_error_std_string(error).c_str();
786
787
  GRPC_API_TRACE(
787
788
  "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
788
789
  "done=%p, done_arg=%p, storage=%p)",
789
- 6, (cq, tag, errmsg, done, done_arg, storage));
790
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
790
791
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
791
792
  error != GRPC_ERROR_NONE) {
792
- gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
793
+ gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
794
+ errmsg.c_str());
793
795
  }
794
796
  }
795
797
 
@@ -820,15 +822,12 @@ static void cq_end_op_for_pluck(
820
822
  }
821
823
  }
822
824
 
823
- grpc_error* kick_error =
825
+ grpc_error_handle kick_error =
824
826
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), pluck_worker);
825
-
826
827
  gpr_mu_unlock(cq->mu);
827
-
828
828
  if (kick_error != GRPC_ERROR_NONE) {
829
- const char* msg = grpc_error_string(kick_error);
830
- gpr_log(GPR_ERROR, "Kick failed: %s", msg);
831
-
829
+ gpr_log(GPR_ERROR, "Kick failed: %s",
830
+ grpc_error_std_string(kick_error).c_str());
832
831
  GRPC_ERROR_UNREF(kick_error);
833
832
  }
834
833
  }
@@ -836,14 +835,14 @@ static void cq_end_op_for_pluck(
836
835
  GRPC_ERROR_UNREF(error);
837
836
  }
838
837
 
839
- static void functor_callback(void* arg, grpc_error* error) {
838
+ static void functor_callback(void* arg, grpc_error_handle error) {
840
839
  auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
841
840
  functor->functor_run(functor, error == GRPC_ERROR_NONE);
842
841
  }
843
842
 
844
843
  /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
845
844
  static void cq_end_op_for_callback(
846
- grpc_completion_queue* cq, void* tag, grpc_error* error,
845
+ grpc_completion_queue* cq, void* tag, grpc_error_handle error,
847
846
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
848
847
  grpc_cq_completion* storage, bool internal) {
849
848
  GPR_TIMER_SCOPE("cq_end_op_for_callback", 0);
@@ -853,14 +852,15 @@ static void cq_end_op_for_callback(
853
852
  if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
854
853
  (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
855
854
  error != GRPC_ERROR_NONE)) {
856
- const char* errmsg = grpc_error_string(error);
855
+ std::string errmsg = grpc_error_std_string(error);
857
856
  GRPC_API_TRACE(
858
857
  "cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
859
858
  "done=%p, done_arg=%p, storage=%p)",
860
- 6, (cq, tag, errmsg, done, done_arg, storage));
859
+ 6, (cq, tag, errmsg.c_str(), done, done_arg, storage));
861
860
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
862
861
  error != GRPC_ERROR_NONE) {
863
- gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
862
+ gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag,
863
+ errmsg.c_str());
864
864
  }
865
865
  }
866
866
 
@@ -896,7 +896,8 @@ static void cq_end_op_for_callback(
896
896
  GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
897
897
  }
898
898
 
899
- void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
899
+ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
900
+ grpc_error_handle error,
900
901
  void (*done)(void* done_arg, grpc_cq_completion* storage),
901
902
  void* done_arg, grpc_cq_completion* storage,
902
903
  bool internal) {
@@ -1056,14 +1057,13 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1056
1057
  /* The main polling work happens in grpc_pollset_work */
1057
1058
  gpr_mu_lock(cq->mu);
1058
1059
  cq->num_polls++;
1059
- grpc_error* err = cq->poller_vtable->work(POLLSET_FROM_CQ(cq), nullptr,
1060
- iteration_deadline);
1060
+ grpc_error_handle err = cq->poller_vtable->work(
1061
+ POLLSET_FROM_CQ(cq), nullptr, iteration_deadline);
1061
1062
  gpr_mu_unlock(cq->mu);
1062
1063
 
1063
1064
  if (err != GRPC_ERROR_NONE) {
1064
- const char* msg = grpc_error_string(err);
1065
- gpr_log(GPR_ERROR, "Completion queue next failed: %s", msg);
1066
-
1065
+ gpr_log(GPR_ERROR, "Completion queue next failed: %s",
1066
+ grpc_error_std_string(err).c_str());
1067
1067
  GRPC_ERROR_UNREF(err);
1068
1068
  ret.type = GRPC_QUEUE_TIMEOUT;
1069
1069
  ret.success = 0;
@@ -1299,14 +1299,13 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1299
1299
  break;
1300
1300
  }
1301
1301
  cq->num_polls++;
1302
- grpc_error* err =
1302
+ grpc_error_handle err =
1303
1303
  cq->poller_vtable->work(POLLSET_FROM_CQ(cq), &worker, deadline_millis);
1304
1304
  if (err != GRPC_ERROR_NONE) {
1305
1305
  del_plucker(cq, tag, &worker);
1306
1306
  gpr_mu_unlock(cq->mu);
1307
- const char* msg = grpc_error_string(err);
1308
- gpr_log(GPR_ERROR, "Completion queue pluck failed: %s", msg);
1309
-
1307
+ gpr_log(GPR_ERROR, "Completion queue pluck failed: %s",
1308
+ grpc_error_std_string(err).c_str());
1310
1309
  GRPC_ERROR_UNREF(err);
1311
1310
  ret.type = GRPC_QUEUE_TIMEOUT;
1312
1311
  ret.success = 0;
@@ -77,7 +77,8 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag);
77
77
 
78
78
  /* Queue a GRPC_OP_COMPLETED operation; tag must correspond to the tag passed to
79
79
  grpc_cq_begin_op */
80
- void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
80
+ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag,
81
+ grpc_error_handle error,
81
82
  void (*done)(void* done_arg, grpc_cq_completion* storage),
82
83
  void* done_arg, grpc_cq_completion* storage,
83
84
  bool internal = false);
@@ -44,14 +44,14 @@ namespace {
44
44
  struct ChannelData {
45
45
  explicit ChannelData(grpc_channel_element_args* args)
46
46
  : state_tracker("lame_channel", GRPC_CHANNEL_SHUTDOWN) {
47
- grpc_error* err = grpc_channel_args_find_pointer<grpc_error>(
47
+ grpc_error_handle err = grpc_channel_args_find_pointer<grpc_error>(
48
48
  args->channel_args, GRPC_ARG_LAME_FILTER_ERROR);
49
49
  if (err != nullptr) error = GRPC_ERROR_REF(err);
50
50
  }
51
51
 
52
52
  ~ChannelData() { GRPC_ERROR_UNREF(error); }
53
53
 
54
- grpc_error* error = GRPC_ERROR_NONE;
54
+ grpc_error_handle error = GRPC_ERROR_NONE;
55
55
  Mutex mu;
56
56
  ConnectivityStateTracker state_tracker;
57
57
  };
@@ -98,8 +98,8 @@ static void lame_start_transport_op(grpc_channel_element* elem,
98
98
  }
99
99
  }
100
100
 
101
- static grpc_error* lame_init_call_elem(grpc_call_element* elem,
102
- const grpc_call_element_args* args) {
101
+ static grpc_error_handle lame_init_call_elem(
102
+ grpc_call_element* elem, const grpc_call_element_args* args) {
103
103
  CallData* calld = static_cast<CallData*>(elem->call_data);
104
104
  calld->call_combiner = args->call_combiner;
105
105
  return GRPC_ERROR_NONE;
@@ -111,8 +111,8 @@ static void lame_destroy_call_elem(grpc_call_element* /*elem*/,
111
111
  ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure, GRPC_ERROR_NONE);
112
112
  }
113
113
 
114
- static grpc_error* lame_init_channel_elem(grpc_channel_element* elem,
115
- grpc_channel_element_args* args) {
114
+ static grpc_error_handle lame_init_channel_elem(
115
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
116
116
  new (elem->channel_data) ChannelData(args);
117
117
  return GRPC_ERROR_NONE;
118
118
  }
@@ -122,13 +122,13 @@ static void lame_destroy_channel_elem(grpc_channel_element* elem) {
122
122
  chand->~ChannelData();
123
123
  }
124
124
 
125
- // Channel arg vtable for a grpc_error*.
125
+ // Channel arg vtable for a grpc_error_handle.
126
126
  void* ErrorCopy(void* p) {
127
- grpc_error* error = static_cast<grpc_error*>(p);
127
+ grpc_error_handle error = static_cast<grpc_error_handle>(p);
128
128
  return GRPC_ERROR_REF(error);
129
129
  }
130
130
  void ErrorDestroy(void* p) {
131
- grpc_error* error = static_cast<grpc_error*>(p);
131
+ grpc_error_handle error = static_cast<grpc_error_handle>(p);
132
132
  GRPC_ERROR_UNREF(error);
133
133
  }
134
134
  int ErrorCompare(void* p, void* q) { return GPR_ICMP(p, q); }
@@ -137,7 +137,7 @@ const grpc_arg_pointer_vtable kLameFilterErrorArgVtable = {
137
137
 
138
138
  } // namespace
139
139
 
140
- grpc_arg MakeLameClientErrorArg(grpc_error* error) {
140
+ grpc_arg MakeLameClientErrorArg(grpc_error_handle error) {
141
141
  return grpc_channel_arg_pointer_create(
142
142
  const_cast<char*>(GRPC_ARG_LAME_FILTER_ERROR), error,
143
143
  &kLameFilterErrorArgVtable);
@@ -169,7 +169,7 @@ grpc_channel* grpc_lame_client_channel_create(const char* target,
169
169
  "grpc_lame_client_channel_create(target=%s, error_code=%d, "
170
170
  "error_message=%s)",
171
171
  3, (target, (int)error_code, error_message));
172
- grpc_error* error = grpc_error_set_str(
172
+ grpc_error_handle error = grpc_error_set_str(
173
173
  grpc_error_set_int(
174
174
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("lame client channel"),
175
175
  GRPC_ERROR_INT_GRPC_STATUS, error_code),
@@ -25,7 +25,7 @@
25
25
 
26
26
  namespace grpc_core {
27
27
  // Does NOT take ownership of error.
28
- grpc_arg MakeLameClientErrorArg(grpc_error* error);
28
+ grpc_arg MakeLameClientErrorArg(grpc_error_handle error);
29
29
  } // namespace grpc_core
30
30
 
31
31
  extern const grpc_channel_filter grpc_lame_filter;
@@ -159,7 +159,7 @@ class Server::RequestMatcherInterface {
159
159
  // Mark all application-requested RPCs failed if they have not been matched to
160
160
  // an incoming RPC. The error parameter indicates why the RPCs are being
161
161
  // failed (always server shutdown in all current implementations).
162
- virtual void KillRequests(grpc_error* error) = 0;
162
+ virtual void KillRequests(grpc_error_handle error) = 0;
163
163
 
164
164
  // How many request queues are supported by this matcher. This is an abstract
165
165
  // concept that essentially maps to gRPC completion queues.
@@ -211,7 +211,7 @@ class Server::RealRequestMatcher : public RequestMatcherInterface {
211
211
  }
212
212
  }
213
213
 
214
- void KillRequests(grpc_error* error) override {
214
+ void KillRequests(grpc_error_handle error) override {
215
215
  for (size_t i = 0; i < requests_per_cq_.size(); i++) {
216
216
  RequestedCall* rc;
217
217
  while ((rc = reinterpret_cast<RequestedCall*>(
@@ -336,7 +336,9 @@ class Server::AllocatingRequestMatcherBase : public RequestMatcherInterface {
336
336
 
337
337
  void ZombifyPending() override {}
338
338
 
339
- void KillRequests(grpc_error* error) override { GRPC_ERROR_UNREF(error); }
339
+ void KillRequests(grpc_error_handle error) override {
340
+ GRPC_ERROR_UNREF(error);
341
+ }
340
342
 
341
343
  size_t request_queue_count() const override { return 0; }
342
344
 
@@ -444,7 +446,7 @@ class ChannelBroadcaster {
444
446
  }
445
447
 
446
448
  // Broadcasts a shutdown on each channel.
447
- void BroadcastShutdown(bool send_goaway, grpc_error* force_disconnect) {
449
+ void BroadcastShutdown(bool send_goaway, grpc_error_handle force_disconnect) {
448
450
  for (grpc_channel* channel : channels_) {
449
451
  SendShutdown(channel, send_goaway, GRPC_ERROR_REF(force_disconnect));
450
452
  GRPC_CHANNEL_INTERNAL_UNREF(channel, "broadcast");
@@ -459,14 +461,14 @@ class ChannelBroadcaster {
459
461
  grpc_slice slice;
460
462
  };
461
463
 
462
- static void ShutdownCleanup(void* arg, grpc_error* /*error*/) {
464
+ static void ShutdownCleanup(void* arg, grpc_error_handle /*error*/) {
463
465
  ShutdownCleanupArgs* a = static_cast<ShutdownCleanupArgs*>(arg);
464
466
  grpc_slice_unref_internal(a->slice);
465
467
  delete a;
466
468
  }
467
469
 
468
470
  static void SendShutdown(grpc_channel* channel, bool send_goaway,
469
- grpc_error* send_disconnect) {
471
+ grpc_error_handle send_disconnect) {
470
472
  ShutdownCleanupArgs* sc = new ShutdownCleanupArgs;
471
473
  GRPC_CLOSURE_INIT(&sc->closure, ShutdownCleanup, sc,
472
474
  grpc_schedule_on_exec_ctx);
@@ -607,13 +609,13 @@ void Server::Start() {
607
609
  starting_cv_.Signal();
608
610
  }
609
611
 
610
- grpc_error* Server::SetupTransport(
612
+ grpc_error_handle Server::SetupTransport(
611
613
  grpc_transport* transport, grpc_pollset* accepting_pollset,
612
614
  const grpc_channel_args* args,
613
615
  const RefCountedPtr<grpc_core::channelz::SocketNode>& socket_node,
614
616
  grpc_resource_user* resource_user) {
615
617
  // Create channel.
616
- grpc_error* error = GRPC_ERROR_NONE;
618
+ grpc_error_handle error = GRPC_ERROR_NONE;
617
619
  grpc_channel* channel = grpc_channel_create(
618
620
  nullptr, args, GRPC_SERVER_CHANNEL, transport, resource_user, &error);
619
621
  if (channel == nullptr) {
@@ -710,7 +712,8 @@ void Server::DoneRequestEvent(void* req, grpc_cq_completion* /*c*/) {
710
712
  delete static_cast<RequestedCall*>(req);
711
713
  }
712
714
 
713
- void Server::FailCall(size_t cq_idx, RequestedCall* rc, grpc_error* error) {
715
+ void Server::FailCall(size_t cq_idx, RequestedCall* rc,
716
+ grpc_error_handle error) {
714
717
  *rc->call = nullptr;
715
718
  rc->initial_metadata->count = 0;
716
719
  GPR_ASSERT(error != GRPC_ERROR_NONE);
@@ -750,7 +753,7 @@ void Server::MaybeFinishShutdown() {
750
753
  }
751
754
  }
752
755
 
753
- void Server::KillPendingWorkLocked(grpc_error* error) {
756
+ void Server::KillPendingWorkLocked(grpc_error_handle error) {
754
757
  if (started_) {
755
758
  unregistered_request_matcher_->KillRequests(GRPC_ERROR_REF(error));
756
759
  unregistered_request_matcher_->ZombifyPending();
@@ -772,7 +775,7 @@ std::vector<grpc_channel*> Server::GetChannelsLocked() const {
772
775
  return channels;
773
776
  }
774
777
 
775
- void Server::ListenerDestroyDone(void* arg, grpc_error* /*error*/) {
778
+ void Server::ListenerDestroyDone(void* arg, grpc_error_handle /*error*/) {
776
779
  Server* server = static_cast<Server*>(arg);
777
780
  MutexLock lock(&server->mu_global_);
778
781
  server->listeners_destroyed_++;
@@ -1134,7 +1137,7 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
1134
1137
  args.add_initial_metadata_count = 0;
1135
1138
  args.send_deadline = GRPC_MILLIS_INF_FUTURE;
1136
1139
  grpc_call* call;
1137
- grpc_error* error = grpc_call_create(&args, &call);
1140
+ grpc_error_handle error = grpc_call_create(&args, &call);
1138
1141
  grpc_call_element* elem =
1139
1142
  grpc_call_stack_element(grpc_call_get_call_stack(call), 0);
1140
1143
  auto* calld = static_cast<Server::CallData*>(elem->call_data);
@@ -1146,7 +1149,8 @@ void Server::ChannelData::AcceptStream(void* arg, grpc_transport* /*transport*/,
1146
1149
  calld->Start(elem);
1147
1150
  }
1148
1151
 
1149
- void Server::ChannelData::FinishDestroy(void* arg, grpc_error* /*error*/) {
1152
+ void Server::ChannelData::FinishDestroy(void* arg,
1153
+ grpc_error_handle /*error*/) {
1150
1154
  auto* chand = static_cast<Server::ChannelData*>(arg);
1151
1155
  Server* server = chand->server_.get();
1152
1156
  GRPC_CHANNEL_INTERNAL_UNREF(chand->channel_, "server");
@@ -1173,7 +1177,7 @@ void Server::ChannelData::Destroy() {
1173
1177
  op);
1174
1178
  }
1175
1179
 
1176
- grpc_error* Server::ChannelData::InitChannelElement(
1180
+ grpc_error_handle Server::ChannelData::InitChannelElement(
1177
1181
  grpc_channel_element* elem, grpc_channel_element_args* args) {
1178
1182
  GPR_ASSERT(args->is_first);
1179
1183
  GPR_ASSERT(!args->is_last);
@@ -1284,7 +1288,7 @@ void Server::CallData::Publish(size_t cq_idx, RequestedCall* rc) {
1284
1288
  rc, &rc->completion, true);
1285
1289
  }
1286
1290
 
1287
- void Server::CallData::PublishNewRpc(void* arg, grpc_error* error) {
1291
+ void Server::CallData::PublishNewRpc(void* arg, grpc_error_handle error) {
1288
1292
  grpc_call_element* call_elem = static_cast<grpc_call_element*>(arg);
1289
1293
  auto* calld = static_cast<Server::CallData*>(call_elem->call_data);
1290
1294
  auto* chand = static_cast<Server::ChannelData*>(call_elem->channel_data);
@@ -1300,7 +1304,7 @@ void Server::CallData::PublishNewRpc(void* arg, grpc_error* error) {
1300
1304
 
1301
1305
  namespace {
1302
1306
 
1303
- void KillZombieClosure(void* call, grpc_error* /*error*/) {
1307
+ void KillZombieClosure(void* call, grpc_error_handle /*error*/) {
1304
1308
  grpc_call_unref(static_cast<grpc_call*>(call));
1305
1309
  }
1306
1310
 
@@ -1352,8 +1356,8 @@ void Server::CallData::StartNewRpc(grpc_call_element* elem) {
1352
1356
  }
1353
1357
  }
1354
1358
 
1355
- void Server::CallData::RecvInitialMetadataBatchComplete(void* arg,
1356
- grpc_error* error) {
1359
+ void Server::CallData::RecvInitialMetadataBatchComplete(
1360
+ void* arg, grpc_error_handle error) {
1357
1361
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1358
1362
  auto* calld = static_cast<Server::CallData*>(elem->call_data);
1359
1363
  if (error != GRPC_ERROR_NONE) {
@@ -1385,7 +1389,8 @@ void Server::CallData::StartTransportStreamOpBatchImpl(
1385
1389
  grpc_call_next_op(elem, batch);
1386
1390
  }
1387
1391
 
1388
- void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
1392
+ void Server::CallData::RecvInitialMetadataReady(void* arg,
1393
+ grpc_error_handle error) {
1389
1394
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1390
1395
  CallData* calld = static_cast<CallData*>(elem->call_data);
1391
1396
  grpc_millis op_deadline;
@@ -1411,7 +1416,7 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
1411
1416
  /* do nothing */
1412
1417
  } else {
1413
1418
  /* Pass the error reference to calld->recv_initial_metadata_error */
1414
- grpc_error* src_error = error;
1419
+ grpc_error_handle src_error = error;
1415
1420
  error = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
1416
1421
  "Missing :authority or :path", &src_error, 1);
1417
1422
  GRPC_ERROR_UNREF(src_error);
@@ -1428,7 +1433,8 @@ void Server::CallData::RecvInitialMetadataReady(void* arg, grpc_error* error) {
1428
1433
  Closure::Run(DEBUG_LOCATION, closure, error);
1429
1434
  }
1430
1435
 
1431
- void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) {
1436
+ void Server::CallData::RecvTrailingMetadataReady(void* arg,
1437
+ grpc_error_handle error) {
1432
1438
  grpc_call_element* elem = static_cast<grpc_call_element*>(arg);
1433
1439
  CallData* calld = static_cast<CallData*>(elem->call_data);
1434
1440
  if (calld->original_recv_initial_metadata_ready_ != nullptr) {
@@ -1449,7 +1455,7 @@ void Server::CallData::RecvTrailingMetadataReady(void* arg, grpc_error* error) {
1449
1455
  error);
1450
1456
  }
1451
1457
 
1452
- grpc_error* Server::CallData::InitCallElement(
1458
+ grpc_error_handle Server::CallData::InitCallElement(
1453
1459
  grpc_call_element* elem, const grpc_call_element_args* args) {
1454
1460
  auto* chand = static_cast<ChannelData*>(elem->channel_data);
1455
1461
  new (elem->call_data) Server::CallData(elem, *args, chand->server());