grpc 1.15.0 → 1.30.0

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 (1780) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8591 -13387
  3. data/etc/roots.pem +455 -130
  4. data/include/grpc/grpc.h +39 -9
  5. data/include/grpc/grpc_posix.h +0 -8
  6. data/include/grpc/grpc_security.h +409 -14
  7. data/include/grpc/grpc_security_constants.h +55 -22
  8. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  9. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  10. data/include/grpc/impl/codegen/byte_buffer.h +13 -0
  11. data/include/grpc/impl/codegen/compression_types.h +2 -1
  12. data/include/grpc/impl/codegen/gpr_types.h +1 -1
  13. data/include/grpc/impl/codegen/grpc_types.h +111 -16
  14. data/include/grpc/impl/codegen/port_platform.h +171 -9
  15. data/include/grpc/impl/codegen/slice.h +2 -22
  16. data/include/grpc/impl/codegen/status.h +2 -1
  17. data/include/grpc/impl/codegen/sync.h +5 -3
  18. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  19. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  20. data/include/grpc/impl/codegen/sync_posix.h +18 -0
  21. data/include/grpc/module.modulemap +25 -37
  22. data/include/grpc/slice.h +3 -3
  23. data/include/grpc/support/alloc.h +0 -16
  24. data/include/grpc/support/sync_abseil.h +26 -0
  25. data/src/core/ext/filters/client_channel/backend_metric.cc +81 -0
  26. data/src/core/ext/filters/client_channel/backend_metric.h +36 -0
  27. data/src/core/ext/filters/client_channel/backup_poller.cc +26 -19
  28. data/src/core/ext/filters/client_channel/backup_poller.h +8 -2
  29. data/src/core/ext/filters/client_channel/channel_connectivity.cc +21 -5
  30. data/src/core/ext/filters/client_channel/client_channel.cc +2888 -2206
  31. data/src/core/ext/filters/client_channel/client_channel.h +26 -6
  32. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +54 -72
  33. data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -26
  34. data/src/core/ext/filters/client_channel/client_channel_factory.cc +22 -34
  35. data/src/core/ext/filters/client_channel/client_channel_factory.h +12 -39
  36. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +13 -14
  37. data/src/core/ext/filters/client_channel/connector.h +43 -37
  38. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +179 -0
  39. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +68 -0
  40. data/src/core/ext/filters/client_channel/health/health_check_client.cc +606 -0
  41. data/src/core/ext/filters/client_channel/health/health_check_client.h +175 -0
  42. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +177 -158
  43. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
  44. data/src/core/ext/filters/client_channel/http_proxy.cc +125 -121
  45. data/src/core/ext/filters/client_channel/http_proxy.h +5 -1
  46. data/src/core/ext/filters/client_channel/lb_policy.cc +105 -26
  47. data/src/core/ext/filters/client_channel/lb_policy.h +352 -152
  48. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  49. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  50. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +64 -47
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1010 -1155
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +7 -0
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +12 -3
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +53 -40
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +10 -5
  60. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +19 -16
  61. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +157 -271
  62. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +43 -59
  63. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +235 -384
  64. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  65. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +174 -409
  66. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +157 -285
  67. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  68. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +417 -0
  69. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  70. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  71. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +32 -0
  72. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  73. data/src/core/ext/filters/client_channel/lb_policy_factory.h +7 -91
  74. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +93 -8
  75. data/src/core/ext/filters/client_channel/lb_policy_registry.h +13 -2
  76. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +96 -0
  77. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +57 -0
  78. data/src/core/ext/filters/client_channel/parse_address.cc +76 -30
  79. data/src/core/ext/filters/client_channel/parse_address.h +4 -1
  80. data/src/core/ext/filters/client_channel/proxy_mapper.h +14 -34
  81. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +46 -79
  82. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +23 -17
  83. data/src/core/ext/filters/client_channel/resolver.cc +55 -5
  84. data/src/core/ext/filters/client_channel/resolver.h +61 -61
  85. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +251 -226
  86. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +200 -36
  87. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -20
  88. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +177 -0
  89. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +8 -7
  90. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +491 -131
  91. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +434 -233
  92. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +20 -12
  93. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +15 -7
  94. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +38 -0
  95. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +7 -2
  96. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +28 -0
  97. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +29 -0
  98. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +92 -131
  99. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +220 -134
  100. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +27 -17
  101. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +73 -99
  102. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +184 -0
  103. data/src/core/ext/filters/client_channel/resolver_factory.h +13 -11
  104. data/src/core/ext/filters/client_channel/resolver_registry.cc +33 -14
  105. data/src/core/ext/filters/client_channel/resolver_registry.h +19 -13
  106. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +443 -0
  107. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +127 -0
  108. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +348 -0
  109. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +123 -0
  110. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  111. data/src/core/ext/filters/client_channel/retry_throttle.h +2 -6
  112. data/src/core/ext/filters/client_channel/server_address.cc +48 -0
  113. data/src/core/ext/filters/client_channel/server_address.h +90 -0
  114. data/src/core/ext/filters/client_channel/service_config.cc +221 -0
  115. data/src/core/ext/filters/client_channel/service_config.h +123 -0
  116. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  117. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  118. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  119. data/src/core/ext/filters/client_channel/subchannel.cc +903 -634
  120. data/src/core/ext/filters/client_channel/subchannel.h +364 -131
  121. data/src/core/ext/filters/client_channel/subchannel_interface.h +94 -0
  122. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +97 -0
  123. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +91 -0
  124. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1906 -0
  125. data/src/core/ext/filters/client_channel/xds/xds_api.h +280 -0
  126. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +342 -0
  127. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +88 -0
  128. data/src/core/ext/filters/client_channel/xds/xds_channel.h +46 -0
  129. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  130. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +106 -0
  131. data/src/core/ext/filters/client_channel/xds/xds_client.cc +2367 -0
  132. data/src/core/ext/filters/client_channel/xds/xds_client.h +309 -0
  133. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +115 -0
  134. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +211 -0
  135. data/src/core/ext/filters/client_idle/client_idle_filter.cc +440 -0
  136. data/src/core/ext/filters/deadline/deadline_filter.cc +49 -52
  137. data/src/core/ext/filters/deadline/deadline_filter.h +11 -14
  138. data/src/core/ext/filters/http/client/http_client_filter.cc +122 -85
  139. data/src/core/ext/filters/http/client/http_client_filter.h +1 -1
  140. data/src/core/ext/filters/http/client_authority_filter.cc +26 -24
  141. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  142. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +342 -295
  143. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  144. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  145. data/src/core/ext/filters/http/server/http_server_filter.cc +156 -54
  146. data/src/core/ext/filters/max_age/max_age_filter.cc +76 -63
  147. data/src/core/ext/filters/message_size/message_size_filter.cc +218 -119
  148. data/src/core/ext/filters/message_size/message_size_filter.h +33 -0
  149. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +19 -17
  150. data/src/core/ext/transport/chttp2/alpn/alpn.h +1 -1
  151. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +141 -164
  152. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +31 -1
  153. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +36 -34
  154. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  155. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +133 -138
  156. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +128 -30
  157. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  158. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +8 -11
  159. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +4 -4
  160. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +4 -4
  161. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +11 -12
  162. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +4 -3
  163. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +9 -7
  164. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +911 -716
  165. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -1
  166. data/src/core/ext/transport/chttp2/transport/context_list.cc +69 -0
  167. data/src/core/ext/transport/chttp2/transport/context_list.h +53 -0
  168. data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -5
  169. data/src/core/ext/transport/chttp2/transport/flow_control.h +22 -30
  170. data/src/core/ext/transport/chttp2/transport/frame_data.cc +47 -54
  171. data/src/core/ext/transport/chttp2/transport/frame_data.h +11 -13
  172. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +9 -8
  173. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +5 -5
  174. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -5
  175. data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -4
  176. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +17 -7
  177. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +11 -4
  178. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +11 -7
  179. data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -4
  180. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +7 -6
  181. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +3 -4
  182. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +548 -351
  183. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +26 -15
  184. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +201 -120
  185. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -6
  186. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +47 -169
  187. data/src/core/ext/transport/chttp2/transport/hpack_table.h +70 -17
  188. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  189. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  190. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +10 -17
  191. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +19 -10
  192. data/src/core/ext/transport/chttp2/transport/internal.h +226 -161
  193. data/src/core/ext/transport/chttp2/transport/parsing.cc +166 -110
  194. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -3
  195. data/src/core/ext/transport/chttp2/transport/stream_map.cc +28 -18
  196. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  197. data/src/core/ext/transport/chttp2/transport/writing.cc +95 -35
  198. data/src/core/ext/transport/inproc/inproc_transport.cc +406 -388
  199. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  200. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  201. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  202. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  203. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +21 -0
  204. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +35 -0
  205. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  206. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  207. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  208. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  209. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  210. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  211. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +28 -0
  212. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +53 -0
  213. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  214. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  215. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +74 -0
  216. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +218 -0
  217. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +35 -0
  218. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +69 -0
  219. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +55 -0
  220. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +305 -0
  221. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +112 -0
  222. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +328 -0
  223. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  224. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  225. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +313 -0
  226. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +897 -0
  227. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +96 -0
  228. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +322 -0
  229. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  230. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  231. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +197 -0
  232. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +642 -0
  233. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +172 -0
  234. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +673 -0
  235. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +36 -0
  236. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +80 -0
  237. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +152 -0
  238. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +518 -0
  239. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  240. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  241. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +129 -0
  242. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +392 -0
  243. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +31 -0
  244. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +53 -0
  245. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  246. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  247. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +18 -0
  248. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +33 -0
  249. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  250. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  251. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +112 -0
  252. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +324 -0
  253. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  254. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  255. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  256. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  257. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  258. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  259. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  260. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  261. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  262. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  263. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  264. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  265. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  266. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  267. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  268. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  269. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  270. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  271. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  272. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  273. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  274. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  275. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  276. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  277. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  278. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  279. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  280. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  281. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  282. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  283. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +24 -0
  284. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +50 -0
  285. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +54 -0
  286. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +134 -0
  287. data/src/core/ext/upb-generated/envoy/type/http.upb.c +17 -0
  288. data/src/core/ext/upb-generated/envoy/type/http.upb.h +36 -0
  289. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  290. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  291. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  292. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  293. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  294. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  295. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +39 -0
  296. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +87 -0
  297. data/src/core/ext/upb-generated/envoy/type/range.upb.c +50 -0
  298. data/src/core/ext/upb-generated/envoy/type/range.upb.h +112 -0
  299. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  300. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  301. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  302. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  303. data/src/core/ext/upb-generated/gogoproto/gogo.upb.c +17 -0
  304. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +30 -0
  305. data/src/core/ext/upb-generated/google/api/annotations.upb.c +18 -0
  306. data/src/core/ext/upb-generated/google/api/annotations.upb.h +30 -0
  307. data/src/core/ext/upb-generated/google/api/http.upb.c +66 -0
  308. data/src/core/ext/upb-generated/google/api/http.upb.h +190 -0
  309. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +27 -0
  310. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +58 -0
  311. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +486 -0
  312. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +1696 -0
  313. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +27 -0
  314. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +58 -0
  315. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +22 -0
  316. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +50 -0
  317. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +79 -0
  318. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +215 -0
  319. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +27 -0
  320. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +58 -0
  321. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +106 -0
  322. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +238 -0
  323. data/src/core/ext/upb-generated/google/rpc/status.upb.c +33 -0
  324. data/src/core/ext/upb-generated/google/rpc/status.upb.h +74 -0
  325. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +49 -0
  326. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +126 -0
  327. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +212 -0
  328. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +693 -0
  329. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +42 -0
  330. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +109 -0
  331. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +36 -0
  332. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +84 -0
  333. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +141 -0
  334. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +393 -0
  335. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  336. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  337. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  338. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  339. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  340. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  341. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +58 -0
  342. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +144 -0
  343. data/src/core/ext/upb-generated/validate/validate.upb.c +448 -0
  344. data/src/core/ext/upb-generated/validate/validate.upb.h +2073 -0
  345. data/src/core/lib/avl/avl.cc +1 -1
  346. data/src/core/lib/channel/channel_args.cc +54 -115
  347. data/src/core/lib/channel/channel_args.h +44 -40
  348. data/src/core/lib/channel/channel_stack.cc +6 -5
  349. data/src/core/lib/channel/channel_stack.h +52 -28
  350. data/src/core/lib/channel/channel_stack_builder.cc +14 -2
  351. data/src/core/lib/channel/channel_stack_builder.h +8 -0
  352. data/src/core/lib/channel/channel_trace.cc +75 -85
  353. data/src/core/lib/channel/channel_trace.h +37 -32
  354. data/src/core/lib/channel/channelz.cc +496 -106
  355. data/src/core/lib/channel/channelz.h +262 -61
  356. data/src/core/lib/channel/channelz_registry.cc +191 -69
  357. data/src/core/lib/channel/channelz_registry.h +30 -53
  358. data/src/core/lib/channel/connected_channel.cc +30 -27
  359. data/src/core/lib/channel/context.h +6 -6
  360. data/src/core/lib/channel/handshaker.cc +150 -218
  361. data/src/core/lib/channel/handshaker.h +111 -102
  362. data/src/core/lib/channel/handshaker_factory.h +9 -17
  363. data/src/core/lib/channel/handshaker_registry.cc +57 -49
  364. data/src/core/lib/channel/handshaker_registry.h +21 -15
  365. data/src/core/lib/channel/status_util.cc +2 -3
  366. data/src/core/lib/compression/algorithm_metadata.h +3 -3
  367. data/src/core/lib/compression/compression.cc +17 -12
  368. data/src/core/lib/compression/compression_args.cc +134 -0
  369. data/src/core/lib/compression/compression_args.h +56 -0
  370. data/src/core/lib/compression/compression_internal.cc +17 -13
  371. data/src/core/lib/compression/compression_internal.h +9 -1
  372. data/src/core/lib/compression/message_compress.cc +8 -3
  373. data/src/core/lib/compression/stream_compression.cc +3 -2
  374. data/src/core/lib/compression/stream_compression.h +2 -2
  375. data/src/core/lib/compression/stream_compression_gzip.cc +9 -9
  376. data/src/core/lib/compression/stream_compression_identity.cc +5 -7
  377. data/src/core/lib/debug/stats.cc +21 -27
  378. data/src/core/lib/debug/stats.h +3 -1
  379. data/src/core/lib/debug/trace.cc +16 -7
  380. data/src/core/lib/debug/trace.h +20 -4
  381. data/src/core/lib/gpr/alloc.cc +4 -29
  382. data/src/core/lib/gpr/arena.h +13 -7
  383. data/src/core/lib/gpr/cpu_linux.cc +1 -1
  384. data/src/core/lib/gpr/cpu_posix.cc +5 -3
  385. data/src/core/lib/gpr/env.h +3 -6
  386. data/src/core/lib/gpr/env_linux.cc +15 -21
  387. data/src/core/lib/gpr/env_posix.cc +5 -5
  388. data/src/core/lib/gpr/env_windows.cc +7 -5
  389. data/src/core/lib/gpr/log.cc +9 -13
  390. data/src/core/lib/gpr/log_linux.cc +2 -2
  391. data/src/core/lib/gpr/log_posix.cc +4 -3
  392. data/src/core/lib/gpr/spinlock.h +2 -3
  393. data/src/core/lib/gpr/string.cc +29 -35
  394. data/src/core/lib/gpr/string.h +11 -19
  395. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  396. data/src/core/lib/gpr/sync_posix.cc +78 -9
  397. data/src/core/lib/gpr/sync_windows.cc +4 -2
  398. data/src/core/lib/gpr/time.cc +12 -0
  399. data/src/core/lib/gpr/time_posix.cc +22 -3
  400. data/src/core/lib/gpr/time_precise.cc +123 -36
  401. data/src/core/lib/gpr/time_precise.h +37 -0
  402. data/src/core/lib/gprpp/arena.cc +103 -0
  403. data/src/core/lib/gprpp/arena.h +120 -0
  404. data/src/core/lib/gprpp/atomic.h +79 -5
  405. data/src/core/lib/gprpp/debug_location.h +3 -2
  406. data/src/core/lib/gprpp/fork.cc +30 -56
  407. data/src/core/lib/gprpp/fork.h +18 -3
  408. data/src/core/lib/gprpp/global_config.h +96 -0
  409. data/src/core/lib/gprpp/global_config_custom.h +29 -0
  410. data/src/core/lib/gprpp/global_config_env.cc +135 -0
  411. data/src/core/lib/gprpp/global_config_env.h +131 -0
  412. data/src/core/lib/gprpp/global_config_generic.h +44 -0
  413. data/src/core/lib/gprpp/host_port.cc +112 -0
  414. data/src/core/lib/gprpp/host_port.h +56 -0
  415. data/src/core/lib/gprpp/map.h +53 -0
  416. data/src/core/lib/gprpp/memory.h +11 -83
  417. data/src/core/lib/gprpp/mpscq.cc +108 -0
  418. data/src/core/lib/gprpp/mpscq.h +98 -0
  419. data/src/core/lib/gprpp/orphanable.h +27 -95
  420. data/src/core/lib/gprpp/ref_counted.h +228 -83
  421. data/src/core/lib/gprpp/ref_counted_ptr.h +39 -16
  422. data/src/core/lib/gprpp/sync.h +135 -0
  423. data/src/core/lib/gprpp/thd.h +54 -12
  424. data/src/core/lib/gprpp/thd_posix.cc +57 -13
  425. data/src/core/lib/gprpp/thd_windows.cc +54 -33
  426. data/src/core/lib/http/format_request.cc +46 -65
  427. data/src/core/lib/http/httpcli.cc +11 -11
  428. data/src/core/lib/http/httpcli.h +2 -3
  429. data/src/core/lib/http/httpcli_security_connector.cc +121 -107
  430. data/src/core/lib/http/parser.cc +4 -3
  431. data/src/core/lib/http/parser.h +9 -9
  432. data/src/core/lib/iomgr/buffer_list.cc +308 -0
  433. data/src/core/lib/iomgr/buffer_list.h +165 -0
  434. data/src/core/lib/iomgr/call_combiner.cc +113 -69
  435. data/src/core/lib/iomgr/call_combiner.h +96 -74
  436. data/src/core/lib/iomgr/cfstream_handle.cc +209 -0
  437. data/src/core/lib/iomgr/cfstream_handle.h +90 -0
  438. data/src/core/lib/iomgr/closure.h +44 -141
  439. data/src/core/lib/iomgr/combiner.cc +50 -86
  440. data/src/core/lib/iomgr/combiner.h +31 -9
  441. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  442. data/src/core/lib/iomgr/dynamic_annotations.h +67 -0
  443. data/src/core/lib/iomgr/endpoint.cc +8 -4
  444. data/src/core/lib/iomgr/endpoint.h +12 -4
  445. data/src/core/lib/iomgr/endpoint_cfstream.cc +376 -0
  446. data/src/core/lib/iomgr/endpoint_cfstream.h +49 -0
  447. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  448. data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
  449. data/src/core/lib/iomgr/endpoint_pair_windows.cc +2 -2
  450. data/src/core/lib/iomgr/error.cc +71 -64
  451. data/src/core/lib/iomgr/error.h +74 -10
  452. data/src/core/lib/iomgr/error_cfstream.cc +52 -0
  453. data/src/core/lib/iomgr/error_cfstream.h +31 -0
  454. data/src/core/lib/iomgr/error_internal.h +1 -3
  455. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  456. data/src/core/lib/iomgr/ev_apple.h +43 -0
  457. data/src/core/lib/iomgr/ev_epoll1_linux.cc +99 -69
  458. data/src/core/lib/iomgr/ev_epollex_linux.cc +238 -259
  459. data/src/core/lib/iomgr/ev_poll_posix.cc +52 -504
  460. data/src/core/lib/iomgr/ev_posix.cc +54 -31
  461. data/src/core/lib/iomgr/ev_posix.h +29 -3
  462. data/src/core/lib/iomgr/ev_windows.cc +2 -2
  463. data/src/core/lib/iomgr/exec_ctx.cc +79 -8
  464. data/src/core/lib/iomgr/exec_ctx.h +163 -21
  465. data/src/core/lib/iomgr/executor.cc +137 -101
  466. data/src/core/lib/iomgr/executor.h +54 -48
  467. data/src/core/lib/iomgr/executor/mpmcqueue.cc +183 -0
  468. data/src/core/lib/iomgr/executor/mpmcqueue.h +175 -0
  469. data/src/core/lib/iomgr/executor/threadpool.cc +137 -0
  470. data/src/core/lib/iomgr/executor/threadpool.h +149 -0
  471. data/src/core/lib/iomgr/fork_posix.cc +15 -8
  472. data/src/core/lib/iomgr/grpc_if_nametoindex.h +30 -0
  473. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +42 -0
  474. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +38 -0
  475. data/src/core/lib/iomgr/internal_errqueue.cc +67 -0
  476. data/src/core/lib/iomgr/internal_errqueue.h +191 -0
  477. data/src/core/lib/iomgr/iocp_windows.cc +2 -2
  478. data/src/core/lib/iomgr/iomgr.cc +27 -13
  479. data/src/core/lib/iomgr/iomgr.h +19 -0
  480. data/src/core/lib/iomgr/iomgr_custom.cc +18 -2
  481. data/src/core/lib/iomgr/iomgr_custom.h +2 -0
  482. data/src/core/lib/iomgr/iomgr_internal.cc +14 -0
  483. data/src/core/lib/iomgr/iomgr_internal.h +16 -0
  484. data/src/core/lib/iomgr/iomgr_posix.cc +23 -1
  485. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +171 -0
  486. data/src/core/lib/iomgr/iomgr_uv.cc +3 -0
  487. data/src/core/lib/iomgr/iomgr_windows.cc +20 -1
  488. data/src/core/lib/iomgr/load_file.cc +1 -0
  489. data/src/core/lib/iomgr/lockfree_event.cc +16 -15
  490. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
  491. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
  492. data/src/core/lib/iomgr/polling_entity.h +4 -4
  493. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  494. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  495. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  496. data/src/core/lib/iomgr/pollset_windows.cc +16 -2
  497. data/src/core/lib/iomgr/port.h +49 -2
  498. data/src/core/lib/iomgr/python_util.h +46 -0
  499. data/src/core/lib/iomgr/resolve_address.h +5 -7
  500. data/src/core/lib/iomgr/resolve_address_custom.cc +36 -50
  501. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  502. data/src/core/lib/iomgr/resolve_address_posix.cc +22 -25
  503. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -26
  504. data/src/core/lib/iomgr/resource_quota.cc +175 -110
  505. data/src/core/lib/iomgr/resource_quota.h +30 -11
  506. data/src/core/lib/iomgr/sockaddr_utils.cc +26 -31
  507. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  508. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  509. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  510. data/src/core/lib/iomgr/socket_utils_common_posix.cc +145 -27
  511. data/src/core/lib/iomgr/socket_utils_posix.h +26 -0
  512. data/src/core/lib/iomgr/socket_windows.cc +21 -2
  513. data/src/core/lib/iomgr/socket_windows.h +9 -1
  514. data/src/core/lib/iomgr/tcp_client_cfstream.cc +215 -0
  515. data/src/core/lib/iomgr/tcp_client_custom.cc +19 -7
  516. data/src/core/lib/iomgr/tcp_client_posix.cc +40 -38
  517. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  518. data/src/core/lib/iomgr/tcp_client_windows.cc +11 -10
  519. data/src/core/lib/iomgr/tcp_custom.cc +37 -32
  520. data/src/core/lib/iomgr/tcp_custom.h +3 -0
  521. data/src/core/lib/iomgr/tcp_posix.cc +1196 -168
  522. data/src/core/lib/iomgr/tcp_posix.h +3 -0
  523. data/src/core/lib/iomgr/tcp_server.cc +5 -0
  524. data/src/core/lib/iomgr/tcp_server.h +21 -0
  525. data/src/core/lib/iomgr/tcp_server_custom.cc +43 -30
  526. data/src/core/lib/iomgr/tcp_server_posix.cc +97 -21
  527. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -0
  528. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -16
  529. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  530. data/src/core/lib/iomgr/tcp_server_windows.cc +19 -15
  531. data/src/core/lib/iomgr/tcp_uv.cc +8 -9
  532. data/src/core/lib/iomgr/tcp_windows.cc +110 -48
  533. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  534. data/src/core/lib/iomgr/timer.h +2 -1
  535. data/src/core/lib/iomgr/timer_custom.cc +7 -5
  536. data/src/core/lib/iomgr/timer_generic.cc +42 -40
  537. data/src/core/lib/iomgr/timer_generic.h +39 -0
  538. data/src/core/lib/iomgr/timer_heap.cc +2 -2
  539. data/src/core/lib/iomgr/timer_heap.h +5 -6
  540. data/src/core/lib/iomgr/timer_manager.cc +34 -16
  541. data/src/core/lib/iomgr/timer_manager.h +4 -2
  542. data/src/core/lib/iomgr/udp_server.cc +31 -30
  543. data/src/core/lib/iomgr/udp_server.h +6 -12
  544. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -4
  545. data/src/core/lib/iomgr/wakeup_fd_posix.cc +1 -19
  546. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  547. data/src/core/lib/iomgr/work_serializer.h +65 -0
  548. data/src/core/lib/json/json.h +209 -68
  549. data/src/core/lib/json/json_reader.cc +511 -319
  550. data/src/core/lib/json/json_writer.cc +202 -110
  551. data/src/core/lib/profiling/basic_timers.cc +12 -6
  552. data/src/core/lib/security/context/security_context.cc +92 -119
  553. data/src/core/lib/security/context/security_context.h +79 -48
  554. data/src/core/lib/security/credentials/alts/alts_credentials.cc +39 -48
  555. data/src/core/lib/security/credentials/alts/alts_credentials.h +37 -10
  556. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  557. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  558. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +45 -57
  559. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +2 -1
  560. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +3 -2
  561. data/src/core/lib/security/credentials/composite/composite_credentials.cc +119 -159
  562. data/src/core/lib/security/credentials/composite/composite_credentials.h +71 -24
  563. data/src/core/lib/security/credentials/credentials.cc +18 -142
  564. data/src/core/lib/security/credentials/credentials.h +141 -105
  565. data/src/core/lib/security/credentials/fake/fake_credentials.cc +48 -72
  566. data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -5
  567. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +186 -99
  568. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +32 -6
  569. data/src/core/lib/security/credentials/iam/iam_credentials.cc +33 -39
  570. data/src/core/lib/security/credentials/iam/iam_credentials.h +22 -4
  571. data/src/core/lib/security/credentials/jwt/json_token.cc +32 -58
  572. data/src/core/lib/security/credentials/jwt/json_token.h +5 -7
  573. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +70 -88
  574. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +41 -10
  575. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +159 -170
  576. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -5
  577. data/src/core/lib/security/credentials/local/local_credentials.cc +21 -34
  578. data/src/core/lib/security/credentials/local/local_credentials.h +32 -11
  579. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +438 -203
  580. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +98 -33
  581. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +89 -91
  582. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +43 -17
  583. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +84 -83
  584. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +60 -15
  585. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +245 -0
  586. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +313 -0
  587. data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
  588. data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
  589. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +301 -0
  590. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +76 -0
  591. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +324 -0
  592. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +45 -0
  593. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
  594. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +15 -9
  595. data/src/core/lib/security/security_connector/local/local_security_connector.cc +281 -0
  596. data/src/core/lib/security/security_connector/local/local_security_connector.h +59 -0
  597. data/src/core/lib/security/security_connector/security_connector.cc +40 -1158
  598. data/src/core/lib/security/security_connector/security_connector.h +100 -209
  599. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +439 -0
  600. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +77 -0
  601. data/src/core/lib/security/security_connector/ssl_utils.cc +563 -0
  602. data/src/core/lib/security/security_connector/ssl_utils.h +184 -0
  603. data/src/core/lib/security/security_connector/ssl_utils_config.cc +32 -0
  604. data/src/core/lib/security/security_connector/ssl_utils_config.h +30 -0
  605. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +603 -0
  606. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
  607. data/src/core/lib/security/transport/auth_filters.h +5 -2
  608. data/src/core/lib/security/transport/client_auth_filter.cc +164 -116
  609. data/src/core/lib/security/transport/secure_endpoint.cc +70 -53
  610. data/src/core/lib/security/transport/security_handshaker.cc +340 -297
  611. data/src/core/lib/security/transport/security_handshaker.h +14 -3
  612. data/src/core/lib/security/transport/server_auth_filter.cc +115 -55
  613. data/src/core/lib/security/transport/target_authority_table.h +1 -1
  614. data/src/core/lib/security/util/json_util.cc +34 -13
  615. data/src/core/lib/security/util/json_util.h +5 -3
  616. data/src/core/lib/slice/b64.cc +3 -4
  617. data/src/core/lib/slice/b64.h +3 -4
  618. data/src/core/lib/slice/percent_encoding.cc +3 -3
  619. data/src/core/lib/slice/percent_encoding.h +3 -3
  620. data/src/core/lib/slice/slice.cc +219 -153
  621. data/src/core/lib/slice/slice_buffer.cc +60 -26
  622. data/src/core/lib/slice/slice_hash_table.h +9 -15
  623. data/src/core/lib/slice/slice_intern.cc +186 -143
  624. data/src/core/lib/slice/slice_internal.h +318 -3
  625. data/src/core/lib/slice/slice_string_helpers.cc +10 -1
  626. data/src/core/lib/slice/slice_string_helpers.h +3 -1
  627. data/src/core/lib/slice/slice_utils.h +200 -0
  628. data/src/core/lib/slice/slice_weak_hash_table.h +10 -17
  629. data/src/core/lib/surface/api_trace.h +1 -1
  630. data/src/core/lib/surface/byte_buffer_reader.cc +15 -43
  631. data/src/core/lib/surface/call.cc +419 -438
  632. data/src/core/lib/surface/call.h +14 -5
  633. data/src/core/lib/surface/call_details.cc +0 -1
  634. data/src/core/lib/surface/call_log_batch.cc +51 -60
  635. data/src/core/lib/surface/channel.cc +205 -144
  636. data/src/core/lib/surface/channel.h +85 -14
  637. data/src/core/lib/surface/channel_init.h +5 -0
  638. data/src/core/lib/surface/channel_ping.cc +3 -4
  639. data/src/core/lib/surface/completion_queue.cc +322 -281
  640. data/src/core/lib/surface/completion_queue.h +7 -21
  641. data/src/core/lib/surface/completion_queue_factory.cc +4 -4
  642. data/src/core/lib/surface/event_string.cc +18 -25
  643. data/src/core/lib/surface/event_string.h +3 -1
  644. data/src/core/lib/surface/init.cc +86 -31
  645. data/src/core/lib/surface/init.h +1 -0
  646. data/src/core/lib/surface/init_secure.cc +4 -4
  647. data/src/core/lib/surface/lame_client.cc +46 -35
  648. data/src/core/lib/surface/server.cc +815 -476
  649. data/src/core/lib/surface/server.h +50 -9
  650. data/src/core/lib/surface/validate_metadata.cc +18 -8
  651. data/src/core/lib/surface/validate_metadata.h +13 -2
  652. data/src/core/lib/surface/version.cc +2 -2
  653. data/src/core/lib/transport/bdp_estimator.cc +3 -3
  654. data/src/core/lib/transport/bdp_estimator.h +2 -2
  655. data/src/core/lib/transport/byte_stream.cc +5 -7
  656. data/src/core/lib/transport/byte_stream.h +13 -12
  657. data/src/core/lib/transport/connectivity_state.cc +114 -129
  658. data/src/core/lib/transport/connectivity_state.h +102 -58
  659. data/src/core/lib/transport/error_utils.cc +25 -2
  660. data/src/core/lib/transport/metadata.cc +428 -288
  661. data/src/core/lib/transport/metadata.h +307 -26
  662. data/src/core/lib/transport/metadata_batch.cc +81 -18
  663. data/src/core/lib/transport/metadata_batch.h +47 -6
  664. data/src/core/lib/transport/static_metadata.cc +1150 -521
  665. data/src/core/lib/transport/static_metadata.h +311 -317
  666. data/src/core/lib/transport/status_conversion.cc +7 -15
  667. data/src/core/lib/transport/status_metadata.cc +11 -4
  668. data/src/core/lib/transport/status_metadata.h +18 -0
  669. data/src/core/lib/transport/timeout_encoding.cc +8 -1
  670. data/src/core/lib/transport/timeout_encoding.h +4 -3
  671. data/src/core/lib/transport/transport.cc +49 -80
  672. data/src/core/lib/transport/transport.h +132 -54
  673. data/src/core/lib/transport/transport_impl.h +1 -1
  674. data/src/core/lib/transport/transport_op_string.cc +67 -105
  675. data/src/core/lib/uri/uri_parser.cc +314 -0
  676. data/src/core/lib/uri/uri_parser.h +49 -0
  677. data/src/core/plugin_registry/grpc_plugin_registry.cc +32 -4
  678. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  679. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  680. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +715 -144
  681. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +49 -35
  682. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +83 -0
  683. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +73 -0
  684. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +373 -217
  685. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +45 -24
  686. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +43 -10
  687. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +13 -7
  688. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +4 -3
  689. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +75 -48
  690. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +35 -27
  691. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +2 -2
  692. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  693. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +13 -3
  694. data/src/core/tsi/fake_transport_security.cc +26 -25
  695. data/src/core/tsi/fake_transport_security.h +2 -0
  696. data/src/core/tsi/local_transport_security.cc +8 -6
  697. data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -6
  698. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -3
  699. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +14 -11
  700. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -13
  701. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +2 -3
  702. data/src/core/tsi/ssl_transport_security.cc +289 -125
  703. data/src/core/tsi/ssl_transport_security.h +52 -13
  704. data/src/core/tsi/ssl_types.h +0 -2
  705. data/src/core/tsi/transport_security.cc +31 -1
  706. data/src/core/tsi/transport_security.h +8 -10
  707. data/src/core/tsi/transport_security_grpc.cc +7 -0
  708. data/src/core/tsi/transport_security_grpc.h +8 -3
  709. data/src/core/tsi/transport_security_interface.h +15 -3
  710. data/src/ruby/bin/math_pb.rb +23 -21
  711. data/src/ruby/ext/grpc/ext-export.clang +1 -0
  712. data/src/ruby/ext/grpc/ext-export.gcc +6 -0
  713. data/src/ruby/ext/grpc/extconf.rb +18 -4
  714. data/src/ruby/ext/grpc/rb_call.c +11 -2
  715. data/src/ruby/ext/grpc/rb_call_credentials.c +12 -6
  716. data/src/ruby/ext/grpc/rb_channel.c +18 -11
  717. data/src/ruby/ext/grpc/rb_channel_credentials.c +8 -4
  718. data/src/ruby/ext/grpc/rb_compression_options.c +9 -7
  719. data/src/ruby/ext/grpc/rb_enable_cpp.cc +22 -0
  720. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  721. data/src/ruby/ext/grpc/rb_grpc.c +48 -60
  722. data/src/ruby/ext/grpc/rb_grpc.h +5 -1
  723. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +42 -6
  724. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +67 -13
  725. data/src/ruby/ext/grpc/rb_server.c +10 -4
  726. data/src/ruby/lib/grpc.rb +2 -0
  727. data/src/ruby/lib/grpc/core/status_codes.rb +135 -0
  728. data/src/ruby/lib/grpc/errors.rb +122 -46
  729. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  730. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -2
  731. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  732. data/src/ruby/lib/grpc/generic/rpc_desc.rb +3 -3
  733. data/src/ruby/lib/grpc/generic/rpc_server.rb +64 -4
  734. data/src/ruby/lib/grpc/generic/service.rb +6 -5
  735. data/src/ruby/lib/grpc/google_rpc_status_utils.rb +9 -4
  736. data/src/ruby/lib/grpc/grpc.rb +1 -1
  737. data/src/ruby/lib/grpc/structs.rb +15 -0
  738. data/src/ruby/lib/grpc/version.rb +1 -1
  739. data/src/ruby/pb/README.md +1 -1
  740. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  741. data/src/ruby/pb/grpc/health/checker.rb +2 -3
  742. data/src/ruby/pb/grpc/health/v1/health_pb.rb +16 -13
  743. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +18 -0
  744. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +4 -2
  745. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +92 -69
  746. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -0
  747. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  748. data/src/ruby/spec/channel_spec.rb +44 -0
  749. data/src/ruby/spec/client_auth_spec.rb +5 -5
  750. data/src/ruby/spec/debug_message_spec.rb +134 -0
  751. data/src/ruby/spec/errors_spec.rb +142 -0
  752. data/src/ruby/spec/generic/client_stub_spec.rb +13 -9
  753. data/src/ruby/spec/generic/rpc_server_spec.rb +25 -3
  754. data/src/ruby/spec/generic/service_spec.rb +2 -0
  755. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  756. data/src/ruby/spec/pb/codegen/grpc/testing/package_options.proto +28 -0
  757. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import.proto +22 -0
  758. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +39 -0
  759. data/src/ruby/spec/pb/codegen/package_option_spec.rb +78 -0
  760. data/src/ruby/spec/support/services.rb +29 -22
  761. data/src/ruby/spec/testdata/ca.pem +18 -13
  762. data/src/ruby/spec/testdata/client.key +26 -14
  763. data/src/ruby/spec/testdata/client.pem +18 -12
  764. data/src/ruby/spec/testdata/server1.key +26 -14
  765. data/src/ruby/spec/testdata/server1.pem +20 -14
  766. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  767. data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
  768. data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
  769. data/third_party/abseil-cpp/absl/base/casts.h +184 -0
  770. data/third_party/abseil-cpp/absl/base/config.h +671 -0
  771. data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  772. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
  773. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
  774. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  775. data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
  776. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
  777. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
  778. data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
  779. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  780. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  781. data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
  782. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  783. data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
  784. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
  785. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  786. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
  787. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
  788. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  789. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
  790. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
  791. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  792. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
  793. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  794. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  795. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
  796. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
  797. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
  798. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
  799. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
  800. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
  801. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
  802. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
  803. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  804. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
  805. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
  806. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
  807. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
  808. data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
  809. data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
  810. data/third_party/abseil-cpp/absl/base/macros.h +220 -0
  811. data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
  812. data/third_party/abseil-cpp/absl/base/options.h +211 -0
  813. data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
  814. data/third_party/abseil-cpp/absl/base/port.h +26 -0
  815. data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
  816. data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
  817. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
  818. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
  819. data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
  820. data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
  821. data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
  822. data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
  823. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
  824. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
  825. data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
  826. data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
  827. data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
  828. data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
  829. data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
  830. data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
  831. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
  832. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  833. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  834. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  835. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  836. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
  837. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
  838. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
  839. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  840. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
  841. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
  842. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
  843. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  844. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  845. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  846. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  847. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  848. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  849. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  850. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  851. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  852. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  853. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  854. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  855. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  856. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  857. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
  858. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
  859. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  860. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  861. data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
  862. data/third_party/abseil-cpp/absl/strings/match.h +90 -0
  863. data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
  864. data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
  865. data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
  866. data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
  867. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  868. data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
  869. data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
  870. data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
  871. data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
  872. data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
  873. data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
  874. data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
  875. data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
  876. data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
  877. data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
  878. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  879. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  880. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  881. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  882. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  883. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  884. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  885. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  886. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  887. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  888. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  889. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  890. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  891. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  892. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  893. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  894. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  895. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  896. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  897. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  898. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  899. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  900. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  901. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  902. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  903. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  904. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  905. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  906. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  907. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  908. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  909. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  910. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  911. data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
  912. data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
  913. data/third_party/abseil-cpp/absl/types/optional.h +776 -0
  914. data/third_party/abseil-cpp/absl/types/span.h +713 -0
  915. data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
  916. data/third_party/boringssl-with-bazel/err_data.c +1439 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  918. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +123 -0
  919. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +93 -0
  920. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +87 -0
  921. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +195 -0
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  923. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +88 -0
  924. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +420 -0
  925. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +305 -0
  926. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +286 -0
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  929. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +313 -0
  930. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  934. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +446 -0
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  940. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  942. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +664 -0
  943. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  948. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +466 -0
  949. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +700 -0
  950. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  951. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
  952. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
  953. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
  954. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  955. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  956. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
  957. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  958. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +206 -0
  959. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +118 -0
  960. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  961. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +470 -0
  962. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
  963. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  964. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +265 -0
  965. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
  966. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
  967. data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +96 -0
  968. data/third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c +155 -0
  969. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +184 -0
  970. data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +45 -0
  971. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +143 -0
  972. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
  973. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesccm.c +447 -0
  974. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +283 -0
  975. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
  976. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +418 -0
  977. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  978. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  979. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  980. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +688 -0
  981. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  982. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +491 -0
  983. data/third_party/boringssl-with-bazel/src/crypto/cmac/cmac.c +278 -0
  984. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +810 -0
  985. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  986. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  987. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  988. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  989. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
  990. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.h +201 -0
  991. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  992. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
  993. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  994. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
  995. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
  996. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
  997. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
  998. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
  999. data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
  1000. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
  1001. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  1002. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  1003. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  1004. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
  1005. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  1006. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +574 -0
  1007. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
  1008. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  1009. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  1010. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
  1011. data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +267 -0
  1012. data/third_party/boringssl-with-bazel/src/crypto/engine/engine.c +99 -0
  1013. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
  1014. data/third_party/boringssl-with-bazel/src/crypto/err/internal.h +58 -0
  1015. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  1016. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +443 -0
  1017. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +388 -0
  1018. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +484 -0
  1019. data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +269 -0
  1020. data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +273 -0
  1021. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
  1022. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +255 -0
  1023. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +104 -0
  1024. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +221 -0
  1025. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
  1026. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +194 -0
  1027. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +110 -0
  1028. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
  1029. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  1030. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  1031. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +213 -0
  1032. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  1033. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  1034. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  1035. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  1036. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
  1037. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +236 -0
  1038. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +106 -0
  1039. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
  1040. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  1041. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  1042. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +445 -0
  1043. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  1044. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +200 -0
  1045. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +236 -0
  1046. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +886 -0
  1047. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +87 -0
  1048. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
  1049. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +378 -0
  1050. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  1051. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  1052. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +694 -0
  1053. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  1054. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
  1055. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +186 -0
  1056. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
  1057. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
  1058. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +341 -0
  1059. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +226 -0
  1060. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +104 -0
  1061. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +364 -0
  1062. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  1063. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  1064. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +620 -0
  1065. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
  1066. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_des.c +237 -0
  1067. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +128 -0
  1068. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +89 -0
  1069. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  1070. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  1071. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +271 -0
  1072. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
  1073. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  1074. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +268 -0
  1075. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
  1076. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
  1077. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
  1078. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
  1079. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +775 -0
  1080. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
  1081. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1178 -0
  1082. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  1083. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +632 -0
  1084. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.h +153 -0
  1085. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  1086. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  1087. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  1088. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
  1089. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  1090. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +255 -0
  1091. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
  1092. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  1093. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
  1094. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +32 -0
  1095. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  1096. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +29 -0
  1097. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +256 -0
  1098. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/internal.h +37 -0
  1099. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +301 -0
  1100. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +167 -0
  1101. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +202 -0
  1102. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +200 -0
  1103. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
  1104. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  1105. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
  1106. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +96 -0
  1107. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  1108. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +202 -0
  1109. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  1110. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  1111. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  1112. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +163 -0
  1113. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
  1114. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
  1115. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
  1116. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
  1117. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +695 -0
  1118. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
  1119. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
  1120. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +654 -0
  1121. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +53 -0
  1122. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  1123. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +371 -0
  1124. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +343 -0
  1125. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
  1126. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  1127. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  1128. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  1129. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
  1130. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
  1131. data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
  1132. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +348 -0
  1133. data/third_party/boringssl-with-bazel/src/crypto/mem.c +359 -0
  1134. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
  1135. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
  1136. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  1137. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +261 -0
  1138. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
  1139. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
  1140. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
  1141. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
  1142. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
  1143. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  1144. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  1145. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  1146. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +159 -0
  1147. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
  1148. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +131 -0
  1149. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +316 -0
  1150. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +530 -0
  1151. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1305 -0
  1152. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  1153. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
  1154. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
  1155. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
  1156. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +45 -0
  1157. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
  1158. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
  1159. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  1160. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +30 -0
  1161. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  1162. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
  1163. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  1164. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  1165. data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +53 -0
  1166. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  1167. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c +22 -0
  1168. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
  1169. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +431 -0
  1170. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  1171. data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +59 -0
  1172. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
  1173. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
  1174. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  1175. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  1176. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  1177. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  1178. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  1179. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +653 -0
  1180. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
  1181. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  1182. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +842 -0
  1183. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
  1184. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
  1185. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  1186. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  1187. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  1188. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  1189. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +125 -0
  1190. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +244 -0
  1191. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +544 -0
  1192. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  1193. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  1194. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  1195. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  1196. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +476 -0
  1197. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  1198. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +103 -0
  1199. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  1200. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +834 -0
  1201. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
  1202. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
  1203. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +341 -0
  1204. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +185 -0
  1205. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +326 -0
  1206. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +204 -0
  1207. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  1208. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2487 -0
  1209. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
  1210. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +210 -0
  1211. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
  1212. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  1213. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  1214. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  1215. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
  1216. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  1217. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  1218. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  1219. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  1220. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  1221. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  1222. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  1223. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  1224. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  1225. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  1226. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  1227. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +334 -0
  1228. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  1229. data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +141 -0
  1230. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +56 -0
  1231. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +286 -0
  1232. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  1233. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  1234. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  1235. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  1236. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +189 -0
  1237. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +842 -0
  1238. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +207 -0
  1239. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  1240. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
  1241. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  1242. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  1243. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +463 -0
  1244. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +503 -0
  1245. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  1246. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
  1247. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  1248. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +246 -0
  1249. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  1250. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
  1251. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  1252. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +371 -0
  1253. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  1254. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +68 -0
  1255. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +288 -0
  1256. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  1257. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  1258. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  1259. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  1260. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  1261. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +843 -0
  1262. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +155 -0
  1263. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  1264. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
  1265. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +459 -0
  1266. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +195 -0
  1267. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  1268. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +911 -0
  1269. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  1270. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  1271. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
  1272. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +190 -0
  1273. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +933 -0
  1274. data/third_party/boringssl-with-bazel/src/include/openssl/blowfish.h +93 -0
  1275. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
  1276. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
  1277. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  1278. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
  1279. data/third_party/boringssl-with-bazel/src/include/openssl/cast.h +96 -0
  1280. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  1281. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +638 -0
  1282. data/third_party/boringssl-with-bazel/src/include/openssl/cmac.h +91 -0
  1283. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +180 -0
  1284. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +212 -0
  1285. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
  1286. data/third_party/boringssl-with-bazel/src/include/openssl/curve25519.h +201 -0
  1287. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  1288. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
  1289. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
  1290. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
  1291. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  1292. data/third_party/boringssl-with-bazel/src/include/openssl/e_os2.h +18 -0
  1293. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
  1294. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
  1295. data/third_party/boringssl-with-bazel/src/include/openssl/ecdh.h +118 -0
  1296. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
  1297. data/third_party/boringssl-with-bazel/src/include/openssl/engine.h +109 -0
  1298. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
  1299. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1050 -0
  1300. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  1301. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  1302. data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +186 -0
  1303. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +100 -0
  1304. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  1305. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +282 -0
  1306. data/third_party/boringssl-with-bazel/src/include/openssl/md4.h +108 -0
  1307. data/third_party/boringssl-with-bazel/src/include/openssl/md5.h +109 -0
  1308. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
  1309. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
  1310. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +236 -0
  1311. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  1312. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  1313. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  1314. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  1315. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  1316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +435 -0
  1317. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  1318. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +215 -0
  1319. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +269 -0
  1320. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
  1321. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +102 -0
  1322. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
  1323. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  1324. data/third_party/boringssl-with-bazel/src/include/openssl/ripemd.h +108 -0
  1325. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
  1326. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  1327. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
  1328. data/third_party/boringssl-with-bazel/src/include/openssl/siphash.h +37 -0
  1329. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +199 -0
  1330. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  1331. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5198 -0
  1332. data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +333 -0
  1333. data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +542 -0
  1334. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +191 -0
  1335. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +632 -0
  1336. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  1337. data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +90 -0
  1338. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1207 -0
  1339. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
  1340. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +831 -0
  1341. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  1342. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
  1343. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
  1344. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
  1345. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +232 -0
  1346. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
  1347. data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +353 -0
  1348. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
  1349. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +703 -0
  1350. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
  1351. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1805 -0
  1352. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3572 -0
  1353. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
  1354. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
  1355. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
  1356. data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +432 -0
  1357. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
  1358. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
  1359. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1019 -0
  1360. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
  1361. data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +585 -0
  1362. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +397 -0
  1363. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3015 -0
  1364. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
  1365. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1333 -0
  1366. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
  1367. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +277 -0
  1368. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
  1369. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +1358 -0
  1370. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +365 -0
  1371. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3870 -0
  1372. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
  1373. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1017 -0
  1374. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
  1375. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1096 -0
  1376. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
  1377. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +703 -0
  1378. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
  1379. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
  1380. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  1381. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
  1382. data/third_party/cares/cares/ares.h +12 -0
  1383. data/third_party/cares/cares/ares_create_query.c +5 -1
  1384. data/third_party/cares/cares/ares_data.c +74 -73
  1385. data/third_party/cares/cares/ares_destroy.c +6 -1
  1386. data/third_party/cares/cares/ares_gethostbyaddr.c +5 -5
  1387. data/third_party/cares/cares/ares_gethostbyname.c +15 -4
  1388. data/third_party/cares/cares/ares_getnameinfo.c +11 -0
  1389. data/third_party/cares/cares/ares_init.c +274 -173
  1390. data/third_party/cares/cares/ares_library_init.c +21 -3
  1391. data/third_party/cares/cares/ares_options.c +6 -2
  1392. data/third_party/cares/cares/ares_parse_naptr_reply.c +7 -6
  1393. data/third_party/cares/cares/ares_parse_ptr_reply.c +4 -2
  1394. data/third_party/cares/cares/ares_platform.c +7 -0
  1395. data/third_party/cares/cares/ares_private.h +19 -11
  1396. data/third_party/cares/cares/ares_process.c +27 -2
  1397. data/third_party/cares/cares/ares_rules.h +1 -1
  1398. data/third_party/cares/cares/ares_search.c +7 -0
  1399. data/third_party/cares/cares/ares_send.c +6 -0
  1400. data/third_party/cares/cares/ares_strsplit.c +174 -0
  1401. data/third_party/cares/cares/ares_strsplit.h +43 -0
  1402. data/third_party/cares/cares/ares_version.h +4 -4
  1403. data/third_party/cares/cares/config-win32.h +1 -1
  1404. data/third_party/cares/cares/inet_ntop.c +2 -3
  1405. data/third_party/cares/config_darwin/ares_config.h +3 -0
  1406. data/third_party/cares/config_freebsd/ares_config.h +3 -0
  1407. data/third_party/cares/config_linux/ares_config.h +3 -0
  1408. data/third_party/cares/config_openbsd/ares_config.h +3 -0
  1409. data/third_party/upb/upb/decode.c +609 -0
  1410. data/third_party/upb/upb/decode.h +21 -0
  1411. data/third_party/upb/upb/encode.c +378 -0
  1412. data/third_party/upb/upb/encode.h +21 -0
  1413. data/third_party/upb/upb/generated_util.h +105 -0
  1414. data/third_party/upb/upb/msg.c +111 -0
  1415. data/third_party/upb/upb/msg.h +69 -0
  1416. data/third_party/upb/upb/port.c +26 -0
  1417. data/third_party/upb/upb/port_def.inc +150 -0
  1418. data/third_party/upb/upb/port_undef.inc +21 -0
  1419. data/third_party/upb/upb/table.c +913 -0
  1420. data/third_party/upb/upb/table.int.h +507 -0
  1421. data/third_party/upb/upb/upb.c +261 -0
  1422. data/third_party/upb/upb/upb.h +364 -0
  1423. metadata +968 -542
  1424. data/src/boringssl/err_data.c +0 -1362
  1425. data/src/core/ext/filters/client_channel/connector.cc +0 -41
  1426. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.c +0 -19
  1427. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/duration.pb.h +0 -54
  1428. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.c +0 -19
  1429. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/google/protobuf/timestamp.pb.h +0 -54
  1430. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +0 -89
  1431. data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +0 -164
  1432. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +0 -163
  1433. data/src/core/ext/filters/client_channel/method_params.cc +0 -178
  1434. data/src/core/ext/filters/client_channel/method_params.h +0 -78
  1435. data/src/core/ext/filters/client_channel/proxy_mapper.cc +0 -48
  1436. data/src/core/ext/filters/client_channel/subchannel_index.cc +0 -254
  1437. data/src/core/ext/filters/client_channel/subchannel_index.h +0 -79
  1438. data/src/core/ext/filters/client_channel/uri_parser.cc +0 -314
  1439. data/src/core/ext/filters/client_channel/uri_parser.h +0 -50
  1440. data/src/core/lib/channel/handshaker_factory.cc +0 -41
  1441. data/src/core/lib/gpr/arena.cc +0 -145
  1442. data/src/core/lib/gpr/host_port.cc +0 -98
  1443. data/src/core/lib/gpr/host_port.h +0 -43
  1444. data/src/core/lib/gpr/mpscq.cc +0 -117
  1445. data/src/core/lib/gpr/mpscq.h +0 -86
  1446. data/src/core/lib/gprpp/abstract.h +0 -37
  1447. data/src/core/lib/gprpp/atomic_with_atm.h +0 -57
  1448. data/src/core/lib/gprpp/atomic_with_std.h +0 -35
  1449. data/src/core/lib/gprpp/inlined_vector.h +0 -186
  1450. data/src/core/lib/gprpp/mutex_lock.h +0 -42
  1451. data/src/core/lib/iomgr/ev_epollsig_linux.cc +0 -1743
  1452. data/src/core/lib/iomgr/ev_epollsig_linux.h +0 -35
  1453. data/src/core/lib/iomgr/network_status_tracker.cc +0 -36
  1454. data/src/core/lib/iomgr/network_status_tracker.h +0 -32
  1455. data/src/core/lib/iomgr/wakeup_fd_cv.cc +0 -107
  1456. data/src/core/lib/iomgr/wakeup_fd_cv.h +0 -69
  1457. data/src/core/lib/json/json.cc +0 -97
  1458. data/src/core/lib/json/json_common.h +0 -34
  1459. data/src/core/lib/json/json_reader.h +0 -146
  1460. data/src/core/lib/json/json_string.cc +0 -367
  1461. data/src/core/lib/json/json_writer.h +0 -84
  1462. data/src/core/lib/security/security_connector/alts_security_connector.cc +0 -288
  1463. data/src/core/lib/security/security_connector/alts_security_connector.h +0 -69
  1464. data/src/core/lib/security/security_connector/local_security_connector.cc +0 -245
  1465. data/src/core/lib/security/security_connector/local_security_connector.h +0 -58
  1466. data/src/core/lib/transport/service_config.cc +0 -106
  1467. data/src/core/lib/transport/service_config.h +0 -249
  1468. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +0 -520
  1469. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +0 -323
  1470. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +0 -143
  1471. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +0 -149
  1472. data/src/core/tsi/alts/handshaker/alts_tsi_event.cc +0 -73
  1473. data/src/core/tsi/alts/handshaker/alts_tsi_event.h +0 -93
  1474. data/src/core/tsi/alts/handshaker/altscontext.pb.c +0 -47
  1475. data/src/core/tsi/alts/handshaker/altscontext.pb.h +0 -63
  1476. data/src/core/tsi/alts/handshaker/handshaker.pb.c +0 -122
  1477. data/src/core/tsi/alts/handshaker/handshaker.pb.h +0 -254
  1478. data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +0 -49
  1479. data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +0 -78
  1480. data/src/core/tsi/alts_transport_security.cc +0 -63
  1481. data/src/core/tsi/alts_transport_security.h +0 -47
  1482. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3006
  1483. data/third_party/boringssl/crypto/asn1/a_bool.c +0 -110
  1484. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +0 -297
  1485. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -111
  1486. data/third_party/boringssl/crypto/asn1/a_enum.c +0 -195
  1487. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +0 -150
  1488. data/third_party/boringssl/crypto/asn1/a_int.c +0 -479
  1489. data/third_party/boringssl/crypto/asn1/a_mbstr.c +0 -411
  1490. data/third_party/boringssl/crypto/asn1/a_object.c +0 -275
  1491. data/third_party/boringssl/crypto/asn1/a_strnid.c +0 -312
  1492. data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
  1493. data/third_party/boringssl/crypto/asn1/asn1_lib.c +0 -442
  1494. data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -662
  1495. data/third_party/boringssl/crypto/base64/base64.c +0 -466
  1496. data/third_party/boringssl/crypto/bio/bio.c +0 -636
  1497. data/third_party/boringssl/crypto/bio/connect.c +0 -542
  1498. data/third_party/boringssl/crypto/bio/fd.c +0 -276
  1499. data/third_party/boringssl/crypto/bio/file.c +0 -315
  1500. data/third_party/boringssl/crypto/bio/pair.c +0 -489
  1501. data/third_party/boringssl/crypto/bio/socket.c +0 -202
  1502. data/third_party/boringssl/crypto/bio/socket_helper.c +0 -114
  1503. data/third_party/boringssl/crypto/bn_extra/convert.c +0 -466
  1504. data/third_party/boringssl/crypto/buf/buf.c +0 -231
  1505. data/third_party/boringssl/crypto/bytestring/ber.c +0 -261
  1506. data/third_party/boringssl/crypto/bytestring/cbb.c +0 -668
  1507. data/third_party/boringssl/crypto/bytestring/cbs.c +0 -618
  1508. data/third_party/boringssl/crypto/bytestring/internal.h +0 -75
  1509. data/third_party/boringssl/crypto/chacha/chacha.c +0 -167
  1510. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +0 -114
  1511. data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
  1512. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +0 -203
  1513. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +0 -281
  1514. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -867
  1515. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +0 -326
  1516. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  1517. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +0 -680
  1518. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +0 -482
  1519. data/third_party/boringssl/crypto/cmac/cmac.c +0 -241
  1520. data/third_party/boringssl/crypto/conf/conf.c +0 -803
  1521. data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -363
  1522. data/third_party/boringssl/crypto/cpu-intel.c +0 -288
  1523. data/third_party/boringssl/crypto/crypto.c +0 -198
  1524. data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
  1525. data/third_party/boringssl/crypto/dh/check.c +0 -217
  1526. data/third_party/boringssl/crypto/dh/dh.c +0 -519
  1527. data/third_party/boringssl/crypto/dsa/dsa.c +0 -946
  1528. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +0 -562
  1529. data/third_party/boringssl/crypto/ecdh/ecdh.c +0 -162
  1530. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +0 -275
  1531. data/third_party/boringssl/crypto/engine/engine.c +0 -98
  1532. data/third_party/boringssl/crypto/err/err.c +0 -847
  1533. data/third_party/boringssl/crypto/err/internal.h +0 -58
  1534. data/third_party/boringssl/crypto/evp/evp.c +0 -362
  1535. data/third_party/boringssl/crypto/evp/evp_asn1.c +0 -337
  1536. data/third_party/boringssl/crypto/evp/evp_ctx.c +0 -446
  1537. data/third_party/boringssl/crypto/evp/internal.h +0 -252
  1538. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +0 -268
  1539. data/third_party/boringssl/crypto/evp/p_ec.c +0 -239
  1540. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +0 -256
  1541. data/third_party/boringssl/crypto/evp/p_ed25519.c +0 -71
  1542. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +0 -190
  1543. data/third_party/boringssl/crypto/evp/p_rsa.c +0 -634
  1544. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +0 -189
  1545. data/third_party/boringssl/crypto/evp/scrypt.c +0 -209
  1546. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -1100
  1547. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -100
  1548. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +0 -138
  1549. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -112
  1550. data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -148
  1551. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +0 -428
  1552. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +0 -200
  1553. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +0 -303
  1554. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +0 -895
  1555. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1356
  1556. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -683
  1557. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -573
  1558. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -526
  1559. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +0 -185
  1560. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -876
  1561. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1154
  1562. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +0 -351
  1563. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +0 -231
  1564. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +0 -33
  1565. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +0 -364
  1566. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +0 -615
  1567. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1437
  1568. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +0 -233
  1569. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +0 -129
  1570. data/third_party/boringssl/crypto/fipsmodule/delocate.h +0 -88
  1571. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +0 -256
  1572. data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
  1573. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +0 -268
  1574. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -974
  1575. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -453
  1576. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -270
  1577. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -337
  1578. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -373
  1579. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1104
  1580. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9503
  1581. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -447
  1582. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +0 -117
  1583. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -1046
  1584. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +0 -104
  1585. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -354
  1586. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -458
  1587. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +0 -27
  1588. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +0 -254
  1589. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +0 -298
  1590. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +0 -211
  1591. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  1592. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +0 -234
  1593. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +0 -220
  1594. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -1063
  1595. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -388
  1596. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +0 -95
  1597. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +0 -202
  1598. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -92
  1599. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -358
  1600. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -302
  1601. data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
  1602. data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
  1603. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +0 -692
  1604. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -875
  1605. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1218
  1606. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +0 -581
  1607. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +0 -375
  1608. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +0 -337
  1609. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -608
  1610. data/third_party/boringssl/crypto/internal.h +0 -739
  1611. data/third_party/boringssl/crypto/lhash/lhash.c +0 -336
  1612. data/third_party/boringssl/crypto/mem.c +0 -235
  1613. data/third_party/boringssl/crypto/obj/obj.c +0 -554
  1614. data/third_party/boringssl/crypto/obj/obj_dat.h +0 -6244
  1615. data/third_party/boringssl/crypto/pem/pem_all.c +0 -262
  1616. data/third_party/boringssl/crypto/pem/pem_info.c +0 -379
  1617. data/third_party/boringssl/crypto/pem/pem_lib.c +0 -776
  1618. data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
  1619. data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
  1620. data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -227
  1621. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +0 -166
  1622. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -233
  1623. data/third_party/boringssl/crypto/pkcs8/internal.h +0 -120
  1624. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +0 -307
  1625. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +0 -513
  1626. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +0 -789
  1627. data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
  1628. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
  1629. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
  1630. data/third_party/boringssl/crypto/pool/internal.h +0 -45
  1631. data/third_party/boringssl/crypto/pool/pool.c +0 -200
  1632. data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -48
  1633. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +0 -43
  1634. data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
  1635. data/third_party/boringssl/crypto/refcount_lock.c +0 -53
  1636. data/third_party/boringssl/crypto/stack/stack.c +0 -380
  1637. data/third_party/boringssl/crypto/thread_none.c +0 -59
  1638. data/third_party/boringssl/crypto/thread_pthread.c +0 -206
  1639. data/third_party/boringssl/crypto/thread_win.c +0 -237
  1640. data/third_party/boringssl/crypto/x509/a_strex.c +0 -633
  1641. data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
  1642. data/third_party/boringssl/crypto/x509/asn1_gen.c +0 -841
  1643. data/third_party/boringssl/crypto/x509/by_dir.c +0 -451
  1644. data/third_party/boringssl/crypto/x509/by_file.c +0 -274
  1645. data/third_party/boringssl/crypto/x509/t_crl.c +0 -128
  1646. data/third_party/boringssl/crypto/x509/t_req.c +0 -246
  1647. data/third_party/boringssl/crypto/x509/t_x509.c +0 -547
  1648. data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
  1649. data/third_party/boringssl/crypto/x509/x509_def.c +0 -103
  1650. data/third_party/boringssl/crypto/x509/x509_lu.c +0 -725
  1651. data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
  1652. data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
  1653. data/third_party/boringssl/crypto/x509/x509_req.c +0 -322
  1654. data/third_party/boringssl/crypto/x509/x509_set.c +0 -164
  1655. data/third_party/boringssl/crypto/x509/x509_trs.c +0 -326
  1656. data/third_party/boringssl/crypto/x509/x509_txt.c +0 -205
  1657. data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2476
  1658. data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -670
  1659. data/third_party/boringssl/crypto/x509/x509cset.c +0 -170
  1660. data/third_party/boringssl/crypto/x509/x509name.c +0 -389
  1661. data/third_party/boringssl/crypto/x509/x_all.c +0 -501
  1662. data/third_party/boringssl/crypto/x509/x_x509.c +0 -328
  1663. data/third_party/boringssl/crypto/x509v3/ext_dat.h +0 -143
  1664. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +0 -284
  1665. data/third_party/boringssl/crypto/x509v3/pcy_node.c +0 -188
  1666. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +0 -840
  1667. data/third_party/boringssl/crypto/x509v3/v3_akey.c +0 -204
  1668. data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -623
  1669. data/third_party/boringssl/crypto/x509v3/v3_conf.c +0 -462
  1670. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +0 -502
  1671. data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
  1672. data/third_party/boringssl/crypto/x509v3/v3_genn.c +0 -251
  1673. data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
  1674. data/third_party/boringssl/crypto/x509v3/v3_lib.c +0 -370
  1675. data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -287
  1676. data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -866
  1677. data/third_party/boringssl/crypto/x509v3/v3_skey.c +0 -152
  1678. data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1352
  1679. data/third_party/boringssl/include/openssl/aead.h +0 -433
  1680. data/third_party/boringssl/include/openssl/aes.h +0 -170
  1681. data/third_party/boringssl/include/openssl/asn1.h +0 -981
  1682. data/third_party/boringssl/include/openssl/base.h +0 -457
  1683. data/third_party/boringssl/include/openssl/base64.h +0 -187
  1684. data/third_party/boringssl/include/openssl/bio.h +0 -902
  1685. data/third_party/boringssl/include/openssl/blowfish.h +0 -93
  1686. data/third_party/boringssl/include/openssl/bn.h +0 -1019
  1687. data/third_party/boringssl/include/openssl/buf.h +0 -137
  1688. data/third_party/boringssl/include/openssl/bytestring.h +0 -505
  1689. data/third_party/boringssl/include/openssl/cast.h +0 -96
  1690. data/third_party/boringssl/include/openssl/cipher.h +0 -608
  1691. data/third_party/boringssl/include/openssl/cmac.h +0 -87
  1692. data/third_party/boringssl/include/openssl/conf.h +0 -183
  1693. data/third_party/boringssl/include/openssl/cpu.h +0 -196
  1694. data/third_party/boringssl/include/openssl/crypto.h +0 -122
  1695. data/third_party/boringssl/include/openssl/curve25519.h +0 -201
  1696. data/third_party/boringssl/include/openssl/dh.h +0 -298
  1697. data/third_party/boringssl/include/openssl/digest.h +0 -316
  1698. data/third_party/boringssl/include/openssl/dsa.h +0 -435
  1699. data/third_party/boringssl/include/openssl/ec.h +0 -413
  1700. data/third_party/boringssl/include/openssl/ec_key.h +0 -342
  1701. data/third_party/boringssl/include/openssl/ecdh.h +0 -101
  1702. data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
  1703. data/third_party/boringssl/include/openssl/engine.h +0 -109
  1704. data/third_party/boringssl/include/openssl/err.h +0 -458
  1705. data/third_party/boringssl/include/openssl/evp.h +0 -873
  1706. data/third_party/boringssl/include/openssl/hmac.h +0 -186
  1707. data/third_party/boringssl/include/openssl/lhash.h +0 -174
  1708. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  1709. data/third_party/boringssl/include/openssl/md4.h +0 -106
  1710. data/third_party/boringssl/include/openssl/md5.h +0 -107
  1711. data/third_party/boringssl/include/openssl/mem.h +0 -156
  1712. data/third_party/boringssl/include/openssl/nid.h +0 -4242
  1713. data/third_party/boringssl/include/openssl/obj.h +0 -233
  1714. data/third_party/boringssl/include/openssl/pem.h +0 -397
  1715. data/third_party/boringssl/include/openssl/pkcs7.h +0 -82
  1716. data/third_party/boringssl/include/openssl/pkcs8.h +0 -230
  1717. data/third_party/boringssl/include/openssl/poly1305.h +0 -51
  1718. data/third_party/boringssl/include/openssl/pool.h +0 -91
  1719. data/third_party/boringssl/include/openssl/rand.h +0 -125
  1720. data/third_party/boringssl/include/openssl/ripemd.h +0 -107
  1721. data/third_party/boringssl/include/openssl/rsa.h +0 -756
  1722. data/third_party/boringssl/include/openssl/sha.h +0 -256
  1723. data/third_party/boringssl/include/openssl/span.h +0 -191
  1724. data/third_party/boringssl/include/openssl/ssl.h +0 -4740
  1725. data/third_party/boringssl/include/openssl/ssl3.h +0 -332
  1726. data/third_party/boringssl/include/openssl/stack.h +0 -485
  1727. data/third_party/boringssl/include/openssl/thread.h +0 -191
  1728. data/third_party/boringssl/include/openssl/tls1.h +0 -618
  1729. data/third_party/boringssl/include/openssl/type_check.h +0 -91
  1730. data/third_party/boringssl/include/openssl/x509.h +0 -1180
  1731. data/third_party/boringssl/include/openssl/x509_vfy.h +0 -614
  1732. data/third_party/boringssl/include/openssl/x509v3.h +0 -827
  1733. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
  1734. data/third_party/boringssl/ssl/d1_both.cc +0 -851
  1735. data/third_party/boringssl/ssl/d1_lib.cc +0 -267
  1736. data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
  1737. data/third_party/boringssl/ssl/d1_srtp.cc +0 -232
  1738. data/third_party/boringssl/ssl/dtls_method.cc +0 -193
  1739. data/third_party/boringssl/ssl/dtls_record.cc +0 -353
  1740. data/third_party/boringssl/ssl/handoff.cc +0 -285
  1741. data/third_party/boringssl/ssl/handshake.cc +0 -630
  1742. data/third_party/boringssl/ssl/handshake_client.cc +0 -1842
  1743. data/third_party/boringssl/ssl/handshake_server.cc +0 -1674
  1744. data/third_party/boringssl/ssl/internal.h +0 -3064
  1745. data/third_party/boringssl/ssl/s3_both.cc +0 -585
  1746. data/third_party/boringssl/ssl/s3_lib.cc +0 -226
  1747. data/third_party/boringssl/ssl/s3_pkt.cc +0 -425
  1748. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +0 -412
  1749. data/third_party/boringssl/ssl/ssl_asn1.cc +0 -844
  1750. data/third_party/boringssl/ssl/ssl_buffer.cc +0 -286
  1751. data/third_party/boringssl/ssl/ssl_cert.cc +0 -913
  1752. data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1781
  1753. data/third_party/boringssl/ssl/ssl_file.cc +0 -583
  1754. data/third_party/boringssl/ssl/ssl_key_share.cc +0 -252
  1755. data/third_party/boringssl/ssl/ssl_lib.cc +0 -2719
  1756. data/third_party/boringssl/ssl/ssl_privkey.cc +0 -494
  1757. data/third_party/boringssl/ssl/ssl_session.cc +0 -1221
  1758. data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
  1759. data/third_party/boringssl/ssl/ssl_transcript.cc +0 -398
  1760. data/third_party/boringssl/ssl/ssl_versions.cc +0 -399
  1761. data/third_party/boringssl/ssl/ssl_x509.cc +0 -1297
  1762. data/third_party/boringssl/ssl/t1_enc.cc +0 -452
  1763. data/third_party/boringssl/ssl/t1_lib.cc +0 -3783
  1764. data/third_party/boringssl/ssl/tls13_both.cc +0 -559
  1765. data/third_party/boringssl/ssl/tls13_client.cc +0 -891
  1766. data/third_party/boringssl/ssl/tls13_enc.cc +0 -493
  1767. data/third_party/boringssl/ssl/tls13_server.cc +0 -1022
  1768. data/third_party/boringssl/ssl/tls_method.cc +0 -274
  1769. data/third_party/boringssl/ssl/tls_record.cc +0 -703
  1770. data/third_party/boringssl/third_party/fiat/curve25519.c +0 -3230
  1771. data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
  1772. data/third_party/boringssl/third_party/fiat/internal.h +0 -154
  1773. data/third_party/boringssl/third_party/fiat/p256.c +0 -1824
  1774. data/third_party/nanopb/pb.h +0 -579
  1775. data/third_party/nanopb/pb_common.c +0 -97
  1776. data/third_party/nanopb/pb_common.h +0 -42
  1777. data/third_party/nanopb/pb_decode.c +0 -1347
  1778. data/third_party/nanopb/pb_decode.h +0 -149
  1779. data/third_party/nanopb/pb_encode.c +0 -696
  1780. data/third_party/nanopb/pb_encode.h +0 -154
