grpc 1.37.1 → 1.40.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 (738) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +112 -59
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/endpoint_config.h +48 -0
  5. data/include/grpc/event_engine/event_engine.h +330 -0
  6. data/include/grpc/event_engine/port.h +41 -0
  7. data/include/grpc/event_engine/slice_allocator.h +66 -0
  8. data/include/grpc/grpc.h +11 -4
  9. data/include/grpc/grpc_security.h +32 -0
  10. data/include/grpc/grpc_security_constants.h +15 -0
  11. data/include/grpc/impl/codegen/grpc_types.h +44 -19
  12. data/include/grpc/impl/codegen/port_platform.h +46 -0
  13. data/include/grpc/module.modulemap +14 -14
  14. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  15. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  16. data/src/core/ext/filters/client_channel/client_channel.cc +975 -3282
  17. data/src/core/ext/filters/client_channel/client_channel.h +513 -55
  18. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  19. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  20. data/src/core/ext/filters/client_channel/config_selector.h +20 -7
  21. data/src/core/ext/filters/client_channel/connector.h +1 -1
  22. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  23. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  24. data/src/core/ext/filters/client_channel/health/health_check_client.cc +28 -27
  25. data/src/core/ext/filters/client_channel/health/health_check_client.h +30 -29
  26. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  27. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  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 +53 -51
  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 +14 -23
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +16 -16
  34. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -17
  37. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +17 -20
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +53 -65
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +36 -44
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +33 -55
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +151 -163
  43. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -16
  44. data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  46. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -18
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +18 -12
  60. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  61. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  62. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +20 -13
  63. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  64. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +158 -102
  65. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  66. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  67. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  68. data/src/core/ext/filters/client_channel/retry_filter.cc +2598 -0
  69. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  70. data/src/core/ext/filters/client_channel/retry_service_config.cc +316 -0
  71. data/src/core/ext/filters/client_channel/retry_service_config.h +96 -0
  72. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  73. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  74. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  75. data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
  76. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  77. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  78. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  79. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  80. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  81. data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
  82. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  83. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  84. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  85. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  86. data/src/core/ext/filters/http/client/http_client_filter.cc +33 -23
  87. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  88. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  89. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  90. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  91. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  92. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  93. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  94. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  95. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  96. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  97. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  98. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +3 -2
  99. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +49 -46
  101. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  102. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  103. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +5 -4
  104. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  105. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
  106. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +66 -0
  107. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
  108. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +141 -126
  109. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  110. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  111. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  112. data/src/core/ext/transport/chttp2/transport/flow_control.h +9 -9
  113. data/src/core/ext/transport/chttp2/transport/frame_data.cc +12 -12
  114. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  115. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +15 -16
  116. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  117. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  118. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  119. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  120. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  121. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -10
  122. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  123. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  124. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  125. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +652 -736
  126. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +195 -74
  127. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  128. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  129. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  130. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  131. data/src/core/ext/transport/chttp2/transport/internal.h +33 -28
  132. data/src/core/ext/transport/chttp2/transport/parsing.cc +129 -106
  133. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
  134. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  135. data/src/core/ext/transport/inproc/inproc_transport.cc +72 -60
  136. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
  137. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
  138. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
  139. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
  140. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
  141. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
  142. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
  143. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
  144. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  145. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
  146. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
  147. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  148. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
  149. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
  150. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
  151. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
  152. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
  153. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  154. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
  155. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
  156. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
  157. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
  158. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
  159. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
  160. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
  161. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
  162. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
  163. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
  164. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
  165. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
  166. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
  167. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
  168. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
  169. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
  170. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
  171. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
  172. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  173. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
  174. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
  175. data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
  176. data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
  177. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
  178. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
  179. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
  180. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
  181. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
  182. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
  183. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  184. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
  185. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
  186. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
  187. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  188. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  189. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
  190. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  191. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
  193. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  194. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
  195. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  196. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  197. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
  198. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
  199. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
  200. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
  201. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  202. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
  203. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
  204. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
  205. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
  206. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
  207. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  208. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
  209. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
  210. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  211. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  212. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
  213. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  214. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
  215. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  216. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  217. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  218. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  219. data/src/core/ext/xds/xds_api.cc +665 -317
  220. data/src/core/ext/xds/xds_api.h +52 -14
  221. data/src/core/ext/xds/xds_bootstrap.cc +101 -160
  222. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  223. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  224. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  225. data/src/core/ext/xds/xds_channel_args.h +5 -2
  226. data/src/core/ext/xds/xds_client.cc +370 -215
  227. data/src/core/ext/xds/xds_client.h +38 -28
  228. data/src/core/ext/xds/xds_client_stats.h +3 -2
  229. data/src/core/ext/xds/xds_http_filters.cc +3 -2
  230. data/src/core/ext/xds/xds_http_filters.h +3 -0
  231. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  232. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  233. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  234. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +16 -20
  235. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +16 -11
  236. data/src/core/lib/channel/call_tracer.h +85 -0
  237. data/src/core/lib/channel/channel_stack.cc +10 -9
  238. data/src/core/lib/channel/channel_stack.h +11 -10
  239. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  240. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  241. data/src/core/lib/channel/channelz.cc +21 -13
  242. data/src/core/lib/channel/channelz.h +3 -0
  243. data/src/core/lib/channel/connected_channel.cc +4 -4
  244. data/src/core/lib/channel/context.h +3 -0
  245. data/src/core/lib/channel/handshaker.cc +7 -6
  246. data/src/core/lib/channel/handshaker.h +5 -5
  247. data/src/core/lib/channel/status_util.h +4 -0
  248. data/src/core/lib/compression/stream_compression.h +1 -1
  249. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  250. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  251. data/src/core/lib/debug/stats.h +1 -1
  252. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  253. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  254. data/src/core/lib/event_engine/event_engine.cc +50 -0
  255. data/src/core/lib/event_engine/sockaddr.cc +40 -0
  256. data/src/core/lib/event_engine/sockaddr.h +44 -0
  257. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  258. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  259. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  260. data/src/core/lib/gprpp/orphanable.h +3 -3
  261. data/src/core/lib/gprpp/ref_counted.h +28 -14
  262. data/src/core/lib/gprpp/status_helper.cc +407 -0
  263. data/src/core/lib/gprpp/status_helper.h +183 -0
  264. data/src/core/lib/gprpp/sync.h +2 -30
  265. data/src/core/lib/http/httpcli.cc +11 -11
  266. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  267. data/src/core/lib/http/parser.cc +16 -16
  268. data/src/core/lib/http/parser.h +4 -4
  269. data/src/core/lib/iomgr/buffer_list.cc +8 -10
  270. data/src/core/lib/iomgr/buffer_list.h +4 -5
  271. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  272. data/src/core/lib/iomgr/call_combiner.h +12 -14
  273. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  274. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  275. data/src/core/lib/iomgr/closure.h +7 -6
  276. data/src/core/lib/iomgr/combiner.cc +14 -12
  277. data/src/core/lib/iomgr/combiner.h +2 -2
  278. data/src/core/lib/iomgr/endpoint.cc +1 -1
  279. data/src/core/lib/iomgr/endpoint.h +2 -2
  280. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  281. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  282. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  283. data/src/core/lib/iomgr/error.cc +168 -61
  284. data/src/core/lib/iomgr/error.h +217 -106
  285. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  286. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  287. data/src/core/lib/iomgr/error_internal.h +5 -1
  288. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  289. data/src/core/lib/iomgr/ev_apple.h +1 -1
  290. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  291. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  292. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  293. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  294. data/src/core/lib/iomgr/ev_posix.h +9 -9
  295. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  296. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  297. data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
  298. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  299. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  300. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  301. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  302. data/src/core/lib/iomgr/event_engine/pollset.h +25 -0
  303. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  304. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  305. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  306. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  307. data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
  308. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  309. data/src/core/lib/iomgr/exec_ctx.cc +12 -4
  310. data/src/core/lib/iomgr/exec_ctx.h +4 -5
  311. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  312. data/src/core/lib/iomgr/executor/threadpool.h +2 -2
  313. data/src/core/lib/iomgr/executor.cc +8 -8
  314. data/src/core/lib/iomgr/executor.h +2 -2
  315. data/src/core/lib/iomgr/iomgr.cc +2 -2
  316. data/src/core/lib/iomgr/iomgr.h +1 -1
  317. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  318. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  319. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  320. data/src/core/lib/iomgr/iomgr_posix.cc +3 -1
  321. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +42 -12
  322. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  323. data/src/core/lib/iomgr/load_file.cc +4 -4
  324. data/src/core/lib/iomgr/load_file.h +2 -2
  325. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  326. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  327. data/src/core/lib/iomgr/pollset.cc +5 -5
  328. data/src/core/lib/iomgr/pollset.h +9 -9
  329. data/src/core/lib/iomgr/pollset_custom.cc +7 -7
  330. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  331. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  332. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  333. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  334. data/src/core/lib/iomgr/port.h +7 -5
  335. data/src/core/lib/iomgr/python_util.h +2 -2
  336. data/src/core/lib/iomgr/resolve_address.cc +8 -4
  337. data/src/core/lib/iomgr/resolve_address.h +12 -6
  338. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  339. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  340. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  341. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  342. data/src/core/lib/iomgr/resource_quota.cc +13 -10
  343. data/src/core/lib/iomgr/sockaddr.h +1 -0
  344. data/src/core/lib/iomgr/socket_mutator.cc +15 -2
  345. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  346. data/src/core/lib/iomgr/socket_utils_common_posix.cc +24 -22
  347. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  348. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  349. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  350. data/src/core/lib/iomgr/tcp_client_posix.cc +22 -19
  351. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  352. data/src/core/lib/iomgr/tcp_client_windows.cc +7 -5
  353. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  354. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  355. data/src/core/lib/iomgr/tcp_posix.cc +78 -73
  356. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  357. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  358. data/src/core/lib/iomgr/tcp_server.h +12 -11
  359. data/src/core/lib/iomgr/tcp_server_custom.cc +26 -25
  360. data/src/core/lib/iomgr/tcp_server_posix.cc +29 -21
  361. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  362. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -18
  363. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  364. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  365. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  366. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  367. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  368. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  369. data/src/core/lib/iomgr/timer.h +6 -1
  370. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  371. data/src/core/lib/iomgr/timer_custom.h +1 -1
  372. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  373. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  374. data/src/core/lib/iomgr/udp_server.cc +21 -20
  375. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  376. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  377. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  378. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  379. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  380. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  381. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  382. data/src/core/lib/iomgr/work_serializer.h +17 -1
  383. data/src/core/lib/json/json.h +1 -1
  384. data/src/core/lib/json/json_reader.cc +5 -6
  385. data/src/core/lib/matchers/matchers.cc +46 -58
  386. data/src/core/lib/matchers/matchers.h +30 -29
  387. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  388. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  389. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  390. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  391. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  392. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  393. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  394. data/src/core/lib/security/credentials/credentials.h +2 -2
  395. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  396. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  397. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  398. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  399. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  400. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  401. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  402. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  403. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  404. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  405. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  406. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  407. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -10
  408. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  409. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  410. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  411. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  412. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  413. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  414. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  415. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  416. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  417. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  418. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  419. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  420. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +68 -13
  421. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
  422. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  423. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  424. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  425. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  426. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  427. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  428. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  429. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  430. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  431. data/src/core/lib/security/security_connector/local/local_security_connector.cc +22 -9
  432. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  433. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  434. data/src/core/lib/security/security_connector/ssl_utils.cc +27 -4
  435. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  436. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +60 -76
  437. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  438. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  439. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  440. data/src/core/lib/security/transport/security_handshaker.cc +45 -36
  441. data/src/core/lib/security/transport/server_auth_filter.cc +17 -18
  442. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  443. data/src/core/lib/security/transport/tsi_error.h +2 -1
  444. data/src/core/lib/security/util/json_util.cc +2 -2
  445. data/src/core/lib/security/util/json_util.h +1 -1
  446. data/src/core/lib/slice/slice_internal.h +1 -0
  447. data/src/core/lib/surface/call.cc +72 -52
  448. data/src/core/lib/surface/call.h +13 -2
  449. data/src/core/lib/surface/channel.cc +6 -6
  450. data/src/core/lib/surface/channel.h +3 -2
  451. data/src/core/lib/surface/channel_ping.cc +1 -1
  452. data/src/core/lib/surface/completion_queue.cc +68 -69
  453. data/src/core/lib/surface/completion_queue.h +3 -2
  454. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  455. data/src/core/lib/surface/init.cc +1 -3
  456. data/src/core/lib/surface/init.h +10 -1
  457. data/src/core/lib/surface/lame_client.cc +11 -11
  458. data/src/core/lib/surface/lame_client.h +1 -1
  459. data/src/core/lib/surface/server.cc +31 -23
  460. data/src/core/lib/surface/server.h +19 -18
  461. data/src/core/lib/surface/validate_metadata.cc +7 -7
  462. data/src/core/lib/surface/validate_metadata.h +3 -2
  463. data/src/core/lib/surface/version.cc +2 -2
  464. data/src/core/lib/transport/byte_stream.cc +5 -5
  465. data/src/core/lib/transport/byte_stream.h +8 -8
  466. data/src/core/lib/transport/connectivity_state.cc +1 -1
  467. data/src/core/lib/transport/error_utils.cc +21 -10
  468. data/src/core/lib/transport/error_utils.h +11 -5
  469. data/src/core/lib/transport/metadata_batch.cc +37 -37
  470. data/src/core/lib/transport/metadata_batch.h +19 -18
  471. data/src/core/lib/transport/transport.cc +4 -3
  472. data/src/core/lib/transport/transport.h +6 -4
  473. data/src/core/lib/transport/transport_op_string.cc +6 -6
  474. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  475. data/src/core/tsi/alts/crypt/gsec.h +6 -0
  476. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  477. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  478. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  479. data/src/core/tsi/ssl_transport_security.cc +32 -14
  480. data/src/core/tsi/ssl_transport_security.h +3 -4
  481. data/src/ruby/bin/math_services_pb.rb +1 -1
  482. data/src/ruby/ext/grpc/extconf.rb +2 -0
  483. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
  484. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +11 -2
  485. data/src/ruby/lib/grpc/version.rb +1 -1
  486. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  487. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  488. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  489. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  490. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  491. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  492. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  493. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  494. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  495. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  496. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  497. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  498. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  499. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  500. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  501. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  502. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  503. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  504. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  505. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  506. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  507. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  508. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  509. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  510. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  511. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  512. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  513. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  514. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  515. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  516. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  517. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  518. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  519. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  520. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  521. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  522. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  523. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  524. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  525. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  526. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  527. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  528. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  529. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  530. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  531. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  532. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  533. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  534. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  535. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  536. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  537. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  538. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  539. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  540. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  541. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  542. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  543. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  544. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  545. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  546. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  547. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  548. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  549. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  550. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  551. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  552. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  553. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  554. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  555. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  556. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  557. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  558. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  559. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  560. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  561. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  562. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  563. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  564. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  565. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  566. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  567. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  568. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  569. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  570. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  571. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  572. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  573. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  574. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  575. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  576. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  577. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  578. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  579. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  580. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  581. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  582. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  583. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  584. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  585. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  586. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  587. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  588. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  589. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  590. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  591. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  592. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  593. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  594. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  595. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  596. data/third_party/boringssl-with-bazel/err_data.c +483 -461
  597. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  598. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +9 -7
  599. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  600. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  601. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  602. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  603. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  604. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  605. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  606. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  607. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  608. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  609. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  610. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  611. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  612. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  613. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  614. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  615. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  616. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  617. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
  618. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  619. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  620. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  621. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  622. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  623. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  624. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  625. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +52 -65
  626. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +52 -66
  627. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  628. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  629. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  630. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  631. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  632. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  633. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
  634. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
  635. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  636. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
  637. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
  638. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  639. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  640. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +61 -75
  641. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +80 -103
  642. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +40 -49
  643. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +367 -315
  644. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  645. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  646. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  647. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +5 -3
  648. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  649. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  650. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  651. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  652. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  653. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +120 -11
  654. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  655. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  656. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  657. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  658. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  659. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  660. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  661. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
  662. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  663. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
  664. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  665. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  666. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
  667. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  668. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  669. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  670. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  671. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  672. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  673. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  674. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
  675. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  676. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  677. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  678. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
  679. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  680. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  681. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  682. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +47 -7
  683. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
  684. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  685. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  686. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  687. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
  688. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  689. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +33 -0
  690. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  691. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +20 -49
  692. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  693. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  694. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  695. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +25 -7
  696. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  697. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  698. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  699. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +283 -85
  700. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +13 -19
  701. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +445 -152
  702. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  703. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -1
  704. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +7 -2
  705. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  706. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1133 -0
  707. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  708. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +66 -30
  709. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
  710. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +154 -24
  711. data/third_party/boringssl-with-bazel/src/ssl/internal.h +414 -135
  712. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  713. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  714. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  715. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  716. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  717. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +51 -60
  718. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  719. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
  720. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  721. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
  722. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  723. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +664 -702
  724. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +65 -7
  725. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
  726. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
  727. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +213 -118
  728. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  729. data/third_party/xxhash/xxhash.h +77 -195
  730. metadata +116 -51
  731. data/src/core/lib/gpr/arena.h +0 -47
  732. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  733. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  734. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  735. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  737. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -246
  738. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -58,7 +58,7 @@ class CallCombiner {
58
58
  #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
59
59
  (call_combiner)->Stop(__FILE__, __LINE__, (reason))
60
60
  /// Starts processing \a closure.
61
- void Start(grpc_closure* closure, grpc_error* error, const char* file,
61
+ void Start(grpc_closure* closure, grpc_error_handle error, const char* file,
62
62
  int line, const char* reason);
63
63
  /// Yields the call combiner to the next closure in the queue, if any.
64
64
  void Stop(const char* file, int line, const char* reason);
@@ -68,7 +68,8 @@ class CallCombiner {
68
68
  #define GRPC_CALL_COMBINER_STOP(call_combiner, reason) \
69
69
  (call_combiner)->Stop((reason))
70
70
  /// Starts processing \a closure.
71
- void Start(grpc_closure* closure, grpc_error* error, const char* reason);
71
+ void Start(grpc_closure* closure, grpc_error_handle error,
72
+ const char* reason);
72
73
  /// Yields the call combiner to the next closure in the queue, if any.
73
74
  void Stop(const char* reason);
74
75
  #endif
@@ -94,26 +95,22 @@ class CallCombiner {
94
95
  /// cancellation; this effectively unregisters the previously set closure.
95
96
  /// However, most filters will not need to explicitly unregister their
96
97
  /// callbacks, as this is done automatically when the call is destroyed.
97
- /// Filters that schedule the cancellation closure on ExecCtx do not need
98
- /// to take a ref on the call stack to guarantee closure liveness. This is
99
- /// done by explicitly flushing ExecCtx after the unregistration during
100
- /// call destruction.
101
98
  void SetNotifyOnCancel(grpc_closure* closure);
102
99
 
103
100
  /// Indicates that the call has been cancelled.
104
- void Cancel(grpc_error* error);
101
+ void Cancel(grpc_error_handle error);
105
102
 
106
103
  private:
107
- void ScheduleClosure(grpc_closure* closure, grpc_error* error);
104
+ void ScheduleClosure(grpc_closure* closure, grpc_error_handle error);
108
105
  #ifdef GRPC_TSAN_ENABLED
109
- static void TsanClosure(void* arg, grpc_error* error);
106
+ static void TsanClosure(void* arg, grpc_error_handle error);
110
107
  #endif
111
108
 
112
109
  gpr_atm size_ = 0; // size_t, num closures in queue or currently executing
113
110
  MultiProducerSingleConsumerQueue queue_;
114
111
  // Either 0 (if not cancelled and no cancellation closure set),
115
112
  // a grpc_closure* (if the lowest bit is 0),
116
- // or a grpc_error* (if the lowest bit is 1).
113
+ // or a grpc_error_handle (if the lowest bit is 1).
117
114
  gpr_atm cancel_state_ = 0;
118
115
  #ifdef GRPC_TSAN_ENABLED
119
116
  // A fake ref-counted lock that is kept alive after the destruction of
@@ -150,7 +147,7 @@ class CallCombinerClosureList {
150
147
 
151
148
  // Adds a closure to the list. The closure must eventually result in
152
149
  // the call combiner being yielded.
153
- void Add(grpc_closure* closure, grpc_error* error, const char* reason) {
150
+ void Add(grpc_closure* closure, grpc_error_handle error, const char* reason) {
154
151
  closures_.emplace_back(closure, error, reason);
155
152
  }
156
153
 
@@ -176,7 +173,8 @@ class CallCombinerClosureList {
176
173
  "CallCombinerClosureList executing closure while already "
177
174
  "holding call_combiner %p: closure=%p error=%s reason=%s",
178
175
  call_combiner, closures_[0].closure,
179
- grpc_error_string(closures_[0].error), closures_[0].reason);
176
+ grpc_error_std_string(closures_[0].error).c_str(),
177
+ closures_[0].reason);
180
178
  }
181
179
  // This will release the call combiner.
182
180
  ExecCtx::Run(DEBUG_LOCATION, closures_[0].closure, closures_[0].error);
@@ -199,10 +197,10 @@ class CallCombinerClosureList {
199
197
  private:
200
198
  struct CallCombinerClosure {
201
199
  grpc_closure* closure;
202
- grpc_error* error;
200
+ grpc_error_handle error;
203
201
  const char* reason;
204
202
 
205
- CallCombinerClosure(grpc_closure* closure, grpc_error* error,
203
+ CallCombinerClosure(grpc_closure* closure, grpc_error_handle error,
206
204
  const char* reason)
207
205
  : closure(closure), error(error), reason(reason) {}
208
206
  };
@@ -62,7 +62,7 @@ void CFStreamHandle::ReadCallback(CFReadStreamRef stream,
62
62
  void* client_callback_info) {
63
63
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
64
64
  grpc_core::ExecCtx exec_ctx;
65
- grpc_error* error;
65
+ grpc_error_handle error;
66
66
  CFErrorRef stream_error;
67
67
  CFStreamHandle* handle = static_cast<CFStreamHandle*>(client_callback_info);
68
68
  if (grpc_tcp_trace.enabled()) {
@@ -97,7 +97,7 @@ void CFStreamHandle::WriteCallback(CFWriteStreamRef stream,
97
97
  void* clientCallBackInfo) {
98
98
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
99
99
  grpc_core::ExecCtx exec_ctx;
100
- grpc_error* error;
100
+ grpc_error_handle error;
101
101
  CFErrorRef stream_error;
102
102
  CFStreamHandle* handle = static_cast<CFStreamHandle*>(clientCallBackInfo);
103
103
  if (grpc_tcp_trace.enabled()) {
@@ -171,7 +171,7 @@ void CFStreamHandle::NotifyOnWrite(grpc_closure* closure) {
171
171
  write_event_.NotifyOn(closure);
172
172
  }
173
173
 
174
- void CFStreamHandle::Shutdown(grpc_error* error) {
174
+ void CFStreamHandle::Shutdown(grpc_error_handle error) {
175
175
  open_event_.SetShutdown(GRPC_ERROR_REF(error));
176
176
  read_event_.SetShutdown(GRPC_ERROR_REF(error));
177
177
  write_event_.SetShutdown(GRPC_ERROR_REF(error));
@@ -53,7 +53,7 @@ class CFStreamHandle : public GrpcLibraryInitHolder {
53
53
  void NotifyOnOpen(grpc_closure* closure);
54
54
  void NotifyOnRead(grpc_closure* closure);
55
55
  void NotifyOnWrite(grpc_closure* closure);
56
- void Shutdown(grpc_error* error);
56
+ void Shutdown(grpc_error_handle error);
57
57
 
58
58
  void Ref(const char* file = "", int line = 0, const char* reason = nullptr);
59
59
  void Unref(const char* file = "", int line = 0, const char* reason = nullptr);
@@ -50,7 +50,7 @@ typedef struct grpc_closure_list {
50
50
  * describing what went wrong.
51
51
  * Error contract: it is not the cb's job to unref this error;
52
52
  * the closure scheduler will do that after the cb returns */
53
- typedef void (*grpc_iomgr_cb_func)(void* arg, grpc_error* error);
53
+ typedef void (*grpc_iomgr_cb_func)(void* arg, grpc_error_handle error);
54
54
 
55
55
  /** A closure over a grpc_iomgr_cb_func. */
56
56
  struct grpc_closure {
@@ -72,7 +72,7 @@ struct grpc_closure {
72
72
 
73
73
  /** Once queued, the result of the closure. Before then: scratch space */
74
74
  union {
75
- grpc_error* error;
75
+ grpc_error_handle error;
76
76
  uintptr_t scratch;
77
77
  } error_data;
78
78
 
@@ -126,7 +126,7 @@ struct wrapped_closure {
126
126
  void* cb_arg;
127
127
  grpc_closure wrapper;
128
128
  };
129
- inline void closure_wrapper(void* arg, grpc_error* error) {
129
+ inline void closure_wrapper(void* arg, grpc_error_handle error) {
130
130
  wrapped_closure* wc = static_cast<wrapped_closure*>(arg);
131
131
  grpc_iomgr_cb_func cb = wc->cb;
132
132
  void* cb_arg = wc->cb_arg;
@@ -175,7 +175,8 @@ inline void grpc_closure_list_init(grpc_closure_list* closure_list) {
175
175
  and set \a closure's result to \a error
176
176
  Returns true if \a list becomes non-empty */
177
177
  inline bool grpc_closure_list_append(grpc_closure_list* closure_list,
178
- grpc_closure* closure, grpc_error* error) {
178
+ grpc_closure* closure,
179
+ grpc_error_handle error) {
179
180
  if (closure == nullptr) {
180
181
  GRPC_ERROR_UNREF(error);
181
182
  return false;
@@ -194,7 +195,7 @@ inline bool grpc_closure_list_append(grpc_closure_list* closure_list,
194
195
 
195
196
  /** force all success bits in \a list to false */
196
197
  inline void grpc_closure_list_fail_all(grpc_closure_list* list,
197
- grpc_error* forced_failure) {
198
+ grpc_error_handle forced_failure) {
198
199
  for (grpc_closure* c = list->head; c != nullptr; c = c->next_data.next) {
199
200
  if (c->error_data.error == GRPC_ERROR_NONE) {
200
201
  c->error_data.error = GRPC_ERROR_REF(forced_failure);
@@ -227,7 +228,7 @@ namespace grpc_core {
227
228
  class Closure {
228
229
  public:
229
230
  static void Run(const DebugLocation& location, grpc_closure* closure,
230
- grpc_error* error) {
231
+ grpc_error_handle error) {
231
232
  (void)location;
232
233
  if (closure == nullptr) {
233
234
  GRPC_ERROR_UNREF(error);
@@ -46,11 +46,12 @@ grpc_core::DebugOnlyTraceFlag grpc_combiner_trace(false, "combiner");
46
46
  #define STATE_ELEM_COUNT_LOW_BIT 2
47
47
 
48
48
  static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* closure,
49
- grpc_error* error);
49
+ grpc_error_handle error);
50
50
  static void combiner_finally_exec(grpc_core::Combiner* lock,
51
- grpc_closure* closure, grpc_error* error);
51
+ grpc_closure* closure,
52
+ grpc_error_handle error);
52
53
 
53
- static void offload(void* arg, grpc_error* error);
54
+ static void offload(void* arg, grpc_error_handle error);
54
55
 
55
56
  grpc_core::Combiner* grpc_combiner_create(void) {
56
57
  grpc_core::Combiner* lock = new grpc_core::Combiner();
@@ -126,7 +127,7 @@ static void push_first_on_exec_ctx(grpc_core::Combiner* lock) {
126
127
  }
127
128
 
128
129
  static void combiner_exec(grpc_core::Combiner* lock, grpc_closure* cl,
129
- grpc_error* error) {
130
+ grpc_error_handle error) {
130
131
  GPR_TIMER_SCOPE("combiner.execute", 0);
131
132
  GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_ITEMS();
132
133
  gpr_atm last = gpr_atm_full_fetch_add(&lock->state, STATE_ELEM_COUNT_LOW_BIT);
@@ -167,7 +168,7 @@ static void move_next() {
167
168
  }
168
169
  }
169
170
 
170
- static void offload(void* arg, grpc_error* /*error*/) {
171
+ static void offload(void* arg, grpc_error_handle /*error*/) {
171
172
  grpc_core::Combiner* lock = static_cast<grpc_core::Combiner*>(arg);
172
173
  push_last_on_exec_ctx(lock);
173
174
  }
@@ -230,7 +231,7 @@ bool grpc_combiner_continue_exec_ctx() {
230
231
  }
231
232
  GPR_TIMER_SCOPE("combiner.exec1", 0);
232
233
  grpc_closure* cl = reinterpret_cast<grpc_closure*>(n);
233
- grpc_error* cl_err = cl->error_data.error;
234
+ grpc_error_handle cl_err = cl->error_data.error;
234
235
  #ifndef NDEBUG
235
236
  cl->scheduled = false;
236
237
  #endif
@@ -246,7 +247,7 @@ bool grpc_combiner_continue_exec_ctx() {
246
247
  GRPC_COMBINER_TRACE(
247
248
  gpr_log(GPR_INFO, "C:%p execute_final[%d] c=%p", lock, loops, c));
248
249
  grpc_closure* next = c->next_data.next;
249
- grpc_error* error = c->error_data.error;
250
+ grpc_error_handle error = c->error_data.error;
250
251
  #ifndef NDEBUG
251
252
  c->scheduled = false;
252
253
  #endif
@@ -297,10 +298,11 @@ bool grpc_combiner_continue_exec_ctx() {
297
298
  return true;
298
299
  }
299
300
 
300
- static void enqueue_finally(void* closure, grpc_error* error);
301
+ static void enqueue_finally(void* closure, grpc_error_handle error);
301
302
 
302
303
  static void combiner_finally_exec(grpc_core::Combiner* lock,
303
- grpc_closure* closure, grpc_error* error) {
304
+ grpc_closure* closure,
305
+ grpc_error_handle error) {
304
306
  GPR_ASSERT(lock != nullptr);
305
307
  GPR_TIMER_SCOPE("combiner.execute_finally", 0);
306
308
  GRPC_STATS_INC_COMBINER_LOCKS_SCHEDULED_FINAL_ITEMS();
@@ -322,7 +324,7 @@ static void combiner_finally_exec(grpc_core::Combiner* lock,
322
324
  grpc_closure_list_append(&lock->final_list, closure, error);
323
325
  }
324
326
 
325
- static void enqueue_finally(void* closure, grpc_error* error) {
327
+ static void enqueue_finally(void* closure, grpc_error_handle error) {
326
328
  grpc_closure* cl = static_cast<grpc_closure*>(closure);
327
329
  combiner_finally_exec(
328
330
  reinterpret_cast<grpc_core::Combiner*>(cl->error_data.scratch), cl,
@@ -330,11 +332,11 @@ static void enqueue_finally(void* closure, grpc_error* error) {
330
332
  }
331
333
 
332
334
  namespace grpc_core {
333
- void Combiner::Run(grpc_closure* closure, grpc_error* error) {
335
+ void Combiner::Run(grpc_closure* closure, grpc_error_handle error) {
334
336
  combiner_exec(this, closure, error);
335
337
  }
336
338
 
337
- void Combiner::FinallyRun(grpc_closure* closure, grpc_error* error) {
339
+ void Combiner::FinallyRun(grpc_closure* closure, grpc_error_handle error) {
338
340
  combiner_finally_exec(this, closure, error);
339
341
  }
340
342
  } // namespace grpc_core
@@ -32,9 +32,9 @@ namespace grpc_core {
32
32
  // use ExecCtx
33
33
  class Combiner {
34
34
  public:
35
- void Run(grpc_closure* closure, grpc_error* error);
35
+ void Run(grpc_closure* closure, grpc_error_handle error);
36
36
  // TODO(yashkt) : Remove this method
37
- void FinallyRun(grpc_closure* closure, grpc_error* error);
37
+ void FinallyRun(grpc_closure* closure, grpc_error_handle error);
38
38
  Combiner* next_combiner_on_this_exec_ctx = nullptr;
39
39
  MultiProducerSingleConsumerQueue queue;
40
40
  // either:
@@ -46,7 +46,7 @@ void grpc_endpoint_delete_from_pollset_set(grpc_endpoint* ep,
46
46
  ep->vtable->delete_from_pollset_set(ep, pollset_set);
47
47
  }
48
48
 
49
- void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why) {
49
+ void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why) {
50
50
  ep->vtable->shutdown(ep, why);
51
51
  }
52
52
 
@@ -44,7 +44,7 @@ struct grpc_endpoint_vtable {
44
44
  void (*add_to_pollset)(grpc_endpoint* ep, grpc_pollset* pollset);
45
45
  void (*add_to_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
46
46
  void (*delete_from_pollset_set)(grpc_endpoint* ep, grpc_pollset_set* pollset);
47
- void (*shutdown)(grpc_endpoint* ep, grpc_error* why);
47
+ void (*shutdown)(grpc_endpoint* ep, grpc_error_handle why);
48
48
  void (*destroy)(grpc_endpoint* ep);
49
49
  grpc_resource_user* (*get_resource_user)(grpc_endpoint* ep);
50
50
  absl::string_view (*get_peer)(grpc_endpoint* ep);
@@ -86,7 +86,7 @@ void grpc_endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* slices,
86
86
 
87
87
  /* Causes any pending and future read/write callbacks to run immediately with
88
88
  success==0 */
89
- void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error* why);
89
+ void grpc_endpoint_shutdown(grpc_endpoint* ep, grpc_error_handle why);
90
90
  void grpc_endpoint_destroy(grpc_endpoint* ep);
91
91
 
92
92
  /* Add an endpoint to a pollset or pollset_set, so that when the pollset is
@@ -29,13 +29,13 @@
29
29
  #include <grpc/support/alloc.h>
30
30
  #include <grpc/support/string_util.h>
31
31
 
32
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
32
33
  #include "src/core/lib/gpr/string.h"
33
34
  #include "src/core/lib/iomgr/cfstream_handle.h"
34
35
  #include "src/core/lib/iomgr/closure.h"
35
36
  #include "src/core/lib/iomgr/endpoint.h"
36
37
  #include "src/core/lib/iomgr/error_cfstream.h"
37
38
  #include "src/core/lib/iomgr/sockaddr.h"
38
- #include "src/core/lib/iomgr/sockaddr_utils.h"
39
39
  #include "src/core/lib/slice/slice_internal.h"
40
40
  #include "src/core/lib/slice/slice_string_helpers.h"
41
41
 
@@ -106,8 +106,8 @@ static void CFStreamUnref(CFStreamEndpoint* ep) {
106
106
  static void CFStreamRef(CFStreamEndpoint* ep) { gpr_ref(&ep->refcount); }
107
107
  #endif
108
108
 
109
- static grpc_error* CFStreamAnnotateError(grpc_error* src_error,
110
- CFStreamEndpoint* ep) {
109
+ static grpc_error_handle CFStreamAnnotateError(grpc_error_handle src_error,
110
+ CFStreamEndpoint* ep) {
111
111
  return grpc_error_set_str(
112
112
  grpc_error_set_int(src_error, GRPC_ERROR_INT_GRPC_STATUS,
113
113
  GRPC_STATUS_UNAVAILABLE),
@@ -115,13 +115,12 @@ static grpc_error* CFStreamAnnotateError(grpc_error* src_error,
115
115
  grpc_slice_from_copied_string(ep->peer_string.c_str()));
116
116
  }
117
117
 
118
- static void CallReadCb(CFStreamEndpoint* ep, grpc_error* error) {
118
+ static void CallReadCb(CFStreamEndpoint* ep, grpc_error_handle error) {
119
119
  if (grpc_tcp_trace.enabled()) {
120
120
  gpr_log(GPR_DEBUG, "CFStream endpoint:%p call_read_cb %p %p:%p", ep,
121
121
  ep->read_cb, ep->read_cb->cb, ep->read_cb->cb_arg);
122
122
  size_t i;
123
- const char* str = grpc_error_string(error);
124
- gpr_log(GPR_DEBUG, "read: error=%s", str);
123
+ gpr_log(GPR_DEBUG, "read: error=%s", grpc_error_std_string(error).c_str());
125
124
 
126
125
  for (i = 0; i < ep->read_slices->count; i++) {
127
126
  char* dump = grpc_dump_slice(ep->read_slices->slices[i],
@@ -137,12 +136,11 @@ static void CallReadCb(CFStreamEndpoint* ep, grpc_error* error) {
137
136
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error);
138
137
  }
139
138
 
140
- static void CallWriteCb(CFStreamEndpoint* ep, grpc_error* error) {
139
+ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error_handle error) {
141
140
  if (grpc_tcp_trace.enabled()) {
142
141
  gpr_log(GPR_DEBUG, "CFStream endpoint:%p call_write_cb %p %p:%p", ep,
143
142
  ep->write_cb, ep->write_cb->cb, ep->write_cb->cb_arg);
144
- const char* str = grpc_error_string(error);
145
- gpr_log(GPR_DEBUG, "write: error=%s", str);
143
+ gpr_log(GPR_DEBUG, "write: error=%s", grpc_error_std_string(error).c_str());
146
144
  }
147
145
  grpc_closure* cb = ep->write_cb;
148
146
  ep->write_cb = nullptr;
@@ -150,7 +148,7 @@ static void CallWriteCb(CFStreamEndpoint* ep, grpc_error* error) {
150
148
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, cb, error);
151
149
  }
152
150
 
153
- static void ReadAction(void* arg, grpc_error* error) {
151
+ static void ReadAction(void* arg, grpc_error_handle error) {
154
152
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
155
153
  GPR_ASSERT(ep->read_cb != nullptr);
156
154
  if (error) {
@@ -192,7 +190,7 @@ static void ReadAction(void* arg, grpc_error* error) {
192
190
  }
193
191
  }
194
192
 
195
- static void WriteAction(void* arg, grpc_error* error) {
193
+ static void WriteAction(void* arg, grpc_error_handle error) {
196
194
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
197
195
  GPR_ASSERT(ep->write_cb != nullptr);
198
196
  if (error) {
@@ -242,7 +240,7 @@ static void WriteAction(void* arg, grpc_error* error) {
242
240
  grpc_slice_unref_internal(slice);
243
241
  }
244
242
 
245
- static void CFStreamReadAllocationDone(void* arg, grpc_error* error) {
243
+ static void CFStreamReadAllocationDone(void* arg, grpc_error_handle error) {
246
244
  CFStreamEndpoint* ep = static_cast<CFStreamEndpoint*>(arg);
247
245
  if (error == GRPC_ERROR_NONE) {
248
246
  ep->stream_sync->NotifyOnRead(&ep->read_action);
@@ -286,7 +284,7 @@ static void CFStreamWrite(grpc_endpoint* ep, grpc_slice_buffer* slices,
286
284
  ep_impl->stream_sync->NotifyOnWrite(&ep_impl->write_action);
287
285
  }
288
286
 
289
- void CFStreamShutdown(grpc_endpoint* ep, grpc_error* why) {
287
+ void CFStreamShutdown(grpc_endpoint* ep, grpc_error_handle why) {
290
288
  CFStreamEndpoint* ep_impl = reinterpret_cast<CFStreamEndpoint*>(ep);
291
289
  if (grpc_tcp_trace.enabled()) {
292
290
  gpr_log(GPR_DEBUG, "CFStream endpoint:%p shutdown (%p)", ep_impl, why);
@@ -0,0 +1,33 @@
1
+ // Copyright 2021 The gRPC Authors
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ #include <grpc/support/port_platform.h>
15
+
16
+ #ifdef GRPC_USE_EVENT_ENGINE
17
+ #include "src/core/lib/iomgr/port.h"
18
+
19
+ #include <stdlib.h>
20
+
21
+ #include <grpc/support/log.h>
22
+
23
+ #include "src/core/lib/iomgr/endpoint_pair.h"
24
+
25
+ grpc_endpoint_pair grpc_iomgr_create_endpoint_pair(
26
+ const char* /* name */, grpc_channel_args* /* args */) {
27
+ // TODO(hork): determine what's needed here in the long run
28
+ GPR_ASSERT(
29
+ false &&
30
+ "grpc_iomgr_create_endpoint_pair is not suppoted with event_engine");
31
+ }
32
+
33
+ #endif // GRPC_USE_EVENT_ENGINE
@@ -21,9 +21,9 @@
21
21
  #include "src/core/lib/iomgr/port.h"
22
22
 
23
23
  #ifdef GRPC_WINSOCK_SOCKET
24
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
24
25
  #include "src/core/lib/iomgr/endpoint_pair.h"
25
26
  #include "src/core/lib/iomgr/sockaddr.h"
26
- #include "src/core/lib/iomgr/sockaddr_utils.h"
27
27
 
28
28
  #include <errno.h>
29
29
  #include <fcntl.h>
@@ -41,6 +41,115 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_error_refcount(false,
41
41
  "error_refcount");
42
42
  grpc_core::DebugOnlyTraceFlag grpc_trace_closure(false, "closure");
43
43
 
44
+ static gpr_atm g_error_creation_allowed = true;
45
+
46
+ void grpc_disable_error_creation() {
47
+ gpr_atm_no_barrier_store(&g_error_creation_allowed, false);
48
+ }
49
+
50
+ void grpc_enable_error_creation() {
51
+ gpr_atm_no_barrier_store(&g_error_creation_allowed, true);
52
+ }
53
+
54
+ #ifdef GRPC_ERROR_IS_ABSEIL_STATUS
55
+
56
+ absl::Status grpc_status_create(absl::StatusCode code, absl::string_view msg,
57
+ const grpc_core::DebugLocation& location,
58
+ size_t children_count, absl::Status* children) {
59
+ absl::Status s = StatusCreate(code, msg, location, {});
60
+ for (size_t i = 0; i < children_count; ++i) {
61
+ if (!children[i].ok()) {
62
+ grpc_core::StatusAddChild(&s, children[i]);
63
+ }
64
+ }
65
+ return s;
66
+ }
67
+
68
+ std::string grpc_error_std_string(const absl::Status& error) {
69
+ return grpc_core::StatusToString(error);
70
+ }
71
+
72
+ absl::Status grpc_os_error(const grpc_core::DebugLocation& location, int err,
73
+ const char* call_name) {
74
+ absl::Status s =
75
+ StatusCreate(absl::StatusCode::kUnknown, "OS Error", location, {});
76
+ grpc_core::StatusSetInt(&s, grpc_core::StatusIntProperty::kErrorNo, err);
77
+ grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kOsError,
78
+ strerror(err));
79
+ grpc_core::StatusSetStr(&s, grpc_core::StatusStrProperty::kSyscall,
80
+ call_name);
81
+ return s;
82
+ }
83
+
84
+ #ifdef GPR_WINDOWS
85
+ absl::Status grpc_wsa_error(const grpc_core::DebugLocation& location, int err,
86
+ const char* call_name) {
87
+ char* utf8_message = gpr_format_message(err);
88
+ absl::Status s =
89
+ StatusCreate(absl::StatusCode::kUnknown, "WSA Error", location, {});
90
+ StatusSetInt(&s, StatusIntProperty::WSA_ERROR, err);
91
+ StatusSetStr(&s, StatusStrProperty::OS_ERROR, utf8_message);
92
+ StatusSetStr(&s, StatusStrProperty::SYSCALL, call_name);
93
+ }
94
+ #endif
95
+
96
+ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
97
+ grpc_error_ints which, intptr_t value) {
98
+ grpc_core::StatusSetInt(
99
+ &src, static_cast<grpc_core::StatusIntProperty>(which), value);
100
+ return src;
101
+ }
102
+
103
+ bool grpc_error_get_int(grpc_error_handle error, grpc_error_ints which,
104
+ intptr_t* p) {
105
+ absl::optional<intptr_t> value = grpc_core::StatusGetInt(
106
+ error, static_cast<grpc_core::StatusIntProperty>(which));
107
+ if (value.has_value()) {
108
+ *p = *value;
109
+ return true;
110
+ } else {
111
+ return false;
112
+ }
113
+ }
114
+
115
+ grpc_error_handle grpc_error_set_str(grpc_error_handle src,
116
+ grpc_error_strs which,
117
+ const grpc_slice& str) {
118
+ grpc_core::StatusSetStr(
119
+ &src, static_cast<grpc_core::StatusStrProperty>(which),
120
+ std::string(reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(str)),
121
+ GRPC_SLICE_LENGTH(str)));
122
+ return src;
123
+ }
124
+
125
+ bool grpc_error_get_str(grpc_error_handle error, grpc_error_strs which,
126
+ grpc_slice* s) {
127
+ absl::optional<std::string> value = grpc_core::StatusGetStr(
128
+ error, static_cast<grpc_core::StatusStrProperty>(which));
129
+ if (value.has_value()) {
130
+ *s = grpc_slice_from_copied_buffer(value->c_str(), value->size());
131
+ return true;
132
+ } else {
133
+ return false;
134
+ }
135
+ }
136
+
137
+ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
138
+ grpc_error_handle child) {
139
+ grpc_core::StatusAddChild(&src, child);
140
+ return src;
141
+ }
142
+
143
+ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
144
+ int line) {
145
+ GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
146
+ gpr_log(file, line, GPR_LOG_SEVERITY_ERROR, "%s: %s", what,
147
+ grpc_core::StatusToString(error).c_str());
148
+ return false;
149
+ }
150
+
151
+ #else // GRPC_ERROR_IS_ABSEIL_STATUS
152
+
44
153
  static const char* error_int_name(grpc_error_ints key) {
45
154
  switch (key) {
46
155
  case GRPC_ERROR_INT_ERRNO:
@@ -61,20 +170,18 @@ static const char* error_int_name(grpc_error_ints key) {
61
170
  return "http2_error";
62
171
  case GRPC_ERROR_INT_TSI_CODE:
63
172
  return "tsi_code";
64
- case GRPC_ERROR_INT_SECURITY_STATUS:
65
- return "security_status";
66
173
  case GRPC_ERROR_INT_FD:
67
174
  return "fd";
68
175
  case GRPC_ERROR_INT_WSA_ERROR:
69
176
  return "wsa_error";
70
177
  case GRPC_ERROR_INT_HTTP_STATUS:
71
178
  return "http_status";
72
- case GRPC_ERROR_INT_LIMIT:
73
- return "limit";
74
179
  case GRPC_ERROR_INT_OCCURRED_DURING_WRITE:
75
180
  return "occurred_during_write";
76
181
  case GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE:
77
182
  return "channel_connectivity_state";
183
+ case GRPC_ERROR_INT_LB_POLICY_DROP:
184
+ return "lb_policy_drop";
78
185
  case GRPC_ERROR_INT_MAX:
79
186
  GPR_UNREACHABLE_CODE(return "unknown");
80
187
  }
@@ -105,8 +212,6 @@ static const char* error_str_name(grpc_error_strs key) {
105
212
  return "tsi_error";
106
213
  case GRPC_ERROR_STR_FILENAME:
107
214
  return "filename";
108
- case GRPC_ERROR_STR_QUEUED_BUFFERS:
109
- return "queued_buffers";
110
215
  case GRPC_ERROR_STR_MAX:
111
216
  GPR_UNREACHABLE_CODE(return "unknown");
112
217
  }
@@ -124,7 +229,8 @@ static const char* error_time_name(grpc_error_times key) {
124
229
  }
125
230
 
126
231
  #ifndef NDEBUG
127
- grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) {
232
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err, const char* file,
233
+ int line) {
128
234
  if (grpc_trace_error_refcount.enabled()) {
129
235
  gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
130
236
  gpr_atm_no_barrier_load(&err->atomics.refs.count),
@@ -134,13 +240,13 @@ grpc_error* grpc_error_do_ref(grpc_error* err, const char* file, int line) {
134
240
  return err;
135
241
  }
136
242
  #else
137
- grpc_error* grpc_error_do_ref(grpc_error* err) {
243
+ grpc_error_handle grpc_error_do_ref(grpc_error_handle err) {
138
244
  gpr_ref(&err->atomics.refs);
139
245
  return err;
140
246
  }
141
247
  #endif
142
248
 
143
- static void unref_errs(grpc_error* err) {
249
+ static void unref_errs(grpc_error_handle err) {
144
250
  uint8_t slot = err->first_err;
145
251
  while (slot != UINT8_MAX) {
146
252
  grpc_linked_error* lerr =
@@ -152,7 +258,7 @@ static void unref_errs(grpc_error* err) {
152
258
  }
153
259
  }
154
260
 
155
- static void unref_strs(grpc_error* err) {
261
+ static void unref_strs(grpc_error_handle err) {
156
262
  for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
157
263
  uint8_t slot = err->strs[which];
158
264
  if (slot != UINT8_MAX) {
@@ -162,7 +268,7 @@ static void unref_strs(grpc_error* err) {
162
268
  }
163
269
  }
164
270
 
165
- static void error_destroy(grpc_error* err) {
271
+ static void error_destroy(grpc_error_handle err) {
166
272
  GPR_ASSERT(!grpc_error_is_special(err));
167
273
  unref_errs(err);
168
274
  unref_strs(err);
@@ -172,7 +278,7 @@ static void error_destroy(grpc_error* err) {
172
278
  }
173
279
 
174
280
  #ifndef NDEBUG
175
- void grpc_error_do_unref(grpc_error* err, const char* file, int line) {
281
+ void grpc_error_do_unref(grpc_error_handle err, const char* file, int line) {
176
282
  if (grpc_trace_error_refcount.enabled()) {
177
283
  gpr_log(GPR_DEBUG, "%p: %" PRIdPTR " -> %" PRIdPTR " [%s:%d]", err,
178
284
  gpr_atm_no_barrier_load(&err->atomics.refs.count),
@@ -183,14 +289,14 @@ void grpc_error_do_unref(grpc_error* err, const char* file, int line) {
183
289
  }
184
290
  }
185
291
  #else
186
- void grpc_error_do_unref(grpc_error* err) {
292
+ void grpc_error_do_unref(grpc_error_handle err) {
187
293
  if (gpr_unref(&err->atomics.refs)) {
188
294
  error_destroy(err);
189
295
  }
190
296
  }
191
297
  #endif
192
298
 
193
- static uint8_t get_placement(grpc_error** err, size_t size) {
299
+ static uint8_t get_placement(grpc_error_handle* err, size_t size) {
194
300
  GPR_ASSERT(*err);
195
301
  uint8_t slots = static_cast<uint8_t>(size / sizeof(intptr_t));
196
302
  if ((*err)->arena_size + slots > (*err)->arena_capacity) {
@@ -200,9 +306,9 @@ static uint8_t get_placement(grpc_error** err, size_t size) {
200
306
  return UINT8_MAX;
201
307
  }
202
308
  #ifndef NDEBUG
203
- grpc_error* orig = *err;
309
+ grpc_error_handle orig = *err;
204
310
  #endif
205
- *err = static_cast<grpc_error*>(gpr_realloc(
311
+ *err = static_cast<grpc_error_handle>(gpr_realloc(
206
312
  *err, sizeof(grpc_error) + (*err)->arena_capacity * sizeof(intptr_t)));
207
313
  #ifndef NDEBUG
208
314
  if (grpc_trace_error_refcount.enabled()) {
@@ -217,7 +323,7 @@ static uint8_t get_placement(grpc_error** err, size_t size) {
217
323
  return placement;
218
324
  }
219
325
 
220
- static void internal_set_int(grpc_error** err, grpc_error_ints which,
326
+ static void internal_set_int(grpc_error_handle* err, grpc_error_ints which,
221
327
  intptr_t value) {
222
328
  uint8_t slot = (*err)->ints[which];
223
329
  if (slot == UINT8_MAX) {
@@ -232,7 +338,7 @@ static void internal_set_int(grpc_error** err, grpc_error_ints which,
232
338
  (*err)->arena[slot] = value;
233
339
  }
234
340
 
235
- static void internal_set_str(grpc_error** err, grpc_error_strs which,
341
+ static void internal_set_str(grpc_error_handle* err, grpc_error_strs which,
236
342
  const grpc_slice& value) {
237
343
  uint8_t slot = (*err)->strs[which];
238
344
  if (slot == UINT8_MAX) {
@@ -253,7 +359,7 @@ static void internal_set_str(grpc_error** err, grpc_error_strs which,
253
359
  }
254
360
 
255
361
  static char* fmt_time(gpr_timespec tm);
256
- static void internal_set_time(grpc_error** err, grpc_error_times which,
362
+ static void internal_set_time(grpc_error_handle* err, grpc_error_times which,
257
363
  gpr_timespec value) {
258
364
  uint8_t slot = (*err)->times[which];
259
365
  if (slot == UINT8_MAX) {
@@ -270,7 +376,8 @@ static void internal_set_time(grpc_error** err, grpc_error_times which,
270
376
  memcpy((*err)->arena + slot, &value, sizeof(value));
271
377
  }
272
378
 
273
- static void internal_add_error(grpc_error** err, grpc_error* new_err) {
379
+ static void internal_add_error(grpc_error_handle* err,
380
+ grpc_error_handle new_err) {
274
381
  grpc_linked_error new_last = {new_err, UINT8_MAX};
275
382
  uint8_t slot = get_placement(err, sizeof(grpc_linked_error));
276
383
  if (slot == UINT8_MAX) {
@@ -306,25 +413,16 @@ static void internal_add_error(grpc_error** err, grpc_error* new_err) {
306
413
  // It is very common to include and extra int and string in an error
307
414
  #define SURPLUS_CAPACITY (2 * SLOTS_PER_INT + SLOTS_PER_TIME)
308
415
 
309
- static gpr_atm g_error_creation_allowed = true;
310
-
311
- void grpc_disable_error_creation() {
312
- gpr_atm_no_barrier_store(&g_error_creation_allowed, false);
313
- }
314
-
315
- void grpc_enable_error_creation() {
316
- gpr_atm_no_barrier_store(&g_error_creation_allowed, true);
317
- }
318
-
319
- grpc_error* grpc_error_create(const char* file, int line,
320
- const grpc_slice& desc, grpc_error** referencing,
321
- size_t num_referencing) {
416
+ grpc_error_handle grpc_error_create(const char* file, int line,
417
+ const grpc_slice& desc,
418
+ grpc_error_handle* referencing,
419
+ size_t num_referencing) {
322
420
  GPR_TIMER_SCOPE("grpc_error_create", 0);
323
421
  uint8_t initial_arena_capacity = static_cast<uint8_t>(
324
422
  DEFAULT_ERROR_CAPACITY +
325
423
  static_cast<uint8_t>(num_referencing * SLOTS_PER_LINKED_ERROR) +
326
424
  SURPLUS_CAPACITY);
327
- grpc_error* err = static_cast<grpc_error*>(
425
+ grpc_error_handle err = static_cast<grpc_error_handle>(
328
426
  gpr_malloc(sizeof(*err) + initial_arena_capacity * sizeof(intptr_t)));
329
427
  if (err == nullptr) { // TODO(ctiller): make gpr_malloc return NULL
330
428
  return GRPC_ERROR_OOM;
@@ -370,7 +468,7 @@ grpc_error* grpc_error_create(const char* file, int line,
370
468
  return err;
371
469
  }
372
470
 
373
- static void ref_strs(grpc_error* err) {
471
+ static void ref_strs(grpc_error_handle err) {
374
472
  for (size_t i = 0; i < GRPC_ERROR_STR_MAX; ++i) {
375
473
  uint8_t slot = err->strs[i];
376
474
  if (slot != UINT8_MAX) {
@@ -380,7 +478,7 @@ static void ref_strs(grpc_error* err) {
380
478
  }
381
479
  }
382
480
 
383
- static void ref_errs(grpc_error* err) {
481
+ static void ref_errs(grpc_error_handle err) {
384
482
  uint8_t slot = err->first_err;
385
483
  while (slot != UINT8_MAX) {
386
484
  grpc_linked_error* lerr =
@@ -390,9 +488,9 @@ static void ref_errs(grpc_error* err) {
390
488
  }
391
489
  }
392
490
 
393
- static grpc_error* copy_error_and_unref(grpc_error* in) {
491
+ static grpc_error_handle copy_error_and_unref(grpc_error_handle in) {
394
492
  GPR_TIMER_SCOPE("copy_error_and_unref", 0);
395
- grpc_error* out;
493
+ grpc_error_handle out;
396
494
  if (grpc_error_is_special(in)) {
397
495
  out = GRPC_ERROR_CREATE_FROM_STATIC_STRING("unknown");
398
496
  if (in == GRPC_ERROR_NONE) {
@@ -417,7 +515,7 @@ static grpc_error* copy_error_and_unref(grpc_error* in) {
417
515
  static_cast<uint8_t> SLOTS_PER_STR) {
418
516
  new_arena_capacity = static_cast<uint8_t>(3 * new_arena_capacity / 2);
419
517
  }
420
- out = static_cast<grpc_error*>(
518
+ out = static_cast<grpc_error_handle>(
421
519
  gpr_malloc(sizeof(*in) + new_arena_capacity * sizeof(intptr_t)));
422
520
  #ifndef NDEBUG
423
521
  if (grpc_trace_error_refcount.enabled()) {
@@ -441,10 +539,10 @@ static grpc_error* copy_error_and_unref(grpc_error* in) {
441
539
  return out;
442
540
  }
443
541
 
444
- grpc_error* grpc_error_set_int(grpc_error* src, grpc_error_ints which,
445
- intptr_t value) {
542
+ grpc_error_handle grpc_error_set_int(grpc_error_handle src,
543
+ grpc_error_ints which, intptr_t value) {
446
544
  GPR_TIMER_SCOPE("grpc_error_set_int", 0);
447
- grpc_error* new_err = copy_error_and_unref(src);
545
+ grpc_error_handle new_err = copy_error_and_unref(src);
448
546
  internal_set_int(&new_err, which, value);
449
547
  return new_err;
450
548
  }
@@ -464,7 +562,8 @@ const special_error_status_map error_status_map[] = {
464
562
  strlen("Cancelled")}, // GRPC_ERROR_CANCELLED
465
563
  };
466
564
 
467
- bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) {
565
+ bool grpc_error_get_int(grpc_error_handle err, grpc_error_ints which,
566
+ intptr_t* p) {
468
567
  GPR_TIMER_SCOPE("grpc_error_get_int", 0);
469
568
  if (grpc_error_is_special(err)) {
470
569
  if (which != GRPC_ERROR_INT_GRPC_STATUS) return false;
@@ -479,15 +578,16 @@ bool grpc_error_get_int(grpc_error* err, grpc_error_ints which, intptr_t* p) {
479
578
  return false;
480
579
  }
481
580
 
482
- grpc_error* grpc_error_set_str(grpc_error* src, grpc_error_strs which,
483
- const grpc_slice& str) {
581
+ grpc_error_handle grpc_error_set_str(grpc_error_handle src,
582
+ grpc_error_strs which,
583
+ const grpc_slice& str) {
484
584
  GPR_TIMER_SCOPE("grpc_error_set_str", 0);
485
- grpc_error* new_err = copy_error_and_unref(src);
585
+ grpc_error_handle new_err = copy_error_and_unref(src);
486
586
  internal_set_str(&new_err, which, str);
487
587
  return new_err;
488
588
  }
489
589
 
490
- bool grpc_error_get_str(grpc_error* err, grpc_error_strs which,
590
+ bool grpc_error_get_str(grpc_error_handle err, grpc_error_strs which,
491
591
  grpc_slice* str) {
492
592
  if (grpc_error_is_special(err)) {
493
593
  if (which != GRPC_ERROR_STR_GRPC_MESSAGE) return false;
@@ -508,14 +608,15 @@ bool grpc_error_get_str(grpc_error* err, grpc_error_strs which,
508
608
  }
509
609
  }
510
610
 
511
- grpc_error* grpc_error_add_child(grpc_error* src, grpc_error* child) {
611
+ grpc_error_handle grpc_error_add_child(grpc_error_handle src,
612
+ grpc_error_handle child) {
512
613
  GPR_TIMER_SCOPE("grpc_error_add_child", 0);
513
614
  if (src != GRPC_ERROR_NONE) {
514
615
  if (child == GRPC_ERROR_NONE) {
515
616
  /* \a child is empty. Simply return the ref to \a src */
516
617
  return src;
517
618
  } else if (child != src) {
518
- grpc_error* new_err = copy_error_and_unref(src);
619
+ grpc_error_handle new_err = copy_error_and_unref(src);
519
620
  internal_add_error(&new_err, child);
520
621
  return new_err;
521
622
  } else {
@@ -616,7 +717,7 @@ static char* fmt_int(intptr_t p) {
616
717
  return s;
617
718
  }
618
719
 
619
- static void collect_ints_kvs(grpc_error* err, kv_pairs* kvs) {
720
+ static void collect_ints_kvs(grpc_error_handle err, kv_pairs* kvs) {
620
721
  for (size_t which = 0; which < GRPC_ERROR_INT_MAX; ++which) {
621
722
  uint8_t slot = err->ints[which];
622
723
  if (slot != UINT8_MAX) {
@@ -640,7 +741,7 @@ static char* fmt_str(const grpc_slice& slice) {
640
741
  return s;
641
742
  }
642
743
 
643
- static void collect_strs_kvs(grpc_error* err, kv_pairs* kvs) {
744
+ static void collect_strs_kvs(grpc_error_handle err, kv_pairs* kvs) {
644
745
  for (size_t which = 0; which < GRPC_ERROR_STR_MAX; ++which) {
645
746
  uint8_t slot = err->strs[which];
646
747
  if (slot != UINT8_MAX) {
@@ -675,7 +776,7 @@ static char* fmt_time(gpr_timespec tm) {
675
776
  return out;
676
777
  }
677
778
 
678
- static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) {
779
+ static void collect_times_kvs(grpc_error_handle err, kv_pairs* kvs) {
679
780
  for (size_t which = 0; which < GRPC_ERROR_TIME_MAX; ++which) {
680
781
  uint8_t slot = err->times[which];
681
782
  if (slot != UINT8_MAX) {
@@ -685,7 +786,7 @@ static void collect_times_kvs(grpc_error* err, kv_pairs* kvs) {
685
786
  }
686
787
  }
687
788
 
688
- static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) {
789
+ static void add_errs(grpc_error_handle err, char** s, size_t* sz, size_t* cap) {
689
790
  uint8_t slot = err->first_err;
690
791
  bool first = true;
691
792
  while (slot != UINT8_MAX) {
@@ -701,7 +802,7 @@ static void add_errs(grpc_error* err, char** s, size_t* sz, size_t* cap) {
701
802
  }
702
803
  }
703
804
 
704
- static char* errs_string(grpc_error* err) {
805
+ static char* errs_string(grpc_error_handle err) {
705
806
  char* s = nullptr;
706
807
  size_t sz = 0;
707
808
  size_t cap = 0;
@@ -740,7 +841,7 @@ static char* finish_kvs(kv_pairs* kvs) {
740
841
  return s;
741
842
  }
742
843
 
743
- const char* grpc_error_string(grpc_error* err) {
844
+ const char* grpc_error_string(grpc_error_handle err) {
744
845
  GPR_TIMER_SCOPE("grpc_error_string", 0);
745
846
  if (err == GRPC_ERROR_NONE) return no_error_string;
746
847
  if (err == GRPC_ERROR_OOM) return oom_error_string;
@@ -775,8 +876,12 @@ const char* grpc_error_string(grpc_error* err) {
775
876
  return out;
776
877
  }
777
878
 
778
- grpc_error* grpc_os_error(const char* file, int line, int err,
779
- const char* call_name) {
879
+ std::string grpc_error_std_string(grpc_error_handle error) {
880
+ return std::string(grpc_error_string(error));
881
+ }
882
+
883
+ grpc_error_handle grpc_os_error(const char* file, int line, int err,
884
+ const char* call_name) {
780
885
  return grpc_error_set_str(
781
886
  grpc_error_set_str(
782
887
  grpc_error_set_int(
@@ -790,10 +895,10 @@ grpc_error* grpc_os_error(const char* file, int line, int err,
790
895
  }
791
896
 
792
897
  #ifdef GPR_WINDOWS
793
- grpc_error* grpc_wsa_error(const char* file, int line, int err,
794
- const char* call_name) {
898
+ grpc_error_handle grpc_wsa_error(const char* file, int line, int err,
899
+ const char* call_name) {
795
900
  char* utf8_message = gpr_format_message(err);
796
- grpc_error* error = grpc_error_set_str(
901
+ grpc_error_handle error = grpc_error_set_str(
797
902
  grpc_error_set_str(
798
903
  grpc_error_set_int(
799
904
  grpc_error_create(file, line,
@@ -807,7 +912,7 @@ grpc_error* grpc_wsa_error(const char* file, int line, int err,
807
912
  }
808
913
  #endif
809
914
 
810
- bool grpc_log_error(const char* what, grpc_error* error, const char* file,
915
+ bool grpc_log_error(const char* what, grpc_error_handle error, const char* file,
811
916
  int line) {
812
917
  GPR_DEBUG_ASSERT(error != GRPC_ERROR_NONE);
813
918
  const char* msg = grpc_error_string(error);
@@ -815,3 +920,5 @@ bool grpc_log_error(const char* what, grpc_error* error, const char* file,
815
920
  GRPC_ERROR_UNREF(error);
816
921
  return false;
817
922
  }
923
+
924
+ #endif // GRPC_ERROR_IS_ABSEIL_STATUS