@@ -21,15 +21,24 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <map>
25
+
24
26
  #include "src/core/lib/channel/channel_stack.h"
25
27
  #include "src/core/lib/channel/channel_stack_builder.h"
26
28
  #include "src/core/lib/channel/channelz.h"
29
+ #include "src/core/lib/gprpp/manual_constructor.h"
27
30
  #include "src/core/lib/surface/channel_stack_type.h"
31
+ #include "src/core/lib/transport/metadata.h"
28
32
 
29
33
  grpc_channel* grpc_channel_create(const char* target,
30
34
  const grpc_channel_args* args,
31
35
  grpc_channel_stack_type channel_stack_type,
32
- grpc_transport* optional_transport);
36
+ grpc_transport* optional_transport,
37
+ grpc_resource_user* resource_user = nullptr);
38
+
39
+ /** The same as grpc_channel_destroy, but doesn't create an ExecCtx, and so
40
+ * is safe to use from within core. */
41
+ void grpc_channel_destroy_internal(grpc_channel* channel);
33
42
 
34
43
  grpc_channel* grpc_channel_create_with_builder(
35
44
  grpc_channel_stack_builder* builder,
@@ -45,8 +54,8 @@ grpc_channel* grpc_channel_create_with_builder(
45
54
  value of \a propagation_mask (see propagation_bits.h for possible values) */
46
55
  grpc_call* grpc_channel_create_pollset_set_call(
47
56
  grpc_channel* channel, grpc_call* parent_call, uint32_t propagation_mask,
48
- grpc_pollset_set* pollset_set, grpc_slice method, const grpc_slice* host,
49
- grpc_millis deadline, void* reserved);
57
+ grpc_pollset_set* pollset_set, const grpc_slice& method,
58
+ const grpc_slice* host, grpc_millis deadline, void* reserved);
50
59
 
51
60
  /** Get a (borrowed) pointer to this channels underlying channel stack */
52
61
  grpc_channel_stack* grpc_channel_get_channel_stack(grpc_channel* channel);
@@ -54,26 +63,88 @@ grpc_channel_stack* grpc_channel_get_channel_stack(grpc_channel* channel);
54
63
  grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
55
64
  grpc_channel* channel);
56
65
 
57
- /** Get a grpc_mdelem of grpc-status: X where X is the numeric value of
58
- status_code.
59
-
60
- The returned elem is owned by the caller. */
61
- grpc_mdelem grpc_channel_get_reffed_status_elem(grpc_channel* channel,
62
- int status_code);
63
-
64
66
  size_t grpc_channel_get_call_size_estimate(grpc_channel* channel);
65
67
  void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
66
68
 
69
+ namespace grpc_core {
70
+
71
+ struct RegisteredCall {
72
+ grpc_mdelem path;
73
+ grpc_mdelem authority;
74
+
75
+ explicit RegisteredCall(const char* method, const char* host);
76
+ // TODO(vjpai): delete copy constructor once all supported compilers allow
77
+ // std::map value_type to be MoveConstructible.
78
+ RegisteredCall(const RegisteredCall& other);
79
+ RegisteredCall(RegisteredCall&& other) noexcept;
80
+
81
+ ~RegisteredCall();
82
+ };
83
+
84
+ struct CallRegistrationTable {
85
+ grpc_core::Mutex mu;
86
+ std::map<std::pair<const char*, const char*>, RegisteredCall>
87
+ map /* GUARDED_BY(mu) */;
88
+ int method_registration_attempts /* GUARDED_BY(mu) */ = 0;
89
+ };
90
+
91
+ } // namespace grpc_core
92
+
93
+ struct grpc_channel {
94
+ int is_client;
95
+ grpc_compression_options compression_options;
96
+
97
+ gpr_atm call_size_estimate;
98
+ grpc_resource_user* resource_user;
99
+
100
+ // TODO(vjpai): Once the grpc_channel is allocated via new rather than malloc,
101
+ // expand the members of the CallRegistrationTable directly into
102
+ // the grpc_channel. For now it is kept separate so that all the
103
+ // manual constructing can be done with a single call rather than
104
+ // a separate manual construction for each field.
105
+ grpc_core::ManualConstructor<grpc_core::CallRegistrationTable>
106
+ registration_table;
107
+ grpc_core::RefCountedPtr<grpc_core::channelz::ChannelNode> channelz_node;
108
+
109
+ char* target;
110
+ };
111
+ #define CHANNEL_STACK_FROM_CHANNEL(c) ((grpc_channel_stack*)((c) + 1))
112
+
113
+ inline grpc_compression_options grpc_channel_compression_options(
114
+ const grpc_channel* channel) {
115
+ return channel->compression_options;
116
+ }
117
+
118
+ inline grpc_channel_stack* grpc_channel_get_channel_stack(
119
+ grpc_channel* channel) {
120
+ return CHANNEL_STACK_FROM_CHANNEL(channel);
121
+ }
122
+
123
+ inline grpc_core::channelz::ChannelNode* grpc_channel_get_channelz_node(
124
+ grpc_channel* channel) {
125
+ return channel->channelz_node.get();
126
+ }
127
+
67
128
  #ifndef NDEBUG
68
- void grpc_channel_internal_ref(grpc_channel* channel, const char* reason);
69
- void grpc_channel_internal_unref(grpc_channel* channel, const char* reason);
129
+ inline void grpc_channel_internal_ref(grpc_channel* channel,
130
+ const char* reason) {
131
+ GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
132
+ }
133
+ inline void grpc_channel_internal_unref(grpc_channel* channel,
134
+ const char* reason) {
135
+ GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), reason);
136
+ }
70
137
  #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
71
138
  grpc_channel_internal_ref(channel, reason)
72
139
  #define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
73
140
  grpc_channel_internal_unref(channel, reason)
74
141
  #else
75
- void grpc_channel_internal_ref(grpc_channel* channel);
76
- void grpc_channel_internal_unref(grpc_channel* channel);
142
+ inline void grpc_channel_internal_ref(grpc_channel* channel) {
143
+ GRPC_CHANNEL_STACK_REF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
144
+ }
145
+ inline void grpc_channel_internal_unref(grpc_channel* channel) {
146
+ GRPC_CHANNEL_STACK_UNREF(CHANNEL_STACK_FROM_CHANNEL(channel), "unused");
147
+ }
77
148
  #define GRPC_CHANNEL_INTERNAL_REF(channel, reason) \
78
149
  grpc_channel_internal_ref(channel)
79
150
  #define GRPC_CHANNEL_INTERNAL_UNREF(channel, reason) \
@@ -45,6 +45,11 @@ void grpc_channel_init_init(void);
45
45
  /// registration order (in the case of a tie).
46
46
  /// Stages are registered against one of the pre-determined channel stack
47
47
  /// types.
48
+ /// If the channel stack type is GRPC_CLIENT_SUBCHANNEL, the caller should
49
+ /// ensure that subchannels with different filter lists will always have
50
+ /// different channel args. This requires setting a channel arg in case the
51
+ /// registration function relies on some condition other than channel args to
52
+ /// decide whether to add a filter or not.
48
53
  void grpc_channel_init_register_stage(grpc_channel_stack_type type,
49
54
  int priority,
50
55
  grpc_channel_init_stage stage_fn,
@@ -28,14 +28,13 @@
28
28
  #include "src/core/lib/surface/api_trace.h"
29
29
  #include "src/core/lib/surface/completion_queue.h"
30
30
 
31
- typedef struct {
31
+ struct ping_result {
32
32
  grpc_closure closure;
33
33
  void* tag;
34
34
  grpc_completion_queue* cq;
35
35
  grpc_cq_completion completion_storage;
36
- } ping_result;
37
-
38
- static void ping_destroy(void* arg, grpc_cq_completion* storage) {
36
+ };
37
+ static void ping_destroy(void* arg, grpc_cq_completion* /*storage*/) {
39
38
  gpr_free(arg);
40
39
  }
41
40
 
@@ -23,6 +23,11 @@
23
23
  #include <stdio.h>
24
24
  #include <string.h>
25
25
 
26
+ #include <vector>
27
+
28
+ #include "absl/strings/str_format.h"
29
+ #include "absl/strings/str_join.h"
30
+
26
31
  #include <grpc/support/alloc.h>
27
32
  #include <grpc/support/atm.h>
28
33
  #include <grpc/support/log.h>
@@ -33,6 +38,8 @@
33
38
  #include "src/core/lib/gpr/spinlock.h"
34
39
  #include "src/core/lib/gpr/string.h"
35
40
  #include "src/core/lib/gpr/tls.h"
41
+ #include "src/core/lib/gprpp/atomic.h"
42
+ #include "src/core/lib/iomgr/executor.h"
36
43
  #include "src/core/lib/iomgr/pollset.h"
37
44
  #include "src/core/lib/iomgr/timer.h"
38
45
  #include "src/core/lib/profiling/timers.h"
@@ -44,6 +51,8 @@ grpc_core::TraceFlag grpc_trace_operation_failures(false, "op_failure");
44
51
  grpc_core::DebugOnlyTraceFlag grpc_trace_pending_tags(false, "pending_tags");
45
52
  grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount(false, "cq_refcount");
46
53
 
54
+ namespace {
55
+
47
56
  // Specifies a cq thread local cache.
48
57
  // The first event that occurs on a thread
49
58
  // with a cq cache will go into that cache, and
@@ -52,12 +61,11 @@ grpc_core::DebugOnlyTraceFlag grpc_trace_cq_refcount(false, "cq_refcount");
52
61
  GPR_TLS_DECL(g_cached_event);
53
62
  GPR_TLS_DECL(g_cached_cq);
54
63
 
55
- typedef struct {
64
+ struct plucker {
56
65
  grpc_pollset_worker** worker;
57
66
  void* tag;
58
- } plucker;
59
-
60
- typedef struct {
67
+ };
68
+ struct cq_poller_vtable {
61
69
  bool can_get_pollset;
62
70
  bool can_listen;
63
71
  size_t (*size)(void);
@@ -68,8 +76,7 @@ typedef struct {
68
76
  grpc_millis deadline);
69
77
  void (*shutdown)(grpc_pollset* pollset, grpc_closure* closure);
70
78
  void (*destroy)(grpc_pollset* pollset);
71
- } cq_poller_vtable;
72
-
79
+ };
73
80
  typedef struct non_polling_worker {
74
81
  gpr_cv cv;
75
82
  bool kicked;
@@ -77,32 +84,34 @@ typedef struct non_polling_worker {
77
84
  struct non_polling_worker* prev;
78
85
  } non_polling_worker;
79
86
 
80
- typedef struct {
87
+ struct non_polling_poller {
81
88
  gpr_mu mu;
89
+ bool kicked_without_poller;
82
90
  non_polling_worker* root;
83
91
  grpc_closure* shutdown;
84
- } non_polling_poller;
85
-
86
- static size_t non_polling_poller_size(void) {
87
- return sizeof(non_polling_poller);
88
- }
92
+ };
93
+ size_t non_polling_poller_size(void) { return sizeof(non_polling_poller); }
89
94
 
90
- static void non_polling_poller_init(grpc_pollset* pollset, gpr_mu** mu) {
95
+ void non_polling_poller_init(grpc_pollset* pollset, gpr_mu** mu) {
91
96
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
92
97
  gpr_mu_init(&npp->mu);
93
98
  *mu = &npp->mu;
94
99
  }
95
100
 
96
- static void non_polling_poller_destroy(grpc_pollset* pollset) {
101
+ void non_polling_poller_destroy(grpc_pollset* pollset) {
97
102
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
98
103
  gpr_mu_destroy(&npp->mu);
99
104
  }
100
105
 
101
- static grpc_error* non_polling_poller_work(grpc_pollset* pollset,
102
- grpc_pollset_worker** worker,
103
- grpc_millis deadline) {
106
+ grpc_error* non_polling_poller_work(grpc_pollset* pollset,
107
+ grpc_pollset_worker** worker,
108
+ grpc_millis deadline) {
104
109
  non_polling_poller* npp = reinterpret_cast<non_polling_poller*>(pollset);
105
110
  if (npp->shutdown) return GRPC_ERROR_NONE;
111
+ if (npp->kicked_without_poller) {
112
+ npp->kicked_without_poller = false;
113
+ return GRPC_ERROR_NONE;
114
+ }
106
115
  non_polling_worker w;
107
116
  gpr_cv_init(&w.cv);
108
117
  if (worker != nullptr) *worker = reinterpret_cast<grpc_pollset_worker*>(&w);
@@ -124,7 +133,7 @@ static grpc_error* non_polling_poller_work(grpc_pollset* pollset,
124
133
  npp->root = w.next;
125
134
  if (&w == npp->root) {
126
135
  if (npp->shutdown) {
127
- GRPC_CLOSURE_SCHED(npp->shutdown, GRPC_ERROR_NONE);
136
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, npp->shutdown, GRPC_ERROR_NONE);
128
137
  }
129
138
  npp->root = nullptr;
130
139
  }
@@ -136,8 +145,8 @@ static grpc_error* non_polling_poller_work(grpc_pollset* pollset,
136
145
  return GRPC_ERROR_NONE;
137
146
  }
138
147
 
139
- static grpc_error* non_polling_poller_kick(
140
- grpc_pollset* pollset, grpc_pollset_worker* specific_worker) {
148
+ grpc_error* non_polling_poller_kick(grpc_pollset* pollset,
149
+ grpc_pollset_worker* specific_worker) {
141
150
  non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
142
151
  if (specific_worker == nullptr)
143
152
  specific_worker = reinterpret_cast<grpc_pollset_worker*>(p->root);
@@ -148,17 +157,18 @@ static grpc_error* non_polling_poller_kick(
148
157
  w->kicked = true;
149
158
  gpr_cv_signal(&w->cv);
150
159
  }
160
+ } else {
161
+ p->kicked_without_poller = true;
151
162
  }
152
163
  return GRPC_ERROR_NONE;
153
164
  }
154
165
 
155
- static void non_polling_poller_shutdown(grpc_pollset* pollset,
156
- grpc_closure* closure) {
166
+ void non_polling_poller_shutdown(grpc_pollset* pollset, grpc_closure* closure) {
157
167
  non_polling_poller* p = reinterpret_cast<non_polling_poller*>(pollset);
158
168
  GPR_ASSERT(closure != nullptr);
159
169
  p->shutdown = closure;
160
170
  if (p->root == nullptr) {
161
- GRPC_CLOSURE_SCHED(closure, GRPC_ERROR_NONE);
171
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
162
172
  } else {
163
173
  non_polling_worker* w = p->root;
164
174
  do {
@@ -168,7 +178,7 @@ static void non_polling_poller_shutdown(grpc_pollset* pollset,
168
178
  }
169
179
  }
170
180
 
171
- static const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
181
+ const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
172
182
  /* GRPC_CQ_DEFAULT_POLLING */
173
183
  {true, true, grpc_pollset_size, grpc_pollset_init, grpc_pollset_kick,
174
184
  grpc_pollset_work, grpc_pollset_shutdown, grpc_pollset_destroy},
@@ -181,99 +191,159 @@ static const cq_poller_vtable g_poller_vtable_by_poller_type[] = {
181
191
  non_polling_poller_shutdown, non_polling_poller_destroy},
182
192
  };
183
193
 
184
- typedef struct cq_vtable {
194
+ } // namespace
195
+
196
+ struct cq_vtable {
185
197
  grpc_cq_completion_type cq_completion_type;
186
198
  size_t data_size;
187
- void (*init)(void* data, grpc_core::CQCallbackInterface* shutdown_callback);
199
+ void (*init)(void* data,
200
+ grpc_experimental_completion_queue_functor* shutdown_callback);
188
201
  void (*shutdown)(grpc_completion_queue* cq);
189
202
  void (*destroy)(void* data);
190
203
  bool (*begin_op)(grpc_completion_queue* cq, void* tag);
191
204
  void (*end_op)(grpc_completion_queue* cq, void* tag, grpc_error* error,
192
205
  void (*done)(void* done_arg, grpc_cq_completion* storage),
193
- void* done_arg, grpc_cq_completion* storage);
206
+ void* done_arg, grpc_cq_completion* storage, bool internal);
194
207
  grpc_event (*next)(grpc_completion_queue* cq, gpr_timespec deadline,
195
208
  void* reserved);
196
209
  grpc_event (*pluck)(grpc_completion_queue* cq, void* tag,
197
210
  gpr_timespec deadline, void* reserved);
198
- } cq_vtable;
211
+ };
212
+
213
+ namespace {
199
214
 
200
- /* Queue that holds the cq_completion_events. Internally uses gpr_mpscq queue
201
- * (a lockfree multiproducer single consumer queue). It uses a queue_lock
202
- * to support multiple consumers.
215
+ /* Queue that holds the cq_completion_events. Internally uses
216
+ * MultiProducerSingleConsumerQueue (a lockfree multiproducer single consumer
217
+ * queue). It uses a queue_lock to support multiple consumers.
203
218
  * Only used in completion queues whose completion_type is GRPC_CQ_NEXT */
204
- typedef struct grpc_cq_event_queue {
219
+ class CqEventQueue {
220
+ public:
221
+ CqEventQueue() = default;
222
+ ~CqEventQueue() = default;
223
+
224
+ /* Note: The counter is not incremented/decremented atomically with push/pop.
225
+ * The count is only eventually consistent */
226
+ intptr_t num_items() const {
227
+ return num_queue_items_.Load(grpc_core::MemoryOrder::RELAXED);
228
+ }
229
+
230
+ bool Push(grpc_cq_completion* c);
231
+ grpc_cq_completion* Pop();
232
+
233
+ private:
205
234
  /* Spinlock to serialize consumers i.e pop() operations */
206
- gpr_spinlock queue_lock;
235
+ gpr_spinlock queue_lock_ = GPR_SPINLOCK_INITIALIZER;
207
236
 
208
- gpr_mpscq queue;
237
+ grpc_core::MultiProducerSingleConsumerQueue queue_;
209
238
 
210
239
  /* A lazy counter of number of items in the queue. This is NOT atomically
211
240
  incremented/decremented along with push/pop operations and hence is only
212
241
  eventually consistent */
213
- gpr_atm num_queue_items;
214
- } grpc_cq_event_queue;
242
+ grpc_core::Atomic<intptr_t> num_queue_items_{0};
243
+ };
244
+
245
+ struct cq_next_data {
246
+ ~cq_next_data() {
247
+ GPR_ASSERT(queue.num_items() == 0);
248
+ #ifndef NDEBUG
249
+ if (pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) != 0) {
250
+ gpr_log(GPR_ERROR, "Destroying CQ without draining it fully.");
251
+ }
252
+ #endif
253
+ }
215
254
 
216
- typedef struct cq_next_data {
217
255
  /** Completed events for completion-queues of type GRPC_CQ_NEXT */
218
- grpc_cq_event_queue queue;
256
+ CqEventQueue queue;
219
257
 
220
258
  /** Counter of how many things have ever been queued on this completion queue
221
259
  useful for avoiding locks to check the queue */
222
- gpr_atm things_queued_ever;
260
+ grpc_core::Atomic<intptr_t> things_queued_ever{0};
223
261
 
224
- /* Number of outstanding events (+1 if not shut down) */
225
- gpr_atm pending_events;
262
+ /** Number of outstanding events (+1 if not shut down)
263
+ Initial count is dropped by grpc_completion_queue_shutdown */
264
+ grpc_core::Atomic<intptr_t> pending_events{1};
226
265
 
227
266
  /** 0 initially. 1 once we initiated shutdown */
228
- bool shutdown_called;
229
- } cq_next_data;
267
+ bool shutdown_called = false;
268
+ };
269
+
270
+ struct cq_pluck_data {
271
+ cq_pluck_data() {
272
+ completed_tail = &completed_head;
273
+ completed_head.next = reinterpret_cast<uintptr_t>(completed_tail);
274
+ }
275
+
276
+ ~cq_pluck_data() {
277
+ GPR_ASSERT(completed_head.next ==
278
+ reinterpret_cast<uintptr_t>(&completed_head));
279
+ #ifndef NDEBUG
280
+ if (pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) != 0) {
281
+ gpr_log(GPR_ERROR, "Destroying CQ without draining it fully.");
282
+ }
283
+ #endif
284
+ }
230
285
 
231
- typedef struct cq_pluck_data {
232
286
  /** Completed events for completion-queues of type GRPC_CQ_PLUCK */
233
287
  grpc_cq_completion completed_head;
234
288
  grpc_cq_completion* completed_tail;
235
289
 
236
- /** Number of pending events (+1 if we're not shutdown) */
237
- gpr_atm pending_events;
290
+ /** Number of pending events (+1 if we're not shutdown).
291
+ Initial count is dropped by grpc_completion_queue_shutdown. */
292
+ grpc_core::Atomic<intptr_t> pending_events{1};
238
293
 
239
294
  /** Counter of how many things have ever been queued on this completion queue
240
295
  useful for avoiding locks to check the queue */
241
- gpr_atm things_queued_ever;
296
+ grpc_core::Atomic<intptr_t> things_queued_ever{0};
242
297
 
243
298
  /** 0 initially. 1 once we completed shutting */
244
299
  /* TODO: (sreek) This is not needed since (shutdown == 1) if and only if
245
300
  * (pending_events == 0). So consider removing this in future and use
246
301
  * pending_events */
247
- gpr_atm shutdown;
302
+ grpc_core::Atomic<bool> shutdown{false};
248
303
 
249
304
  /** 0 initially. 1 once we initiated shutdown */
250
- bool shutdown_called;
305
+ bool shutdown_called = false;
251
306
 
252
- int num_pluckers;
307
+ int num_pluckers = 0;
253
308
  plucker pluckers[GRPC_MAX_COMPLETION_QUEUE_PLUCKERS];
254
- } cq_pluck_data;
309
+ };
310
+
311
+ struct cq_callback_data {
312
+ cq_callback_data(
313
+ grpc_experimental_completion_queue_functor* shutdown_callback)
314
+ : shutdown_callback(shutdown_callback) {}
315
+
316
+ ~cq_callback_data() {
317
+ #ifndef NDEBUG
318
+ if (pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) != 0) {
319
+ gpr_log(GPR_ERROR, "Destroying CQ without draining it fully.");
320
+ }
321
+ #endif
322
+ }
255
323
 
256
- typedef struct cq_callback_data {
257
324
  /** No actual completed events queue, unlike other types */
258
325
 
259
- /** Number of pending events (+1 if we're not shutdown) */
260
- gpr_atm pending_events;
326
+ /** Number of pending events (+1 if we're not shutdown).
327
+ Initial count is dropped by grpc_completion_queue_shutdown. */
328
+ grpc_core::Atomic<intptr_t> pending_events{1};
261
329
 
262
330
  /** Counter of how many things have ever been queued on this completion queue
263
331
  useful for avoiding locks to check the queue */
264
- gpr_atm things_queued_ever;
332
+ grpc_core::Atomic<intptr_t> things_queued_ever{0};
265
333
 
266
334
  /** 0 initially. 1 once we initiated shutdown */
267
- bool shutdown_called;
335
+ bool shutdown_called = false;
268
336
 
269
337
  /** A callback that gets invoked when the CQ completes shutdown */
270
- grpc_core::CQCallbackInterface* shutdown_callback;
271
- } cq_callback_data;
338
+ grpc_experimental_completion_queue_functor* shutdown_callback;
339
+ };
340
+
341
+ } // namespace
272
342
 
273
343
  /* Completion queue structure */
274
344
  struct grpc_completion_queue {
275
345
  /** Once owning_refs drops to zero, we will destroy the cq */
276
- gpr_refcount owning_refs;
346
+ grpc_core::RefCount owning_refs;
277
347
 
278
348
  gpr_mu* mu;
279
349
 
@@ -308,23 +378,20 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
308
378
  // queue. The done argument is a callback that will be invoked when it is
309
379
  // safe to free up that storage. The storage MUST NOT be freed until the
310
380
  // done callback is invoked.
311
- static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
312
- grpc_error* error,
313
- void (*done)(void* done_arg,
314
- grpc_cq_completion* storage),
315
- void* done_arg, grpc_cq_completion* storage);
316
-
317
- static void cq_end_op_for_pluck(grpc_completion_queue* cq, void* tag,
318
- grpc_error* error,
319
- void (*done)(void* done_arg,
320
- grpc_cq_completion* storage),
321
- void* done_arg, grpc_cq_completion* storage);
322
-
323
- static void cq_end_op_for_callback(grpc_completion_queue* cq, void* tag,
324
- grpc_error* error,
325
- void (*done)(void* done_arg,
326
- grpc_cq_completion* storage),
327
- void* done_arg, grpc_cq_completion* storage);
381
+ static void cq_end_op_for_next(
382
+ grpc_completion_queue* cq, void* tag, grpc_error* error,
383
+ void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
384
+ grpc_cq_completion* storage, bool internal);
385
+
386
+ static void cq_end_op_for_pluck(
387
+ grpc_completion_queue* cq, void* tag, grpc_error* error,
388
+ void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
389
+ grpc_cq_completion* storage, bool internal);
390
+
391
+ static void cq_end_op_for_callback(
392
+ grpc_completion_queue* cq, void* tag, grpc_error* error,
393
+ void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
394
+ grpc_cq_completion* storage, bool internal);
328
395
 
329
396
  static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
330
397
  void* reserved);
@@ -333,12 +400,12 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
333
400
  gpr_timespec deadline, void* reserved);
334
401
 
335
402
  // Note that cq_init_next and cq_init_pluck do not use the shutdown_callback
336
- static void cq_init_next(void* data,
337
- grpc_core::CQCallbackInterface* shutdown_callback);
338
- static void cq_init_pluck(void* data,
339
- grpc_core::CQCallbackInterface* shutdown_callback);
340
- static void cq_init_callback(void* data,
341
- grpc_core::CQCallbackInterface* shutdown_callback);
403
+ static void cq_init_next(
404
+ void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
405
+ static void cq_init_pluck(
406
+ void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
407
+ static void cq_init_callback(
408
+ void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
342
409
  static void cq_destroy_next(void* data);
343
410
  static void cq_destroy_pluck(void* data);
344
411
  static void cq_destroy_callback(void* data);
@@ -365,13 +432,15 @@ static const cq_vtable g_cq_vtable[] = {
365
432
 
366
433
  grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
367
434
 
368
- #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \
369
- if (grpc_api_trace.enabled() && (grpc_cq_pluck_trace.enabled() || \
370
- (event)->type != GRPC_QUEUE_TIMEOUT)) { \
371
- char* _ev = grpc_event_string(event); \
372
- gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, _ev); \
373
- gpr_free(_ev); \
374
- }
435
+ #define GRPC_SURFACE_TRACE_RETURNED_EVENT(cq, event) \
436
+ do { \
437
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) && \
438
+ (GRPC_TRACE_FLAG_ENABLED(grpc_cq_pluck_trace) || \
439
+ (event)->type != GRPC_QUEUE_TIMEOUT)) { \
440
+ gpr_log(GPR_INFO, "RETURN_EVENT[%p]: %s", cq, \
441
+ grpc_event_string(event).c_str()); \
442
+ } \
443
+ } while (0)
375
444
 
376
445
  static void on_pollset_shutdown_done(void* cq, grpc_error* error);
377
446
 
@@ -400,7 +469,7 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq,
400
469
  storage->done(storage->done_arg, storage);
401
470
  ret = 1;
402
471
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
403
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
472
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
404
473
  GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
405
474
  gpr_mu_lock(cq->mu);
406
475
  cq_finish_shutdown_next(cq);
@@ -414,31 +483,21 @@ int grpc_completion_queue_thread_local_cache_flush(grpc_completion_queue* cq,
414
483
  return ret;
415
484
  }
416
485
 
417
- static void cq_event_queue_init(grpc_cq_event_queue* q) {
418
- gpr_mpscq_init(&q->queue);
419
- q->queue_lock = GPR_SPINLOCK_INITIALIZER;
420
- gpr_atm_no_barrier_store(&q->num_queue_items, 0);
486
+ bool CqEventQueue::Push(grpc_cq_completion* c) {
487
+ queue_.Push(
488
+ reinterpret_cast<grpc_core::MultiProducerSingleConsumerQueue::Node*>(c));
489
+ return num_queue_items_.FetchAdd(1, grpc_core::MemoryOrder::RELAXED) == 0;
421
490
  }
422
491
 
423
- static void cq_event_queue_destroy(grpc_cq_event_queue* q) {
424
- gpr_mpscq_destroy(&q->queue);
425
- }
426
-
427
- static bool cq_event_queue_push(grpc_cq_event_queue* q, grpc_cq_completion* c) {
428
- gpr_mpscq_push(&q->queue, reinterpret_cast<gpr_mpscq_node*>(c));
429
- return gpr_atm_no_barrier_fetch_add(&q->num_queue_items, 1) == 0;
430
- }
431
-
432
- static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) {
492
+ grpc_cq_completion* CqEventQueue::Pop() {
433
493
  grpc_cq_completion* c = nullptr;
434
494
 
435
- if (gpr_spinlock_trylock(&q->queue_lock)) {
495
+ if (gpr_spinlock_trylock(&queue_lock_)) {
436
496
  GRPC_STATS_INC_CQ_EV_QUEUE_TRYLOCK_SUCCESSES();
437
497
 
438
498
  bool is_empty = false;
439
- c = reinterpret_cast<grpc_cq_completion*>(
440
- gpr_mpscq_pop_and_check_end(&q->queue, &is_empty));
441
- gpr_spinlock_unlock(&q->queue_lock);
499
+ c = reinterpret_cast<grpc_cq_completion*>(queue_.PopAndCheckEnd(&is_empty));
500
+ gpr_spinlock_unlock(&queue_lock_);
442
501
 
443
502
  if (c == nullptr && !is_empty) {
444
503
  GRPC_STATS_INC_CQ_EV_QUEUE_TRANSIENT_POP_FAILURES();
@@ -448,21 +507,15 @@ static grpc_cq_completion* cq_event_queue_pop(grpc_cq_event_queue* q) {
448
507
  }
449
508
 
450
509
  if (c) {
451
- gpr_atm_no_barrier_fetch_add(&q->num_queue_items, -1);
510
+ num_queue_items_.FetchSub(1, grpc_core::MemoryOrder::RELAXED);
452
511
  }
453
512
 
454
513
  return c;
455
514
  }
456
515
 
457
- /* Note: The counter is not incremented/decremented atomically with push/pop.
458
- * The count is only eventually consistent */
459
- static long cq_event_queue_num_items(grpc_cq_event_queue* q) {
460
- return static_cast<long>(gpr_atm_no_barrier_load(&q->num_queue_items));
461
- }
462
-
463
516
  grpc_completion_queue* grpc_completion_queue_create_internal(
464
517
  grpc_cq_completion_type completion_type, grpc_cq_polling_type polling_type,
465
- grpc_core::CQCallbackInterface* shutdown_callback) {
518
+ grpc_experimental_completion_queue_functor* shutdown_callback) {
466
519
  GPR_TIMER_SCOPE("grpc_completion_queue_create_internal", 0);
467
520
 
468
521
  grpc_completion_queue* cq;
@@ -487,7 +540,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
487
540
  cq->poller_vtable = poller_vtable;
488
541
 
489
542
  /* One for destroy(), one for pollset_shutdown */
490
- gpr_ref_init(&cq->owning_refs, 2);
543
+ new (&cq->owning_refs) grpc_core::RefCount(2);
491
544
 
492
545
  poller_vtable->init(POLLSET_FROM_CQ(cq), &cq->mu);
493
546
  vtable->init(DATA_FROM_CQ(cq), shutdown_callback);
@@ -497,51 +550,37 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
497
550
  return cq;
498
551
  }
499
552
 
500
- static void cq_init_next(void* data,
501
- grpc_core::CQCallbackInterface* shutdown_callback) {
502
- cq_next_data* cqd = static_cast<cq_next_data*>(data);
503
- /* Initial count is dropped by grpc_completion_queue_shutdown */
504
- gpr_atm_no_barrier_store(&cqd->pending_events, 1);
505
- cqd->shutdown_called = false;
506
- gpr_atm_no_barrier_store(&cqd->things_queued_ever, 0);
507
- cq_event_queue_init(&cqd->queue);
553
+ static void cq_init_next(
554
+ void* data,
555
+ grpc_experimental_completion_queue_functor* /*shutdown_callback*/) {
556
+ new (data) cq_next_data();
508
557
  }
509
558
 
510
559
  static void cq_destroy_next(void* data) {
511
560
  cq_next_data* cqd = static_cast<cq_next_data*>(data);
512
- GPR_ASSERT(cq_event_queue_num_items(&cqd->queue) == 0);
513
- cq_event_queue_destroy(&cqd->queue);
561
+ cqd->~cq_next_data();
514
562
  }
515
563
 
516
- static void cq_init_pluck(void* data,
517
- grpc_core::CQCallbackInterface* shutdown_callback) {
518
- cq_pluck_data* cqd = static_cast<cq_pluck_data*>(data);
519
- /* Initial count is dropped by grpc_completion_queue_shutdown */
520
- gpr_atm_no_barrier_store(&cqd->pending_events, 1);
521
- cqd->completed_tail = &cqd->completed_head;
522
- cqd->completed_head.next = (uintptr_t)cqd->completed_tail;
523
- gpr_atm_no_barrier_store(&cqd->shutdown, 0);
524
- cqd->shutdown_called = false;
525
- cqd->num_pluckers = 0;
526
- gpr_atm_no_barrier_store(&cqd->things_queued_ever, 0);
564
+ static void cq_init_pluck(
565
+ void* data,
566
+ grpc_experimental_completion_queue_functor* /*shutdown_callback*/) {
567
+ new (data) cq_pluck_data();
527
568
  }
528
569
 
529
570
  static void cq_destroy_pluck(void* data) {
530
571
  cq_pluck_data* cqd = static_cast<cq_pluck_data*>(data);
531
- GPR_ASSERT(cqd->completed_head.next == (uintptr_t)&cqd->completed_head);
572
+ cqd->~cq_pluck_data();
532
573
  }
533
574
 
534
575
  static void cq_init_callback(
535
- void* data, grpc_core::CQCallbackInterface* shutdown_callback) {
536
- cq_callback_data* cqd = static_cast<cq_callback_data*>(data);
537
- /* Initial count is dropped by grpc_completion_queue_shutdown */
538
- gpr_atm_no_barrier_store(&cqd->pending_events, 1);
539
- cqd->shutdown_called = false;
540
- gpr_atm_no_barrier_store(&cqd->things_queued_ever, 0);
541
- cqd->shutdown_callback = shutdown_callback;
576
+ void* data, grpc_experimental_completion_queue_functor* shutdown_callback) {
577
+ new (data) cq_callback_data(shutdown_callback);
542
578
  }
543
579
 
544
- static void cq_destroy_callback(void* data) {}
580
+ static void cq_destroy_callback(void* data) {
581
+ cq_callback_data* cqd = static_cast<cq_callback_data*>(data);
582
+ cqd->~cq_callback_data();
583
+ }
545
584
 
546
585
  grpc_cq_completion_type grpc_get_cq_completion_type(grpc_completion_queue* cq) {
547
586
  return cq->vtable->cq_completion_type;
@@ -558,19 +597,16 @@ int grpc_get_cq_poll_num(grpc_completion_queue* cq) {
558
597
  #ifndef NDEBUG
559
598
  void grpc_cq_internal_ref(grpc_completion_queue* cq, const char* reason,
560
599
  const char* file, int line) {
561
- if (grpc_trace_cq_refcount.enabled()) {
562
- gpr_atm val = gpr_atm_no_barrier_load(&cq->owning_refs.count);
563
- gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
564
- "CQ:%p ref %" PRIdPTR " -> %" PRIdPTR " %s", cq, val, val + 1,
565
- reason);
566
- }
600
+ grpc_core::DebugLocation debug_location(file, line);
567
601
  #else
568
602
  void grpc_cq_internal_ref(grpc_completion_queue* cq) {
603
+ grpc_core::DebugLocation debug_location;
604
+ const char* reason = nullptr;
569
605
  #endif
570
- gpr_ref(&cq->owning_refs);
606
+ cq->owning_refs.Ref(debug_location, reason);
571
607
  }
572
608
 
573
- static void on_pollset_shutdown_done(void* arg, grpc_error* error) {
609
+ static void on_pollset_shutdown_done(void* arg, grpc_error* /*error*/) {
574
610
  grpc_completion_queue* cq = static_cast<grpc_completion_queue*>(arg);
575
611
  GRPC_CQ_INTERNAL_UNREF(cq, "pollset_destroy");
576
612
  }
@@ -578,16 +614,13 @@ static void on_pollset_shutdown_done(void* arg, grpc_error* error) {
578
614
  #ifndef NDEBUG
579
615
  void grpc_cq_internal_unref(grpc_completion_queue* cq, const char* reason,
580
616
  const char* file, int line) {
581
- if (grpc_trace_cq_refcount.enabled()) {
582
- gpr_atm val = gpr_atm_no_barrier_load(&cq->owning_refs.count);
583
- gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
584
- "CQ:%p unref %" PRIdPTR " -> %" PRIdPTR " %s", cq, val, val - 1,
585
- reason);
586
- }
617
+ grpc_core::DebugLocation debug_location(file, line);
587
618
  #else
588
619
  void grpc_cq_internal_unref(grpc_completion_queue* cq) {
620
+ grpc_core::DebugLocation debug_location;
621
+ const char* reason = nullptr;
589
622
  #endif
590
- if (gpr_unref(&cq->owning_refs)) {
623
+ if (GPR_UNLIKELY(cq->owning_refs.Unref(debug_location, reason))) {
591
624
  cq->vtable->destroy(DATA_FROM_CQ(cq));
592
625
  cq->poller_vtable->destroy(POLLSET_FROM_CQ(cq));
593
626
  #ifndef NDEBUG
@@ -621,40 +654,23 @@ static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) {
621
654
  GPR_ASSERT(found);
622
655
  }
623
656
  #else
624
- static void cq_check_tag(grpc_completion_queue* cq, void* tag, bool lock_cq) {}
657
+ static void cq_check_tag(grpc_completion_queue* /*cq*/, void* /*tag*/,
658
+ bool /*lock_cq*/) {}
625
659
  #endif
626
660
 
627
- /* Atomically increments a counter only if the counter is not zero. Returns
628
- * true if the increment was successful; false if the counter is zero */
629
- static bool atm_inc_if_nonzero(gpr_atm* counter) {
630
- while (true) {
631
- gpr_atm count = gpr_atm_acq_load(counter);
632
- /* If zero, we are done. If not, we must to a CAS (instead of an atomic
633
- * increment) to maintain the contract: do not increment the counter if it
634
- * is zero. */
635
- if (count == 0) {
636
- return false;
637
- } else if (gpr_atm_full_cas(counter, count, count + 1)) {
638
- break;
639
- }
640
- }
641
-
642
- return true;
643
- }
644
-
645
- static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* tag) {
661
+ static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* /*tag*/) {
646
662
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
647
- return atm_inc_if_nonzero(&cqd->pending_events);
663
+ return cqd->pending_events.IncrementIfNonzero();
648
664
  }
649
665
 
650
- static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* tag) {
666
+ static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* /*tag*/) {
651
667
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
652
- return atm_inc_if_nonzero(&cqd->pending_events);
668
+ return cqd->pending_events.IncrementIfNonzero();
653
669
  }
654
670
 
655
- static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag) {
671
+ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* /*tag*/) {
656
672
  cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
657
- return atm_inc_if_nonzero(&cqd->pending_events);
673
+ return cqd->pending_events.IncrementIfNonzero();
658
674
  }
659
675
 
660
676
  bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
@@ -675,21 +691,22 @@ bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
675
691
  /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
676
692
  * completion
677
693
  * type of GRPC_CQ_NEXT) */
678
- static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
679
- grpc_error* error,
680
- void (*done)(void* done_arg,
681
- grpc_cq_completion* storage),
682
- void* done_arg, grpc_cq_completion* storage) {
694
+ static void cq_end_op_for_next(
695
+ grpc_completion_queue* cq, void* tag, grpc_error* error,
696
+ void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
697
+ grpc_cq_completion* storage, bool /*internal*/) {
683
698
  GPR_TIMER_SCOPE("cq_end_op_for_next", 0);
684
699
 
685
- if (grpc_api_trace.enabled() ||
686
- (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE)) {
700
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
701
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
702
+ error != GRPC_ERROR_NONE)) {
687
703
  const char* errmsg = grpc_error_string(error);
688
704
  GRPC_API_TRACE(
689
705
  "cq_end_op_for_next(cq=%p, tag=%p, error=%s, "
690
706
  "done=%p, done_arg=%p, storage=%p)",
691
707
  6, (cq, tag, errmsg, done, done_arg, storage));
692
- if (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE) {
708
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
709
+ error != GRPC_ERROR_NONE) {
693
710
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
694
711
  }
695
712
  }
@@ -708,17 +725,14 @@ static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
708
725
  gpr_tls_set(&g_cached_event, (intptr_t)storage);
709
726
  } else {
710
727
  /* Add the completion to the queue */
711
- bool is_first = cq_event_queue_push(&cqd->queue, storage);
712
- gpr_atm_no_barrier_fetch_add(&cqd->things_queued_ever, 1);
713
-
728
+ bool is_first = cqd->queue.Push(storage);
729
+ cqd->things_queued_ever.FetchAdd(1, grpc_core::MemoryOrder::RELAXED);
714
730
  /* Since we do not hold the cq lock here, it is important to do an 'acquire'
715
731
  load here (instead of a 'no_barrier' load) to match with the release
716
732
  store
717
- (done via gpr_atm_full_fetch_add(pending_events, -1)) in cq_shutdown_next
733
+ (done via pending_events.FetchSub(1, ACQ_REL)) in cq_shutdown_next
718
734
  */
719
- bool will_definitely_shutdown = gpr_atm_acq_load(&cqd->pending_events) == 1;
720
-
721
- if (!will_definitely_shutdown) {
735
+ if (cqd->pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) != 1) {
722
736
  /* Only kick if this is the first item queued */
723
737
  if (is_first) {
724
738
  gpr_mu_lock(cq->mu);
@@ -732,7 +746,8 @@ static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
732
746
  GRPC_ERROR_UNREF(kick_error);
733
747
  }
734
748
  }
735
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
749
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) ==
750
+ 1) {
736
751
  GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
737
752
  gpr_mu_lock(cq->mu);
738
753
  cq_finish_shutdown_next(cq);
@@ -741,7 +756,7 @@ static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
741
756
  }
742
757
  } else {
743
758
  GRPC_CQ_INTERNAL_REF(cq, "shutting_down");
744
- gpr_atm_rel_store(&cqd->pending_events, 0);
759
+ cqd->pending_events.Store(0, grpc_core::MemoryOrder::RELEASE);
745
760
  gpr_mu_lock(cq->mu);
746
761
  cq_finish_shutdown_next(cq);
747
762
  gpr_mu_unlock(cq->mu);
@@ -755,24 +770,25 @@ static void cq_end_op_for_next(grpc_completion_queue* cq, void* tag,
755
770
  /* Queue a GRPC_OP_COMPLETED operation to a completion queue (with a
756
771
  * completion
757
772
  * type of GRPC_CQ_PLUCK) */
758
- static void cq_end_op_for_pluck(grpc_completion_queue* cq, void* tag,
759
- grpc_error* error,
760
- void (*done)(void* done_arg,
761
- grpc_cq_completion* storage),
762
- void* done_arg, grpc_cq_completion* storage) {
773
+ static void cq_end_op_for_pluck(
774
+ grpc_completion_queue* cq, void* tag, grpc_error* error,
775
+ void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
776
+ grpc_cq_completion* storage, bool /*internal*/) {
763
777
  GPR_TIMER_SCOPE("cq_end_op_for_pluck", 0);
764
778
 
765
779
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
766
780
  int is_success = (error == GRPC_ERROR_NONE);
767
781
 
768
- if (grpc_api_trace.enabled() ||
769
- (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE)) {
782
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
783
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
784
+ error != GRPC_ERROR_NONE)) {
770
785
  const char* errmsg = grpc_error_string(error);
771
786
  GRPC_API_TRACE(
772
787
  "cq_end_op_for_pluck(cq=%p, tag=%p, error=%s, "
773
788
  "done=%p, done_arg=%p, storage=%p)",
774
789
  6, (cq, tag, errmsg, done, done_arg, storage));
775
- if (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE) {
790
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
791
+ error != GRPC_ERROR_NONE) {
776
792
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
777
793
  }
778
794
  }
@@ -787,12 +803,12 @@ static void cq_end_op_for_pluck(grpc_completion_queue* cq, void* tag,
787
803
  cq_check_tag(cq, tag, false); /* Used in debug builds only */
788
804
 
789
805
  /* Add to the list of completions */
790
- gpr_atm_no_barrier_fetch_add(&cqd->things_queued_ever, 1);
806
+ cqd->things_queued_ever.FetchAdd(1, grpc_core::MemoryOrder::RELAXED);
791
807
  cqd->completed_tail->next =
792
808
  ((uintptr_t)storage) | (1u & cqd->completed_tail->next);
793
809
  cqd->completed_tail = storage;
794
810
 
795
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
811
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
796
812
  cq_finish_shutdown_pluck(cq);
797
813
  gpr_mu_unlock(cq->mu);
798
814
  } else {
@@ -820,24 +836,30 @@ static void cq_end_op_for_pluck(grpc_completion_queue* cq, void* tag,
820
836
  GRPC_ERROR_UNREF(error);
821
837
  }
822
838
 
839
+ static void functor_callback(void* arg, grpc_error* error) {
840
+ auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
841
+ functor->functor_run(functor, error == GRPC_ERROR_NONE);
842
+ }
843
+
823
844
  /* Complete an event on a completion queue of type GRPC_CQ_CALLBACK */
824
845
  static void cq_end_op_for_callback(
825
846
  grpc_completion_queue* cq, void* tag, grpc_error* error,
826
847
  void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
827
- grpc_cq_completion* storage) {
848
+ grpc_cq_completion* storage, bool internal) {
828
849
  GPR_TIMER_SCOPE("cq_end_op_for_callback", 0);
829
850
 
830
851
  cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
831
- bool is_success = (error == GRPC_ERROR_NONE);
832
852
 
833
- if (grpc_api_trace.enabled() ||
834
- (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE)) {
853
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
854
+ (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
855
+ error != GRPC_ERROR_NONE)) {
835
856
  const char* errmsg = grpc_error_string(error);
836
857
  GRPC_API_TRACE(
837
858
  "cq_end_op_for_callback(cq=%p, tag=%p, error=%s, "
838
859
  "done=%p, done_arg=%p, storage=%p)",
839
860
  6, (cq, tag, errmsg, done, done_arg, storage));
840
- if (grpc_trace_operation_failures.enabled() && error != GRPC_ERROR_NONE) {
861
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
862
+ error != GRPC_ERROR_NONE) {
841
863
  gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
842
864
  }
843
865
  }
@@ -846,37 +868,50 @@ static void cq_end_op_for_callback(
846
868
  // for reserved storage. Invoke the done callback right away to release it.
847
869
  done(done_arg, storage);
848
870
 
849
- gpr_mu_lock(cq->mu);
850
- cq_check_tag(cq, tag, false); /* Used in debug builds only */
871
+ cq_check_tag(cq, tag, true); /* Used in debug builds only */
851
872
 
852
- gpr_atm_no_barrier_fetch_add(&cqd->things_queued_ever, 1);
853
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
873
+ cqd->things_queued_ever.FetchAdd(1, grpc_core::MemoryOrder::RELAXED);
874
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
854
875
  cq_finish_shutdown_callback(cq);
855
- gpr_mu_unlock(cq->mu);
856
- } else {
857
- gpr_mu_unlock(cq->mu);
858
876
  }
859
877
 
860
- GRPC_ERROR_UNREF(error);
878
+ // If possible, schedule the callback onto an existing thread-local
879
+ // ApplicationCallbackExecCtx, which is a work queue. This is possible for:
880
+ // 1. The callback is internally-generated and there is an ACEC available
881
+ // 2. The callback is marked inlineable and there is an ACEC available
882
+ // 3. We are already running in a background poller thread (which always has
883
+ // an ACEC available at the base of the stack).
884
+ auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(tag);
885
+ if (((internal || functor->inlineable) &&
886
+ grpc_core::ApplicationCallbackExecCtx::Available()) ||
887
+ grpc_iomgr_is_any_background_poller_thread()) {
888
+ grpc_core::ApplicationCallbackExecCtx::Enqueue(functor,
889
+ (error == GRPC_ERROR_NONE));
890
+ GRPC_ERROR_UNREF(error);
891
+ return;
892
+ }
861
893
 
862
- (static_cast<grpc_core::CQCallbackInterface*>(tag))->Run(is_success);
894
+ // Schedule the callback on a closure if not internal or triggered
895
+ // from a background poller thread.
896
+ grpc_core::Executor::Run(
897
+ GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
863
898
  }
864
899
 
865
900
  void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
866
901
  void (*done)(void* done_arg, grpc_cq_completion* storage),
867
- void* done_arg, grpc_cq_completion* storage) {
868
- cq->vtable->end_op(cq, tag, error, done, done_arg, storage);
902
+ void* done_arg, grpc_cq_completion* storage,
903
+ bool internal) {
904
+ cq->vtable->end_op(cq, tag, error, done, done_arg, storage, internal);
869
905
  }
870
906
 
871
- typedef struct {
907
+ struct cq_is_finished_arg {
872
908
  gpr_atm last_seen_things_queued_ever;
873
909
  grpc_completion_queue* cq;
874
910
  grpc_millis deadline;
875
911
  grpc_cq_completion* stolen_completion;
876
912
  void* tag; /* for pluck */
877
913
  bool first_loop;
878
- } cq_is_finished_arg;
879
-
914
+ };
880
915
  class ExecCtxNext : public grpc_core::ExecCtx {
881
916
  public:
882
917
  ExecCtxNext(void* arg) : ExecCtx(0), check_ready_to_finish_arg_(arg) {}
@@ -888,20 +923,20 @@ class ExecCtxNext : public grpc_core::ExecCtx {
888
923
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
889
924
  GPR_ASSERT(a->stolen_completion == nullptr);
890
925
 
891
- gpr_atm current_last_seen_things_queued_ever =
892
- gpr_atm_no_barrier_load(&cqd->things_queued_ever);
926
+ intptr_t current_last_seen_things_queued_ever =
927
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED);
893
928
 
894
929
  if (current_last_seen_things_queued_ever !=
895
930
  a->last_seen_things_queued_ever) {
896
931
  a->last_seen_things_queued_ever =
897
- gpr_atm_no_barrier_load(&cqd->things_queued_ever);
932
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED);
898
933
 
899
934
  /* Pop a cq_completion from the queue. Returns NULL if the queue is empty
900
935
  * might return NULL in some cases even if the queue is not empty; but
901
936
  * that
902
937
  * is ok and doesn't affect correctness. Might effect the tail latencies a
903
938
  * bit) */
904
- a->stolen_completion = cq_event_queue_pop(&cqd->queue);
939
+ a->stolen_completion = cqd->queue.Pop();
905
940
  if (a->stolen_completion != nullptr) {
906
941
  return true;
907
942
  }
@@ -915,25 +950,18 @@ class ExecCtxNext : public grpc_core::ExecCtx {
915
950
 
916
951
  #ifndef NDEBUG
917
952
  static void dump_pending_tags(grpc_completion_queue* cq) {
918
- if (!grpc_trace_pending_tags.enabled()) return;
919
-
920
- gpr_strvec v;
921
- gpr_strvec_init(&v);
922
- gpr_strvec_add(&v, gpr_strdup("PENDING TAGS:"));
953
+ if (!GRPC_TRACE_FLAG_ENABLED(grpc_trace_pending_tags)) return;
954
+ std::vector<std::string> parts;
955
+ parts.push_back("PENDING TAGS:");
923
956
  gpr_mu_lock(cq->mu);
924
957
  for (size_t i = 0; i < cq->outstanding_tag_count; i++) {
925
- char* s;
926
- gpr_asprintf(&s, " %p", cq->outstanding_tags[i]);
927
- gpr_strvec_add(&v, s);
958
+ parts.push_back(absl::StrFormat(" %p", cq->outstanding_tags[i]));
928
959
  }
929
960
  gpr_mu_unlock(cq->mu);
930
- char* out = gpr_strvec_flatten(&v, nullptr);
931
- gpr_strvec_destroy(&v);
932
- gpr_log(GPR_DEBUG, "%s", out);
933
- gpr_free(out);
961
+ gpr_log(GPR_DEBUG, "%s", absl::StrJoin(parts, "").c_str());
934
962
  }
935
963
  #else
936
- static void dump_pending_tags(grpc_completion_queue* cq) {}
964
+ static void dump_pending_tags(grpc_completion_queue* /*cq*/) {}
937
965
  #endif
938
966
 
939
967
  static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
@@ -960,7 +988,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
960
988
 
961
989
  grpc_millis deadline_millis = grpc_timespec_to_millis_round_up(deadline);
962
990
  cq_is_finished_arg is_finished_arg = {
963
- gpr_atm_no_barrier_load(&cqd->things_queued_ever),
991
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED),
964
992
  cq,
965
993
  deadline_millis,
966
994
  nullptr,
@@ -980,7 +1008,7 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
980
1008
  break;
981
1009
  }
982
1010
 
983
- grpc_cq_completion* c = cq_event_queue_pop(&cqd->queue);
1011
+ grpc_cq_completion* c = cqd->queue.Pop();
984
1012
 
985
1013
  if (c != nullptr) {
986
1014
  ret.type = GRPC_OP_COMPLETE;
@@ -994,16 +1022,17 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
994
1022
  so that the thread comes back quickly from poll to make a second
995
1023
  attempt at popping. Not doing this can potentially deadlock this
996
1024
  thread forever (if the deadline is infinity) */
997
- if (cq_event_queue_num_items(&cqd->queue) > 0) {
1025
+ if (cqd->queue.num_items() > 0) {
998
1026
  iteration_deadline = 0;
999
1027
  }
1000
1028
  }
1001
1029
 
1002
- if (gpr_atm_acq_load(&cqd->pending_events) == 0) {
1030
+ if (cqd->pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) == 0) {
1003
1031
  /* Before returning, check if the queue has any items left over (since
1004
- gpr_mpscq_pop() can sometimes return NULL even if the queue is not
1005
- empty. If so, keep retrying but do not return GRPC_QUEUE_SHUTDOWN */
1006
- if (cq_event_queue_num_items(&cqd->queue) > 0) {
1032
+ MultiProducerSingleConsumerQueue::Pop() can sometimes return NULL
1033
+ even if the queue is not empty. If so, keep retrying but do not
1034
+ return GRPC_QUEUE_SHUTDOWN */
1035
+ if (cqd->queue.num_items() > 0) {
1007
1036
  /* Go to the beginning of the loop. No point doing a poll because
1008
1037
  (cq->shutdown == true) is only possible when there is no pending
1009
1038
  work (i.e cq->pending_events == 0) and any outstanding completion
@@ -1011,15 +1040,15 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1011
1040
  continue;
1012
1041
  }
1013
1042
 
1014
- memset(&ret, 0, sizeof(ret));
1015
1043
  ret.type = GRPC_QUEUE_SHUTDOWN;
1044
+ ret.success = 0;
1016
1045
  break;
1017
1046
  }
1018
1047
 
1019
1048
  if (!is_finished_arg.first_loop &&
1020
1049
  grpc_core::ExecCtx::Get()->Now() >= deadline_millis) {
1021
- memset(&ret, 0, sizeof(ret));
1022
1050
  ret.type = GRPC_QUEUE_TIMEOUT;
1051
+ ret.success = 0;
1023
1052
  dump_pending_tags(cq);
1024
1053
  break;
1025
1054
  }
@@ -1036,16 +1065,16 @@ static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
1036
1065
  gpr_log(GPR_ERROR, "Completion queue next failed: %s", msg);
1037
1066
 
1038
1067
  GRPC_ERROR_UNREF(err);
1039
- memset(&ret, 0, sizeof(ret));
1040
1068
  ret.type = GRPC_QUEUE_TIMEOUT;
1069
+ ret.success = 0;
1041
1070
  dump_pending_tags(cq);
1042
1071
  break;
1043
1072
  }
1044
1073
  is_finished_arg.first_loop = false;
1045
1074
  }
1046
1075
 
1047
- if (cq_event_queue_num_items(&cqd->queue) > 0 &&
1048
- gpr_atm_acq_load(&cqd->pending_events) > 0) {
1076
+ if (cqd->queue.num_items() > 0 &&
1077
+ cqd->pending_events.Load(grpc_core::MemoryOrder::ACQUIRE) > 0) {
1049
1078
  gpr_mu_lock(cq->mu);
1050
1079
  cq->poller_vtable->kick(POLLSET_FROM_CQ(cq), nullptr);
1051
1080
  gpr_mu_unlock(cq->mu);
@@ -1069,7 +1098,7 @@ static void cq_finish_shutdown_next(grpc_completion_queue* cq) {
1069
1098
  cq_next_data* cqd = static_cast<cq_next_data*> DATA_FROM_CQ(cq);
1070
1099
 
1071
1100
  GPR_ASSERT(cqd->shutdown_called);
1072
- GPR_ASSERT(gpr_atm_no_barrier_load(&cqd->pending_events) == 0);
1101
+ GPR_ASSERT(cqd->pending_events.Load(grpc_core::MemoryOrder::RELAXED) == 0);
1073
1102
 
1074
1103
  cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done);
1075
1104
  }
@@ -1091,10 +1120,10 @@ static void cq_shutdown_next(grpc_completion_queue* cq) {
1091
1120
  return;
1092
1121
  }
1093
1122
  cqd->shutdown_called = true;
1094
- /* Doing a full_fetch_add (i.e acq/release) here to match with
1095
- * cq_begin_op_for_next and and cq_end_op_for_next functions which read/write
1123
+ /* Doing acq/release FetchSub here to match with
1124
+ * cq_begin_op_for_next and cq_end_op_for_next functions which read/write
1096
1125
  * on this counter without necessarily holding a lock on cq */
1097
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
1126
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
1098
1127
  cq_finish_shutdown_next(cq);
1099
1128
  }
1100
1129
  gpr_mu_unlock(cq->mu);
@@ -1143,12 +1172,12 @@ class ExecCtxPluck : public grpc_core::ExecCtx {
1143
1172
 
1144
1173
  GPR_ASSERT(a->stolen_completion == nullptr);
1145
1174
  gpr_atm current_last_seen_things_queued_ever =
1146
- gpr_atm_no_barrier_load(&cqd->things_queued_ever);
1175
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED);
1147
1176
  if (current_last_seen_things_queued_ever !=
1148
1177
  a->last_seen_things_queued_ever) {
1149
1178
  gpr_mu_lock(cq->mu);
1150
1179
  a->last_seen_things_queued_ever =
1151
- gpr_atm_no_barrier_load(&cqd->things_queued_ever);
1180
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED);
1152
1181
  grpc_cq_completion* c;
1153
1182
  grpc_cq_completion* prev = &cqd->completed_head;
1154
1183
  while ((c = (grpc_cq_completion*)(prev->next &
@@ -1185,7 +1214,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1185
1214
  grpc_pollset_worker* worker = nullptr;
1186
1215
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
1187
1216
 
1188
- if (grpc_cq_pluck_trace.enabled()) {
1217
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_cq_pluck_trace)) {
1189
1218
  GRPC_API_TRACE(
1190
1219
  "grpc_completion_queue_pluck("
1191
1220
  "cq=%p, tag=%p, "
@@ -1204,7 +1233,7 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1204
1233
  gpr_mu_lock(cq->mu);
1205
1234
  grpc_millis deadline_millis = grpc_timespec_to_millis_round_up(deadline);
1206
1235
  cq_is_finished_arg is_finished_arg = {
1207
- gpr_atm_no_barrier_load(&cqd->things_queued_ever),
1236
+ cqd->things_queued_ever.Load(grpc_core::MemoryOrder::RELAXED),
1208
1237
  cq,
1209
1238
  deadline_millis,
1210
1239
  nullptr,
@@ -1241,10 +1270,10 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1241
1270
  }
1242
1271
  prev = c;
1243
1272
  }
1244
- if (gpr_atm_no_barrier_load(&cqd->shutdown)) {
1273
+ if (cqd->shutdown.Load(grpc_core::MemoryOrder::RELAXED)) {
1245
1274
  gpr_mu_unlock(cq->mu);
1246
- memset(&ret, 0, sizeof(ret));
1247
1275
  ret.type = GRPC_QUEUE_SHUTDOWN;
1276
+ ret.success = 0;
1248
1277
  break;
1249
1278
  }
1250
1279
  if (!add_plucker(cq, tag, &worker)) {
@@ -1253,9 +1282,9 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1253
1282
  "is %d",
1254
1283
  GRPC_MAX_COMPLETION_QUEUE_PLUCKERS);
1255
1284
  gpr_mu_unlock(cq->mu);
1256
- memset(&ret, 0, sizeof(ret));
1257
1285
  /* TODO(ctiller): should we use a different result here */
1258
1286
  ret.type = GRPC_QUEUE_TIMEOUT;
1287
+ ret.success = 0;
1259
1288
  dump_pending_tags(cq);
1260
1289
  break;
1261
1290
  }
@@ -1263,8 +1292,8 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1263
1292
  grpc_core::ExecCtx::Get()->Now() >= deadline_millis) {
1264
1293
  del_plucker(cq, tag, &worker);
1265
1294
  gpr_mu_unlock(cq->mu);
1266
- memset(&ret, 0, sizeof(ret));
1267
1295
  ret.type = GRPC_QUEUE_TIMEOUT;
1296
+ ret.success = 0;
1268
1297
  dump_pending_tags(cq);
1269
1298
  break;
1270
1299
  }
@@ -1278,8 +1307,8 @@ static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
1278
1307
  gpr_log(GPR_ERROR, "Completion queue pluck failed: %s", msg);
1279
1308
 
1280
1309
  GRPC_ERROR_UNREF(err);
1281
- memset(&ret, 0, sizeof(ret));
1282
1310
  ret.type = GRPC_QUEUE_TIMEOUT;
1311
+ ret.success = 0;
1283
1312
  dump_pending_tags(cq);
1284
1313
  break;
1285
1314
  }
@@ -1304,8 +1333,8 @@ static void cq_finish_shutdown_pluck(grpc_completion_queue* cq) {
1304
1333
  cq_pluck_data* cqd = static_cast<cq_pluck_data*> DATA_FROM_CQ(cq);
1305
1334
 
1306
1335
  GPR_ASSERT(cqd->shutdown_called);
1307
- GPR_ASSERT(!gpr_atm_no_barrier_load(&cqd->shutdown));
1308
- gpr_atm_no_barrier_store(&cqd->shutdown, 1);
1336
+ GPR_ASSERT(!cqd->shutdown.Load(grpc_core::MemoryOrder::RELAXED));
1337
+ cqd->shutdown.Store(1, grpc_core::MemoryOrder::RELAXED);
1309
1338
 
1310
1339
  cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done);
1311
1340
  }
@@ -1329,7 +1358,7 @@ static void cq_shutdown_pluck(grpc_completion_queue* cq) {
1329
1358
  return;
1330
1359
  }
1331
1360
  cqd->shutdown_called = true;
1332
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
1361
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
1333
1362
  cq_finish_shutdown_pluck(cq);
1334
1363
  }
1335
1364
  gpr_mu_unlock(cq->mu);
@@ -1343,7 +1372,16 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) {
1343
1372
  GPR_ASSERT(cqd->shutdown_called);
1344
1373
 
1345
1374
  cq->poller_vtable->shutdown(POLLSET_FROM_CQ(cq), &cq->pollset_shutdown_done);
1346
- callback->Run(true);
1375
+ if (grpc_iomgr_is_any_background_poller_thread()) {
1376
+ grpc_core::ApplicationCallbackExecCtx::Enqueue(callback, true);
1377
+ return;
1378
+ }
1379
+
1380
+ // Schedule the callback on a closure if not internal or triggered
1381
+ // from a background poller thread.
1382
+ grpc_core::Executor::Run(
1383
+ GRPC_CLOSURE_CREATE(functor_callback, callback, nullptr),
1384
+ GRPC_ERROR_NONE);
1347
1385
  }
1348
1386
 
1349
1387
  static void cq_shutdown_callback(grpc_completion_queue* cq) {
@@ -1363,10 +1401,12 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
1363
1401
  return;
1364
1402
  }
1365
1403
  cqd->shutdown_called = true;
1366
- if (gpr_atm_full_fetch_add(&cqd->pending_events, -1) == 1) {
1404
+ if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
1405
+ gpr_mu_unlock(cq->mu);
1367
1406
  cq_finish_shutdown_callback(cq);
1407
+ } else {
1408
+ gpr_mu_unlock(cq->mu);
1368
1409
  }
1369
- gpr_mu_unlock(cq->mu);
1370
1410
  GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
1371
1411
  }
1372
1412
 
@@ -1374,6 +1414,7 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
1374
1414
  to zero here, then enter shutdown mode and wake up any waiters */
1375
1415
  void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
1376
1416
  GPR_TIMER_SCOPE("grpc_completion_queue_shutdown", 0);
1417
+ grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
1377
1418
  grpc_core::ExecCtx exec_ctx;
1378
1419
  GRPC_API_TRACE("grpc_completion_queue_shutdown(cq=%p)", 1, (cq));
1379
1420
  cq->vtable->shutdown(cq);