grpc 1.26.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 (1240) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +7860 -11139
  3. data/etc/roots.pem +44 -0
  4. data/include/grpc/grpc.h +2 -2
  5. data/include/grpc/grpc_security.h +59 -24
  6. data/include/grpc/grpc_security_constants.h +28 -0
  7. data/include/grpc/impl/codegen/grpc_types.h +38 -21
  8. data/include/grpc/impl/codegen/port_platform.h +14 -3
  9. data/include/grpc/impl/codegen/sync.h +5 -3
  10. data/include/grpc/impl/codegen/sync_abseil.h +36 -0
  11. data/include/grpc/module.modulemap +25 -37
  12. data/include/grpc/support/sync_abseil.h +26 -0
  13. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  14. data/src/core/ext/filters/client_channel/client_channel.cc +273 -264
  15. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
  16. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
  17. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  18. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  19. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  20. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  21. data/src/core/ext/filters/client_channel/http_proxy.cc +25 -15
  22. data/src/core/ext/filters/client_channel/lb_policy.cc +20 -18
  23. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  24. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +423 -627
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  32. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +88 -121
  34. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +28 -57
  35. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
  36. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -14
  38. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
  39. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +150 -101
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  45. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
  46. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +49 -77
  47. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  48. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  49. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  50. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  51. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +129 -128
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  54. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  55. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +17 -21
  56. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
  57. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  58. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +186 -135
  59. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  60. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  61. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +42 -45
  62. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +94 -103
  63. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  64. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
  65. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +61 -10
  66. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  67. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  68. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  69. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +242 -300
  70. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +21 -18
  71. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +56 -206
  72. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +11 -14
  73. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  74. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  75. data/src/core/ext/filters/client_channel/service_config.cc +144 -253
  76. data/src/core/ext/filters/client_channel/service_config.h +32 -109
  77. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  78. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  79. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  80. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  81. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  82. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1556 -232
  83. data/src/core/ext/filters/client_channel/xds/xds_api.h +213 -114
  84. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +237 -345
  85. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +34 -46
  86. data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
  87. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +18 -11
  88. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1326 -399
  89. data/src/core/ext/filters/client_channel/xds/xds_client.h +124 -41
  90. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +59 -138
  91. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +133 -154
  92. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  93. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  94. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  95. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  96. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  97. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  98. data/src/core/ext/filters/message_size/message_size_filter.cc +38 -44
  99. data/src/core/ext/filters/message_size/message_size_filter.h +5 -5
  100. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -10
  101. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  102. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +28 -29
  103. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  104. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  106. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  107. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  108. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  109. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  110. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  111. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  112. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  114. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  115. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  116. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  117. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  118. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -9
  119. data/src/core/ext/transport/inproc/inproc_transport.cc +41 -42
  120. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
  121. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
  122. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
  123. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
  124. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +5 -205
  125. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -788
  126. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  127. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  128. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  129. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  130. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  131. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +5 -362
  133. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
  134. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +403 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1447 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +30 -8
  137. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +2 -0
  139. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +2 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +7 -4
  141. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
  142. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +87 -23
  145. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +262 -62
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +20 -15
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +27 -4
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +46 -25
  153. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +98 -25
  154. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +2 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +77 -21
  156. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +201 -4
  157. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  158. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  159. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -0
  160. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +8 -68
  161. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
  162. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +92 -0
  163. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
  164. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +2 -71
  165. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
  166. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +91 -0
  167. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +266 -0
  168. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +2 -0
  169. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +31 -0
  170. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
  171. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +109 -0
  172. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +399 -0
  173. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +18 -0
  174. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
  175. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +145 -0
  176. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
  177. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +43 -0
  178. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
  179. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +30 -0
  180. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
  181. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +63 -0
  182. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
  183. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +18 -0
  184. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
  185. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +815 -0
  186. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +3032 -0
  187. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +59 -0
  188. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
  189. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +28 -0
  190. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
  191. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +228 -0
  192. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
  193. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +316 -0
  194. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1132 -0
  195. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +33 -0
  196. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
  197. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  198. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  199. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  200. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  201. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  202. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  203. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +63 -0
  204. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +144 -0
  205. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +53 -0
  206. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
  207. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +88 -0
  208. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
  209. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  210. data/src/core/ext/upb-generated/envoy/type/range.upb.c +12 -0
  211. data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
  212. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +29 -0
  213. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
  214. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +89 -0
  215. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
  216. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  217. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  218. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
  219. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
  220. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +13 -5
  221. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -0
  222. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
  223. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
  224. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
  225. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
  226. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  227. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  228. data/src/core/ext/upb-generated/validate/validate.upb.c +44 -39
  229. data/src/core/ext/upb-generated/validate/validate.upb.h +155 -119
  230. data/src/core/lib/channel/channel_args.cc +15 -14
  231. data/src/core/lib/channel/channel_args.h +3 -1
  232. data/src/core/lib/channel/channel_stack.h +20 -13
  233. data/src/core/lib/channel/channel_trace.cc +32 -41
  234. data/src/core/lib/channel/channel_trace.h +3 -3
  235. data/src/core/lib/channel/channelz.cc +163 -254
  236. data/src/core/lib/channel/channelz.h +20 -12
  237. data/src/core/lib/channel/channelz_registry.cc +52 -77
  238. data/src/core/lib/channel/channelz_registry.h +4 -4
  239. data/src/core/lib/channel/connected_channel.cc +7 -5
  240. data/src/core/lib/channel/context.h +1 -1
  241. data/src/core/lib/channel/handshaker.cc +11 -13
  242. data/src/core/lib/channel/handshaker.h +4 -2
  243. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  244. data/src/core/lib/channel/status_util.cc +2 -3
  245. data/src/core/lib/compression/message_compress.cc +5 -1
  246. data/src/core/lib/debug/stats.cc +21 -27
  247. data/src/core/lib/debug/stats.h +3 -1
  248. data/src/core/lib/gpr/spinlock.h +2 -3
  249. data/src/core/lib/gpr/string.cc +2 -26
  250. data/src/core/lib/gpr/string.h +0 -16
  251. data/src/core/lib/gpr/sync_abseil.cc +116 -0
  252. data/src/core/lib/gpr/sync_posix.cc +8 -5
  253. data/src/core/lib/gpr/sync_windows.cc +4 -2
  254. data/src/core/lib/gpr/time.cc +4 -0
  255. data/src/core/lib/gpr/time_posix.cc +1 -1
  256. data/src/core/lib/gpr/time_precise.cc +1 -1
  257. data/src/core/lib/gprpp/atomic.h +6 -6
  258. data/src/core/lib/gprpp/fork.cc +1 -1
  259. data/src/core/lib/gprpp/host_port.cc +30 -36
  260. data/src/core/lib/gprpp/host_port.h +14 -17
  261. data/src/core/lib/gprpp/map.h +5 -11
  262. data/src/core/lib/gprpp/memory.h +2 -6
  263. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  264. data/src/core/lib/gprpp/sync.h +9 -0
  265. data/src/core/lib/http/format_request.cc +46 -65
  266. data/src/core/lib/http/httpcli.cc +2 -3
  267. data/src/core/lib/http/httpcli.h +2 -3
  268. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  269. data/src/core/lib/http/parser.h +2 -3
  270. data/src/core/lib/iomgr/buffer_list.cc +36 -35
  271. data/src/core/lib/iomgr/buffer_list.h +22 -21
  272. data/src/core/lib/iomgr/call_combiner.h +3 -2
  273. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  274. data/src/core/lib/iomgr/closure.h +2 -3
  275. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  276. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  277. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  278. data/src/core/lib/iomgr/error.cc +6 -9
  279. data/src/core/lib/iomgr/error.h +4 -5
  280. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  281. data/src/core/lib/iomgr/ev_apple.h +43 -0
  282. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  283. data/src/core/lib/iomgr/ev_epollex_linux.cc +14 -7
  284. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  285. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  286. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  287. data/src/core/lib/iomgr/executor.cc +1 -1
  288. data/src/core/lib/iomgr/fork_posix.cc +4 -0
  289. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  290. data/src/core/lib/iomgr/load_file.cc +1 -0
  291. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +87 -0
  292. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +88 -0
  293. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  294. data/src/core/lib/iomgr/pollset_uv.h +32 -0
  295. data/src/core/lib/iomgr/port.h +1 -0
  296. data/src/core/lib/iomgr/python_util.h +46 -0
  297. data/src/core/lib/iomgr/resolve_address.h +4 -6
  298. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  299. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  300. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  301. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  302. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  303. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  304. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  305. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  306. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  307. data/src/core/lib/iomgr/socket_utils_common_posix.cc +21 -26
  308. data/src/core/lib/iomgr/socket_utils_posix.h +15 -0
  309. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  310. data/src/core/lib/iomgr/tcp_client_posix.cc +25 -22
  311. data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
  312. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  313. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  314. data/src/core/lib/iomgr/tcp_custom.h +3 -0
  315. data/src/core/lib/iomgr/tcp_posix.cc +608 -56
  316. data/src/core/lib/iomgr/tcp_server_custom.cc +20 -11
  317. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  318. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +13 -4
  319. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  320. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  321. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  322. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  323. data/src/core/lib/iomgr/timer_generic.h +39 -0
  324. data/src/core/lib/iomgr/timer_heap.h +2 -3
  325. data/src/core/lib/iomgr/udp_server.cc +9 -14
  326. data/src/core/lib/iomgr/work_serializer.cc +155 -0
  327. data/src/core/lib/iomgr/work_serializer.h +65 -0
  328. data/src/core/lib/json/json.h +209 -68
  329. data/src/core/lib/json/json_reader.cc +511 -319
  330. data/src/core/lib/json/json_writer.cc +202 -110
  331. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  332. data/src/core/lib/security/credentials/composite/composite_credentials.cc +19 -0
  333. data/src/core/lib/security/credentials/composite/composite_credentials.h +11 -4
  334. data/src/core/lib/security/credentials/credentials.cc +0 -84
  335. data/src/core/lib/security/credentials/credentials.h +18 -60
  336. data/src/core/lib/security/credentials/fake/fake_credentials.h +6 -1
  337. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -12
  338. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  339. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
  341. data/src/core/lib/security/credentials/jwt/json_token.h +4 -6
  342. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
  343. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  344. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +151 -168
  345. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -6
  346. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +92 -61
  347. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +10 -4
  348. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -4
  349. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +4 -1
  350. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +43 -13
  351. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +47 -11
  352. data/src/core/lib/security/credentials/tls/tls_credentials.cc +128 -0
  353. data/src/core/lib/security/credentials/tls/tls_credentials.h +62 -0
  354. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +34 -6
  355. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +29 -9
  356. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +2 -2
  357. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -4
  358. data/src/core/lib/security/security_connector/local/local_security_connector.cc +32 -7
  359. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  360. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -37
  361. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  362. data/src/core/lib/security/security_connector/ssl_utils.cc +107 -16
  363. data/src/core/lib/security/security_connector/ssl_utils.h +24 -11
  364. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +603 -0
  365. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +183 -0
  366. data/src/core/lib/security/transport/client_auth_filter.cc +34 -2
  367. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  368. data/src/core/lib/security/util/json_util.cc +22 -15
  369. data/src/core/lib/security/util/json_util.h +2 -2
  370. data/src/core/lib/slice/slice_intern.cc +2 -3
  371. data/src/core/lib/slice/slice_internal.h +14 -0
  372. data/src/core/lib/slice/slice_utils.h +9 -0
  373. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  374. data/src/core/lib/surface/call.cc +2 -3
  375. data/src/core/lib/surface/call_log_batch.cc +50 -58
  376. data/src/core/lib/surface/channel.cc +53 -31
  377. data/src/core/lib/surface/channel.h +35 -4
  378. data/src/core/lib/surface/channel_ping.cc +2 -3
  379. data/src/core/lib/surface/completion_queue.cc +55 -34
  380. data/src/core/lib/surface/event_string.cc +18 -25
  381. data/src/core/lib/surface/event_string.h +3 -1
  382. data/src/core/lib/surface/init_secure.cc +1 -4
  383. data/src/core/lib/surface/server.cc +570 -369
  384. data/src/core/lib/surface/server.h +32 -0
  385. data/src/core/lib/surface/version.cc +2 -2
  386. data/src/core/lib/transport/byte_stream.h +7 -2
  387. data/src/core/lib/transport/connectivity_state.cc +7 -6
  388. data/src/core/lib/transport/connectivity_state.h +5 -3
  389. data/src/core/lib/transport/metadata.cc +3 -3
  390. data/src/core/lib/transport/metadata_batch.h +2 -3
  391. data/src/core/lib/transport/static_metadata.h +1 -1
  392. data/src/core/lib/transport/status_conversion.cc +6 -14
  393. data/src/core/lib/transport/transport.cc +2 -3
  394. data/src/core/lib/transport/transport.h +3 -2
  395. data/src/core/lib/transport/transport_op_string.cc +61 -102
  396. data/src/core/lib/uri/uri_parser.h +2 -3
  397. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  398. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  399. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +9 -2
  400. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  401. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +44 -4
  402. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +10 -2
  403. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  404. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +3 -3
  405. data/src/core/tsi/fake_transport_security.cc +17 -18
  406. data/src/core/tsi/fake_transport_security.h +2 -0
  407. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  408. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  409. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  410. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
  411. data/src/core/tsi/ssl_transport_security.cc +197 -47
  412. data/src/core/tsi/ssl_transport_security.h +23 -9
  413. data/src/core/tsi/ssl_types.h +0 -2
  414. data/src/core/tsi/transport_security.cc +13 -0
  415. data/src/core/tsi/transport_security.h +6 -9
  416. data/src/core/tsi/transport_security_grpc.cc +2 -2
  417. data/src/core/tsi/transport_security_grpc.h +4 -5
  418. data/src/core/tsi/transport_security_interface.h +15 -3
  419. data/src/ruby/bin/math_pb.rb +5 -5
  420. data/src/ruby/ext/grpc/rb_call.c +9 -1
  421. data/src/ruby/ext/grpc/rb_call_credentials.c +4 -1
  422. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
  423. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
  424. data/src/ruby/lib/grpc/errors.rb +103 -42
  425. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  426. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  427. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  428. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  429. data/src/ruby/lib/grpc/structs.rb +1 -1
  430. data/src/ruby/lib/grpc/version.rb +1 -1
  431. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  432. data/src/ruby/pb/grpc/health/v1/health_pb.rb +3 -3
  433. data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -1
  434. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +34 -13
  435. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  436. data/src/ruby/spec/debug_message_spec.rb +134 -0
  437. data/src/ruby/spec/generic/service_spec.rb +2 -0
  438. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +5 -0
  439. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -0
  440. data/src/ruby/spec/testdata/ca.pem +18 -13
  441. data/src/ruby/spec/testdata/client.key +26 -14
  442. data/src/ruby/spec/testdata/client.pem +18 -12
  443. data/src/ruby/spec/testdata/server1.key +26 -14
  444. data/src/ruby/spec/testdata/server1.pem +20 -14
  445. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +159 -0
  446. data/third_party/abseil-cpp/absl/base/attributes.h +621 -0
  447. data/third_party/abseil-cpp/absl/base/call_once.h +226 -0
  448. data/third_party/abseil-cpp/absl/base/casts.h +184 -0
  449. data/third_party/abseil-cpp/absl/base/config.h +671 -0
  450. data/third_party/abseil-cpp/absl/base/const_init.h +76 -0
  451. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +129 -0
  452. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +389 -0
  453. data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +200 -0
  454. data/third_party/abseil-cpp/absl/base/internal/bits.h +218 -0
  455. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +107 -0
  456. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +94 -0
  457. data/third_party/abseil-cpp/absl/base/internal/endian.h +266 -0
  458. data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
  459. data/third_party/abseil-cpp/absl/base/internal/hide_ptr.h +51 -0
  460. data/third_party/abseil-cpp/absl/base/internal/identity.h +37 -0
  461. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +107 -0
  462. data/third_party/abseil-cpp/absl/base/internal/invoke.h +187 -0
  463. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +107 -0
  464. data/third_party/abseil-cpp/absl/base/internal/per_thread_tls.h +52 -0
  465. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +240 -0
  466. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +183 -0
  467. data/third_party/abseil-cpp/absl/base/internal/scheduling_mode.h +58 -0
  468. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +233 -0
  469. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +243 -0
  470. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +35 -0
  471. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +66 -0
  472. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +46 -0
  473. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc +81 -0
  474. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +93 -0
  475. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +37 -0
  476. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +416 -0
  477. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +66 -0
  478. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +271 -0
  479. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +152 -0
  480. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +259 -0
  481. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +108 -0
  482. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.h +75 -0
  483. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +66 -0
  484. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +158 -0
  485. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +140 -0
  486. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +124 -0
  487. data/third_party/abseil-cpp/absl/base/log_severity.cc +27 -0
  488. data/third_party/abseil-cpp/absl/base/log_severity.h +121 -0
  489. data/third_party/abseil-cpp/absl/base/macros.h +220 -0
  490. data/third_party/abseil-cpp/absl/base/optimization.h +181 -0
  491. data/third_party/abseil-cpp/absl/base/options.h +211 -0
  492. data/third_party/abseil-cpp/absl/base/policy_checks.h +111 -0
  493. data/third_party/abseil-cpp/absl/base/port.h +26 -0
  494. data/third_party/abseil-cpp/absl/base/thread_annotations.h +280 -0
  495. data/third_party/abseil-cpp/absl/container/inlined_vector.h +848 -0
  496. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +265 -0
  497. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +892 -0
  498. data/third_party/abseil-cpp/absl/memory/memory.h +695 -0
  499. data/third_party/abseil-cpp/absl/meta/type_traits.h +759 -0
  500. data/third_party/abseil-cpp/absl/numeric/int128.cc +404 -0
  501. data/third_party/abseil-cpp/absl/numeric/int128.h +1091 -0
  502. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +302 -0
  503. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +308 -0
  504. data/third_party/abseil-cpp/absl/strings/ascii.cc +200 -0
  505. data/third_party/abseil-cpp/absl/strings/ascii.h +242 -0
  506. data/third_party/abseil-cpp/absl/strings/charconv.cc +984 -0
  507. data/third_party/abseil-cpp/absl/strings/charconv.h +119 -0
  508. data/third_party/abseil-cpp/absl/strings/escaping.cc +949 -0
  509. data/third_party/abseil-cpp/absl/strings/escaping.h +164 -0
  510. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +156 -0
  511. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +359 -0
  512. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +423 -0
  513. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +504 -0
  514. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.h +99 -0
  515. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +180 -0
  516. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +58 -0
  517. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +112 -0
  518. data/third_party/abseil-cpp/absl/strings/internal/memutil.h +148 -0
  519. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +36 -0
  520. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +89 -0
  521. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +73 -0
  522. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +248 -0
  523. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
  524. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
  525. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
  526. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
  527. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
  528. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
  529. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
  530. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
  531. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
  532. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
  533. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
  534. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
  535. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
  536. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +314 -0
  537. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +455 -0
  538. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +53 -0
  539. data/third_party/abseil-cpp/absl/strings/internal/utf8.h +50 -0
  540. data/third_party/abseil-cpp/absl/strings/match.cc +40 -0
  541. data/third_party/abseil-cpp/absl/strings/match.h +90 -0
  542. data/third_party/abseil-cpp/absl/strings/numbers.cc +965 -0
  543. data/third_party/abseil-cpp/absl/strings/numbers.h +266 -0
  544. data/third_party/abseil-cpp/absl/strings/str_cat.cc +246 -0
  545. data/third_party/abseil-cpp/absl/strings/str_cat.h +408 -0
  546. data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
  547. data/third_party/abseil-cpp/absl/strings/str_join.h +293 -0
  548. data/third_party/abseil-cpp/absl/strings/str_replace.cc +82 -0
  549. data/third_party/abseil-cpp/absl/strings/str_replace.h +219 -0
  550. data/third_party/abseil-cpp/absl/strings/str_split.cc +139 -0
  551. data/third_party/abseil-cpp/absl/strings/str_split.h +513 -0
  552. data/third_party/abseil-cpp/absl/strings/string_view.cc +235 -0
  553. data/third_party/abseil-cpp/absl/strings/string_view.h +622 -0
  554. data/third_party/abseil-cpp/absl/strings/strip.h +91 -0
  555. data/third_party/abseil-cpp/absl/strings/substitute.cc +171 -0
  556. data/third_party/abseil-cpp/absl/strings/substitute.h +693 -0
  557. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  558. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  559. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  560. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  561. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  562. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  563. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  564. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  565. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  566. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  567. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  568. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  569. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  570. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  571. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  572. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  573. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  574. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  575. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  576. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  577. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  578. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  579. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  580. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  581. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  582. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  583. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  584. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  585. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  586. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  587. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  588. data/third_party/abseil-cpp/absl/types/bad_optional_access.cc +48 -0
  589. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +78 -0
  590. data/third_party/abseil-cpp/absl/types/internal/optional.h +396 -0
  591. data/third_party/abseil-cpp/absl/types/internal/span.h +128 -0
  592. data/third_party/abseil-cpp/absl/types/optional.h +776 -0
  593. data/third_party/abseil-cpp/absl/types/span.h +713 -0
  594. data/third_party/abseil-cpp/absl/utility/utility.h +350 -0
  595. data/third_party/boringssl-with-bazel/err_data.c +1439 -0
  596. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
  597. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
  598. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
  599. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
  600. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
  601. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
  602. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
  603. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
  604. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
  605. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
  606. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
  607. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
  608. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
  609. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +212 -0
  610. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
  611. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
  612. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
  613. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
  614. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
  615. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
  616. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
  617. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
  618. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
  619. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
  620. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
  621. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
  622. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
  623. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
  624. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
  625. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
  626. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
  627. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
  628. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
  629. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
  630. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +545 -0
  631. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +279 -0
  632. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +317 -0
  633. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
  634. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
  635. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +488 -0
  636. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
  637. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
  638. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
  639. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
  640. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
  641. data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +172 -0
  642. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
  643. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
  644. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +719 -0
  645. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +688 -0
  646. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
  647. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
  648. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
  649. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
  650. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
  651. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +152 -0
  652. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
  653. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
  654. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +891 -0
  655. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
  656. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
  657. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
  658. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
  659. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
  660. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
  661. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
  662. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
  663. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
  664. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
  665. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
  666. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
  667. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
  668. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +220 -0
  669. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
  670. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
  671. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +291 -0
  672. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
  673. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +226 -0
  674. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +2159 -0
  675. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +7872 -0
  676. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +146 -0
  677. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +539 -0
  678. data/third_party/boringssl-with-bazel/src/crypto/dh/check.c +217 -0
  679. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +533 -0
  680. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
  681. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
  682. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
  683. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +980 -0
  684. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
  685. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
  686. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +95 -0
  687. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  688. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  689. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +124 -0
  690. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
  691. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
  692. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +850 -0
  693. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
  694. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
  695. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
  696. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
  697. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
  698. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
  699. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
  700. data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +286 -0
  701. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
  702. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
  703. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
  704. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +648 -0
  705. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
  706. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
  707. data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +248 -0
  708. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
  709. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
  710. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
  711. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
  712. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
  713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
  714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
  715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +238 -0
  716. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
  717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +106 -0
  718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +263 -0
  719. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
  720. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
  721. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
  722. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
  723. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
  724. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
  725. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
  726. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
  727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +1288 -0
  728. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
  729. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
  730. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
  731. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +694 -0
  732. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
  733. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +502 -0
  734. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
  735. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +749 -0
  736. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +1068 -0
  737. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
  738. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
  739. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
  740. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
  741. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
  742. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
  743. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
  744. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +1302 -0
  745. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
  746. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
  747. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
  748. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
  749. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
  750. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
  751. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +296 -0
  752. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
  753. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
  754. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +1252 -0
  755. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +465 -0
  756. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +524 -0
  757. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +100 -0
  758. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +775 -0
  759. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +328 -0
  760. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +1178 -0
  761. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9497 -0
  762. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +632 -0
  763. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
  764. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  765. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  766. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +175 -0
  767. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +357 -0
  768. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +270 -0
  769. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
  770. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +270 -0
  771. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  772. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +328 -0
  773. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
  774. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
  775. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
  776. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
  777. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
  778. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
  779. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
  780. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
  781. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
  782. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +729 -0
  783. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
  784. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +441 -0
  785. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
  786. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
  787. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
  788. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  789. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  790. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  791. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +163 -0
  792. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +378 -0
  793. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +391 -0
  794. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +243 -0
  795. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +127 -0
  796. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
  797. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +898 -0
  798. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +1358 -0
  799. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
  800. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
  801. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
  802. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
  803. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
  804. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +544 -0
  805. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
  806. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
  807. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
  808. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +2100 -0
  809. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +61 -0
  810. data/third_party/boringssl-with-bazel/src/crypto/internal.h +834 -0
  811. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
  812. data/third_party/boringssl-with-bazel/src/crypto/mem.c +359 -0
  813. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +549 -0
  814. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +11585 -0
  815. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
  816. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
  817. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +360 -0
  818. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +777 -0
  819. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +87 -0
  820. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +257 -0
  821. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +218 -0
  822. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
  823. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
  824. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
  825. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
  826. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +385 -0
  827. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
  828. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
  829. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
  830. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
  831. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
  832. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +318 -0
  833. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +305 -0
  834. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +856 -0
  835. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
  836. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +220 -0
  837. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +52 -0
  838. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
  839. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
  840. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
  841. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +69 -0
  842. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
  843. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
  844. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
  845. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
  846. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
  847. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +82 -0
  848. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
  849. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
  850. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
  851. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +210 -0
  852. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +260 -0
  853. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  854. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  855. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  856. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
  857. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
  858. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
  859. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +114 -0
  860. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
  861. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
  862. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +458 -0
  863. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +275 -0
  864. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
  865. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
  866. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
  867. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
  868. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
  869. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
  870. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
  871. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
  872. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
  873. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
  874. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
  875. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +476 -0
  876. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
  877. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
  878. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
  879. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
  880. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +198 -0
  881. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +116 -0
  882. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +341 -0
  883. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +185 -0
  884. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +326 -0
  885. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
  886. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
  887. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +2487 -0
  888. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +671 -0
  889. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
  890. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +389 -0
  891. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
  892. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
  893. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
  894. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +399 -0
  895. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
  896. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
  897. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
  898. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
  899. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
  900. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
  901. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
  902. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
  903. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
  904. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
  905. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
  906. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
  907. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
  908. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
  909. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
  910. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
  911. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
  912. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
  913. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
  914. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
  915. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
  916. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
  917. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
  918. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
  919. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +629 -0
  920. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
  921. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
  922. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
  923. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
  924. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
  925. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +100 -0
  926. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
  927. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
  928. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
  929. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +218 -0
  930. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
  931. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
  932. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
  933. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
  934. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
  935. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
  936. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
  937. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
  938. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
  939. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
  940. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +843 -0
  941. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
  942. data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
  943. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1395 -0
  944. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
  945. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
  946. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
  947. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
  948. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
  949. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
  950. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +575 -0
  951. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
  952. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
  953. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
  954. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +1057 -0
  955. data/third_party/boringssl-with-bazel/src/include/openssl/buf.h +137 -0
  956. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
  957. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +561 -0
  958. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
  959. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
  960. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
  961. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
  962. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
  963. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
  964. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +149 -0
  965. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
  966. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
  967. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +319 -0
  968. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +331 -0
  969. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +457 -0
  970. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
  971. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
  972. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +424 -0
  973. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +372 -0
  974. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
  975. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +205 -0
  976. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
  977. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +465 -0
  978. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1050 -0
  979. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
  980. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
  981. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
  982. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
  983. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
  984. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
  985. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
  986. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
  987. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +175 -0
  988. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +4259 -0
  989. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
  990. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
  991. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
  992. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
  993. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
  994. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
  995. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
  996. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
  997. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
  998. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
  999. data/third_party/boringssl-with-bazel/src/include/openssl/poly1305.h +49 -0
  1000. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
  1001. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +111 -0
  1002. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
  1003. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
  1004. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +818 -0
  1005. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
  1006. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +294 -0
  1007. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
  1008. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
  1009. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
  1010. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +5198 -0
  1011. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
  1012. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
  1013. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
  1014. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +632 -0
  1015. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  1016. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
  1017. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1207 -0
  1018. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +681 -0
  1019. data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
  1020. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
  1021. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +837 -0
  1022. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +268 -0
  1023. data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +273 -0
  1024. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
  1025. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +200 -0
  1026. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
  1027. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +675 -0
  1028. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +703 -0
  1029. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +1890 -0
  1030. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1805 -0
  1031. data/third_party/boringssl-with-bazel/src/ssl/internal.h +3572 -0
  1032. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +724 -0
  1033. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +221 -0
  1034. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +458 -0
  1035. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
  1036. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +856 -0
  1037. data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +306 -0
  1038. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +1019 -0
  1039. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +1718 -0
  1040. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
  1041. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
  1042. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +3015 -0
  1043. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +835 -0
  1044. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +1333 -0
  1045. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +230 -0
  1046. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
  1047. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +394 -0
  1048. data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
  1049. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +365 -0
  1050. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +3870 -0
  1051. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +689 -0
  1052. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1017 -0
  1053. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +513 -0
  1054. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +1096 -0
  1055. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +317 -0
  1056. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +703 -0
  1057. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +981 -0
  1058. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +619 -0
  1059. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3147 -0
  1060. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1226 -0
  1061. data/third_party/upb/upb/decode.c +4 -0
  1062. data/third_party/upb/upb/port.c +0 -1
  1063. data/third_party/upb/upb/port_def.inc +1 -3
  1064. data/third_party/upb/upb/table.c +2 -1
  1065. metadata +758 -509
  1066. data/src/boringssl/err_data.c +0 -1407
  1067. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1898
  1068. data/src/core/lib/gprpp/inlined_vector.h +0 -246
  1069. data/src/core/lib/gprpp/optional.h +0 -48
  1070. data/src/core/lib/gprpp/string_view.h +0 -165
  1071. data/src/core/lib/iomgr/logical_thread.cc +0 -103
  1072. data/src/core/lib/iomgr/logical_thread.h +0 -52
  1073. data/src/core/lib/json/json.cc +0 -94
  1074. data/src/core/lib/json/json_common.h +0 -34
  1075. data/src/core/lib/json/json_reader.h +0 -146
  1076. data/src/core/lib/json/json_string.cc +0 -367
  1077. data/src/core/lib/json/json_writer.h +0 -84
  1078. data/src/core/lib/security/credentials/tls/spiffe_credentials.cc +0 -129
  1079. data/src/core/lib/security/credentials/tls/spiffe_credentials.h +0 -62
  1080. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +0 -541
  1081. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +0 -158
  1082. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3297
  1083. data/third_party/boringssl/crypto/asn1/a_time.c +0 -213
  1084. data/third_party/boringssl/crypto/bio/connect.c +0 -546
  1085. data/third_party/boringssl/crypto/bio/fd.c +0 -280
  1086. data/third_party/boringssl/crypto/bio/file.c +0 -318
  1087. data/third_party/boringssl/crypto/bio/pair.c +0 -489
  1088. data/third_party/boringssl/crypto/buf/buf.c +0 -231
  1089. data/third_party/boringssl/crypto/bytestring/cbb.c +0 -680
  1090. data/third_party/boringssl/crypto/bytestring/cbs.c +0 -631
  1091. data/third_party/boringssl/crypto/cipher_extra/derive_key.c +0 -152
  1092. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +0 -883
  1093. data/third_party/boringssl/crypto/cpu-arm-linux.c +0 -219
  1094. data/third_party/boringssl/crypto/cpu-intel.c +0 -282
  1095. data/third_party/boringssl/crypto/crypto.c +0 -215
  1096. data/third_party/boringssl/crypto/curve25519/spake25519.c +0 -539
  1097. data/third_party/boringssl/crypto/dh/check.c +0 -217
  1098. data/third_party/boringssl/crypto/dh/dh.c +0 -519
  1099. data/third_party/boringssl/crypto/dsa/dsa.c +0 -970
  1100. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +0 -96
  1101. data/third_party/boringssl/crypto/ecdh_extra/ecdh_extra.c +0 -124
  1102. data/third_party/boringssl/crypto/err/err.c +0 -849
  1103. data/third_party/boringssl/crypto/evp/p_ec.c +0 -287
  1104. data/third_party/boringssl/crypto/evp/p_rsa.c +0 -636
  1105. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +0 -249
  1106. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
  1107. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +0 -240
  1108. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +0 -108
  1109. data/third_party/boringssl/crypto/fipsmodule/bcm.c +0 -260
  1110. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +0 -1288
  1111. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +0 -691
  1112. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +0 -502
  1113. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +0 -873
  1114. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +0 -1069
  1115. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +0 -1304
  1116. data/third_party/boringssl/crypto/fipsmodule/digest/digests.c +0 -280
  1117. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +0 -1080
  1118. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +0 -479
  1119. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -483
  1120. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +0 -82
  1121. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +0 -503
  1122. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +0 -336
  1123. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +0 -1187
  1124. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -9501
  1125. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +0 -651
  1126. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +0 -96
  1127. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +0 -380
  1128. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +0 -84
  1129. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +0 -227
  1130. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +0 -122
  1131. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +0 -313
  1132. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +0 -877
  1133. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +0 -451
  1134. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +0 -127
  1135. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +0 -363
  1136. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +0 -481
  1137. data/third_party/boringssl/crypto/fipsmodule/rsa/blinding.c +0 -239
  1138. data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -126
  1139. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +0 -879
  1140. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +0 -1335
  1141. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +0 -535
  1142. data/third_party/boringssl/crypto/hrss/hrss.c +0 -2201
  1143. data/third_party/boringssl/crypto/hrss/internal.h +0 -62
  1144. data/third_party/boringssl/crypto/internal.h +0 -814
  1145. data/third_party/boringssl/crypto/mem.c +0 -272
  1146. data/third_party/boringssl/crypto/obj/obj.c +0 -554
  1147. data/third_party/boringssl/crypto/obj/obj_dat.h +0 -11550
  1148. data/third_party/boringssl/crypto/pem/pem_info.c +0 -361
  1149. data/third_party/boringssl/crypto/pem/pem_lib.c +0 -777
  1150. data/third_party/boringssl/crypto/pem/pem_oth.c +0 -88
  1151. data/third_party/boringssl/crypto/pem/pem_pk8.c +0 -258
  1152. data/third_party/boringssl/crypto/pem/pem_pkey.c +0 -219
  1153. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +0 -385
  1154. data/third_party/boringssl/crypto/poly1305/poly1305.c +0 -318
  1155. data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +0 -304
  1156. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +0 -839
  1157. data/third_party/boringssl/crypto/pool/pool.c +0 -221
  1158. data/third_party/boringssl/crypto/rand_extra/deterministic.c +0 -56
  1159. data/third_party/boringssl/crypto/rand_extra/windows.c +0 -53
  1160. data/third_party/boringssl/crypto/siphash/siphash.c +0 -80
  1161. data/third_party/boringssl/crypto/thread_pthread.c +0 -206
  1162. data/third_party/boringssl/crypto/thread_win.c +0 -256
  1163. data/third_party/boringssl/crypto/x509/a_verify.c +0 -115
  1164. data/third_party/boringssl/crypto/x509/by_dir.c +0 -458
  1165. data/third_party/boringssl/crypto/x509/by_file.c +0 -276
  1166. data/third_party/boringssl/crypto/x509/x509_cmp.c +0 -477
  1167. data/third_party/boringssl/crypto/x509/x509_obj.c +0 -198
  1168. data/third_party/boringssl/crypto/x509/x509_r2x.c +0 -117
  1169. data/third_party/boringssl/crypto/x509/x509_req.c +0 -342
  1170. data/third_party/boringssl/crypto/x509/x509_set.c +0 -169
  1171. data/third_party/boringssl/crypto/x509/x509_trs.c +0 -327
  1172. data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -2483
  1173. data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -672
  1174. data/third_party/boringssl/crypto/x509/x509name.c +0 -388
  1175. data/third_party/boringssl/crypto/x509/x_all.c +0 -400
  1176. data/third_party/boringssl/crypto/x509v3/v3_alt.c +0 -629
  1177. data/third_party/boringssl/crypto/x509v3/v3_enum.c +0 -100
  1178. data/third_party/boringssl/crypto/x509v3/v3_info.c +0 -219
  1179. data/third_party/boringssl/crypto/x509v3/v3_purp.c +0 -844
  1180. data/third_party/boringssl/crypto/x509v3/v3_utl.c +0 -1396
  1181. data/third_party/boringssl/include/openssl/base.h +0 -571
  1182. data/third_party/boringssl/include/openssl/bn.h +0 -1045
  1183. data/third_party/boringssl/include/openssl/buf.h +0 -137
  1184. data/third_party/boringssl/include/openssl/bytestring.h +0 -527
  1185. data/third_party/boringssl/include/openssl/crypto.h +0 -144
  1186. data/third_party/boringssl/include/openssl/dh.h +0 -299
  1187. data/third_party/boringssl/include/openssl/digest.h +0 -330
  1188. data/third_party/boringssl/include/openssl/dsa.h +0 -441
  1189. data/third_party/boringssl/include/openssl/ec.h +0 -417
  1190. data/third_party/boringssl/include/openssl/ec_key.h +0 -370
  1191. data/third_party/boringssl/include/openssl/ecdsa.h +0 -199
  1192. data/third_party/boringssl/include/openssl/err.h +0 -461
  1193. data/third_party/boringssl/include/openssl/evp.h +0 -1030
  1194. data/third_party/boringssl/include/openssl/mem.h +0 -160
  1195. data/third_party/boringssl/include/openssl/nid.h +0 -4245
  1196. data/third_party/boringssl/include/openssl/poly1305.h +0 -51
  1197. data/third_party/boringssl/include/openssl/rand.h +0 -125
  1198. data/third_party/boringssl/include/openssl/rsa.h +0 -787
  1199. data/third_party/boringssl/include/openssl/sha.h +0 -268
  1200. data/third_party/boringssl/include/openssl/ssl.h +0 -5113
  1201. data/third_party/boringssl/include/openssl/tls1.h +0 -634
  1202. data/third_party/boringssl/include/openssl/x509.h +0 -1205
  1203. data/third_party/boringssl/include/openssl/x509_vfy.h +0 -680
  1204. data/third_party/boringssl/ssl/d1_both.cc +0 -842
  1205. data/third_party/boringssl/ssl/d1_lib.cc +0 -268
  1206. data/third_party/boringssl/ssl/d1_pkt.cc +0 -274
  1207. data/third_party/boringssl/ssl/dtls_method.cc +0 -192
  1208. data/third_party/boringssl/ssl/handoff.cc +0 -489
  1209. data/third_party/boringssl/ssl/handshake.cc +0 -691
  1210. data/third_party/boringssl/ssl/handshake_client.cc +0 -1871
  1211. data/third_party/boringssl/ssl/handshake_server.cc +0 -1801
  1212. data/third_party/boringssl/ssl/internal.h +0 -3549
  1213. data/third_party/boringssl/ssl/s3_both.cc +0 -724
  1214. data/third_party/boringssl/ssl/s3_lib.cc +0 -222
  1215. data/third_party/boringssl/ssl/s3_pkt.cc +0 -459
  1216. data/third_party/boringssl/ssl/ssl_asn1.cc +0 -828
  1217. data/third_party/boringssl/ssl/ssl_buffer.cc +0 -287
  1218. data/third_party/boringssl/ssl/ssl_cert.cc +0 -1016
  1219. data/third_party/boringssl/ssl/ssl_cipher.cc +0 -1719
  1220. data/third_party/boringssl/ssl/ssl_lib.cc +0 -3011
  1221. data/third_party/boringssl/ssl/ssl_privkey.cc +0 -824
  1222. data/third_party/boringssl/ssl/ssl_session.cc +0 -1273
  1223. data/third_party/boringssl/ssl/ssl_stat.cc +0 -224
  1224. data/third_party/boringssl/ssl/ssl_versions.cc +0 -394
  1225. data/third_party/boringssl/ssl/t1_enc.cc +0 -361
  1226. data/third_party/boringssl/ssl/t1_lib.cc +0 -4036
  1227. data/third_party/boringssl/ssl/tls13_both.cc +0 -689
  1228. data/third_party/boringssl/ssl/tls13_client.cc +0 -947
  1229. data/third_party/boringssl/ssl/tls13_enc.cc +0 -561
  1230. data/third_party/boringssl/ssl/tls13_server.cc +0 -1089
  1231. data/third_party/boringssl/ssl/tls_method.cc +0 -279
  1232. data/third_party/boringssl/ssl/tls_record.cc +0 -698
  1233. data/third_party/boringssl/third_party/fiat/curve25519.c +0 -2167
  1234. data/third_party/boringssl/third_party/fiat/curve25519_32.h +0 -911
  1235. data/third_party/boringssl/third_party/fiat/curve25519_64.h +0 -559
  1236. data/third_party/boringssl/third_party/fiat/curve25519_tables.h +0 -7880
  1237. data/third_party/boringssl/third_party/fiat/internal.h +0 -154
  1238. data/third_party/boringssl/third_party/fiat/p256.c +0 -1063
  1239. data/third_party/boringssl/third_party/fiat/p256_32.h +0 -3226
  1240. data/third_party/boringssl/third_party/fiat/p256_64.h +0 -1217
@@ -46,12 +46,14 @@ extern "C" {
46
46
 
47
47
  #include <grpc/impl/codegen/sync_generic.h>
48
48
 
49
- #if defined(GPR_POSIX_SYNC)
49
+ #if defined(GPR_CUSTOM_SYNC)
50
+ #include <grpc/impl/codegen/sync_custom.h>
51
+ #elif defined(GPR_ABSEIL_SYNC)
52
+ #include <grpc/impl/codegen/sync_abseil.h>
53
+ #elif defined(GPR_POSIX_SYNC)
50
54
  #include <grpc/impl/codegen/sync_posix.h>
51
55
  #elif defined(GPR_WINDOWS)
52
56
  #include <grpc/impl/codegen/sync_windows.h>
53
- #elif defined(GPR_CUSTOM_SYNC)
54
- #include <grpc/impl/codegen/sync_custom.h>
55
57
  #else
56
58
  #error Unable to determine platform for sync
57
59
  #endif
@@ -0,0 +1,36 @@
1
+ /*
2
+ *
3
+ * Copyright 2020 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_IMPL_CODEGEN_SYNC_ABSEIL_H
20
+ #define GRPC_IMPL_CODEGEN_SYNC_ABSEIL_H
21
+
22
+ #include <grpc/impl/codegen/port_platform.h>
23
+
24
+ #include <grpc/impl/codegen/sync_generic.h>
25
+
26
+ #ifdef GPR_ABSEIL_SYNC
27
+
28
+ typedef intptr_t gpr_mu;
29
+ typedef intptr_t gpr_cv;
30
+ typedef int32_t gpr_once;
31
+
32
+ #define GPR_ONCE_INIT 0
33
+
34
+ #endif
35
+
36
+ #endif /* GRPC_IMPL_CODEGEN_SYNC_ABSEIL_H */
@@ -2,74 +2,62 @@
2
2
  framework module grpc {
3
3
  umbrella header "grpc.h"
4
4
 
5
- header "support/alloc.h"
6
- header "support/atm.h"
7
- header "support/cpu.h"
8
- header "support/log.h"
9
- header "support/log_windows.h"
10
- header "support/port_platform.h"
11
- header "support/string_util.h"
12
- header "support/sync.h"
13
- header "support/sync_generic.h"
14
- header "support/thd_id.h"
15
- header "support/time.h"
16
5
  header "impl/codegen/atm.h"
17
- header "impl/codegen/fork.h"
18
- header "impl/codegen/gpr_slice.h"
19
- header "impl/codegen/gpr_types.h"
20
- header "impl/codegen/log.h"
21
- header "impl/codegen/port_platform.h"
22
- header "impl/codegen/sync.h"
23
- header "impl/codegen/sync_generic.h"
24
6
  header "impl/codegen/byte_buffer.h"
25
7
  header "impl/codegen/byte_buffer_reader.h"
26
8
  header "impl/codegen/compression_types.h"
27
9
  header "impl/codegen/connectivity_state.h"
28
- header "impl/codegen/grpc_types.h"
29
- header "impl/codegen/propagation_bits.h"
30
- header "impl/codegen/slice.h"
31
- header "impl/codegen/status.h"
32
- header "impl/codegen/atm.h"
33
10
  header "impl/codegen/fork.h"
34
11
  header "impl/codegen/gpr_slice.h"
35
12
  header "impl/codegen/gpr_types.h"
13
+ header "impl/codegen/grpc_types.h"
36
14
  header "impl/codegen/log.h"
37
15
  header "impl/codegen/port_platform.h"
16
+ header "impl/codegen/propagation_bits.h"
17
+ header "impl/codegen/slice.h"
18
+ header "impl/codegen/status.h"
38
19
  header "impl/codegen/sync.h"
20
+ header "impl/codegen/sync_abseil.h"
39
21
  header "impl/codegen/sync_generic.h"
40
- header "grpc_security.h"
22
+ header "support/alloc.h"
23
+ header "support/atm.h"
24
+ header "support/cpu.h"
25
+ header "support/log.h"
26
+ header "support/log_windows.h"
27
+ header "support/port_platform.h"
28
+ header "support/string_util.h"
29
+ header "support/sync.h"
30
+ header "support/sync_abseil.h"
31
+ header "support/sync_generic.h"
32
+ header "support/thd_id.h"
33
+ header "support/time.h"
41
34
  header "byte_buffer.h"
42
35
  header "byte_buffer_reader.h"
36
+ header "census.h"
43
37
  header "compression.h"
44
38
  header "fork.h"
45
39
  header "grpc.h"
46
40
  header "grpc_posix.h"
41
+ header "grpc_security.h"
47
42
  header "grpc_security_constants.h"
48
43
  header "load_reporting.h"
49
44
  header "slice.h"
50
45
  header "slice_buffer.h"
51
46
  header "status.h"
52
47
  header "support/workaround_list.h"
53
- header "census.h"
54
48
 
55
- textual header "support/atm_gcc_atomic.h"
56
- textual header "support/atm_gcc_sync.h"
57
- textual header "support/atm_windows.h"
58
- textual header "support/sync_custom.h"
59
- textual header "support/sync_posix.h"
60
- textual header "support/sync_windows.h"
61
- textual header "impl/codegen/atm_gcc_atomic.h"
62
- textual header "impl/codegen/atm_gcc_sync.h"
63
- textual header "impl/codegen/atm_windows.h"
64
- textual header "impl/codegen/sync_custom.h"
65
- textual header "impl/codegen/sync_posix.h"
66
- textual header "impl/codegen/sync_windows.h"
67
49
  textual header "impl/codegen/atm_gcc_atomic.h"
68
50
  textual header "impl/codegen/atm_gcc_sync.h"
69
51
  textual header "impl/codegen/atm_windows.h"
70
52
  textual header "impl/codegen/sync_custom.h"
71
53
  textual header "impl/codegen/sync_posix.h"
72
54
  textual header "impl/codegen/sync_windows.h"
55
+ textual header "support/atm_gcc_atomic.h"
56
+ textual header "support/atm_gcc_sync.h"
57
+ textual header "support/atm_windows.h"
58
+ textual header "support/sync_custom.h"
59
+ textual header "support/sync_posix.h"
60
+ textual header "support/sync_windows.h"
73
61
 
74
62
  export *
75
63
  module * { export * }
@@ -0,0 +1,26 @@
1
+ /*
2
+ *
3
+ * Copyright 2020 gRPC authors.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ */
18
+
19
+ #ifndef GRPC_SUPPORT_SYNC_ABSEIL_H
20
+ #define GRPC_SUPPORT_SYNC_ABSEIL_H
21
+
22
+ #include <grpc/support/port_platform.h>
23
+
24
+ #include <grpc/impl/codegen/sync_abseil.h>
25
+
26
+ #endif /* GRPC_SUPPORT_SYNC_ABSEIL_H */
@@ -18,27 +18,30 @@
18
18
 
19
19
  #include "src/core/ext/filters/client_channel/backend_metric.h"
20
20
 
21
- #include "src/core/lib/gprpp/string_view.h"
21
+ #include "absl/strings/string_view.h"
22
+
22
23
  #include "udpa/data/orca/v1/orca_load_report.upb.h"
23
24
 
25
+ #include "src/core/lib/gprpp/map.h"
26
+
24
27
  namespace grpc_core {
25
28
 
26
29
  namespace {
27
30
 
28
31
  template <typename EntryType>
29
- std::map<StringView, double, StringLess> ParseMap(
32
+ std::map<absl::string_view, double, StringLess> ParseMap(
30
33
  udpa_data_orca_v1_OrcaLoadReport* msg,
31
34
  EntryType** (*entry_func)(udpa_data_orca_v1_OrcaLoadReport*, size_t*),
32
35
  upb_strview (*key_func)(const EntryType*),
33
36
  double (*value_func)(const EntryType*), Arena* arena) {
34
- std::map<StringView, double, StringLess> result;
37
+ std::map<absl::string_view, double, StringLess> result;
35
38
  size_t size;
36
39
  const auto* const* entries = entry_func(msg, &size);
37
40
  for (size_t i = 0; i < size; ++i) {
38
41
  upb_strview key_view = key_func(entries[i]);
39
42
  char* key = static_cast<char*>(arena->Alloc(key_view.size + 1));
40
43
  memcpy(key, key_view.data, key_view.size);
41
- result[StringView(key, key_view.size)] = value_func(entries[i]);
44
+ result[absl::string_view(key, key_view.size)] = value_func(entries[i]);
42
45
  }
43
46
  return result;
44
47
  }
@@ -28,11 +28,16 @@
28
28
 
29
29
  #include <set>
30
30
 
31
+ #include "absl/strings/string_view.h"
32
+
31
33
  #include <grpc/support/alloc.h>
32
34
  #include <grpc/support/log.h>
33
35
  #include <grpc/support/string_util.h>
34
36
  #include <grpc/support/sync.h>
35
37
 
38
+ #include "absl/container/inlined_vector.h"
39
+ #include "absl/types/optional.h"
40
+
36
41
  #include "src/core/ext/filters/client_channel/backend_metric.h"
37
42
  #include "src/core/ext/filters/client_channel/backup_poller.h"
38
43
  #include "src/core/ext/filters/client_channel/global_subchannel_pool.h"
@@ -45,6 +50,7 @@
45
50
  #include "src/core/ext/filters/client_channel/resolving_lb_policy.h"
46
51
  #include "src/core/ext/filters/client_channel/retry_throttle.h"
47
52
  #include "src/core/ext/filters/client_channel/service_config.h"
53
+ #include "src/core/ext/filters/client_channel/service_config_call_data.h"
48
54
  #include "src/core/ext/filters/client_channel/subchannel.h"
49
55
  #include "src/core/ext/filters/deadline/deadline_filter.h"
50
56
  #include "src/core/lib/backoff/backoff.h"
@@ -52,13 +58,12 @@
52
58
  #include "src/core/lib/channel/connected_channel.h"
53
59
  #include "src/core/lib/channel/status_util.h"
54
60
  #include "src/core/lib/gpr/string.h"
55
- #include "src/core/lib/gprpp/inlined_vector.h"
56
61
  #include "src/core/lib/gprpp/manual_constructor.h"
57
62
  #include "src/core/lib/gprpp/map.h"
58
63
  #include "src/core/lib/gprpp/sync.h"
59
- #include "src/core/lib/iomgr/combiner.h"
60
64
  #include "src/core/lib/iomgr/iomgr.h"
61
65
  #include "src/core/lib/iomgr/polling_entity.h"
66
+ #include "src/core/lib/iomgr/work_serializer.h"
62
67
  #include "src/core/lib/profiling/timers.h"
63
68
  #include "src/core/lib/slice/slice_internal.h"
64
69
  #include "src/core/lib/slice/slice_string_helpers.h"
@@ -126,6 +131,7 @@ class ChannelData {
126
131
  size_t per_rpc_retry_buffer_size() const {
127
132
  return per_rpc_retry_buffer_size_;
128
133
  }
134
+ grpc_channel_stack* owning_stack() const { return owning_stack_; }
129
135
 
130
136
  // Note: Does NOT return a new ref.
131
137
  grpc_error* disconnect_error() const {
@@ -149,6 +155,7 @@ class ChannelData {
149
155
  RefCountedPtr<ServiceConfig> service_config() const {
150
156
  return service_config_;
151
157
  }
158
+ WorkSerializer* work_serializer() const { return work_serializer_.get(); }
152
159
 
153
160
  RefCountedPtr<ConnectedSubchannel> GetConnectedSubchannelInDataPlane(
154
161
  SubchannelInterface* subchannel) const;
@@ -159,11 +166,15 @@ class ChannelData {
159
166
  grpc_connectivity_state* state,
160
167
  grpc_closure* on_complete,
161
168
  grpc_closure* watcher_timer_init) {
162
- MutexLock lock(&external_watchers_mu_);
163
- // Will be deleted when the watch is complete.
164
- GPR_ASSERT(external_watchers_[on_complete] == nullptr);
165
- external_watchers_[on_complete] = new ExternalConnectivityWatcher(
169
+ auto* watcher = new ExternalConnectivityWatcher(
166
170
  this, pollent, state, on_complete, watcher_timer_init);
171
+ {
172
+ MutexLock lock(&external_watchers_mu_);
173
+ // Will be deleted when the watch is complete.
174
+ GPR_ASSERT(external_watchers_[on_complete] == nullptr);
175
+ external_watchers_[on_complete] = watcher;
176
+ }
177
+ watcher->Start();
167
178
  }
168
179
 
169
180
  void RemoveExternalConnectivityWatcher(grpc_closure* on_complete,
@@ -204,13 +215,15 @@ class ChannelData {
204
215
 
205
216
  ~ExternalConnectivityWatcher();
206
217
 
218
+ void Start();
219
+
207
220
  void Notify(grpc_connectivity_state state) override;
208
221
 
209
222
  void Cancel();
210
223
 
211
224
  private:
212
- static void AddWatcherLocked(void* arg, grpc_error* ignored);
213
- static void RemoveWatcherLocked(void* arg, grpc_error* ignored);
225
+ void AddWatcherLocked();
226
+ void RemoveWatcherLocked();
214
227
 
215
228
  ChannelData* chand_;
216
229
  grpc_polling_entity pollent_;
@@ -218,8 +231,6 @@ class ChannelData {
218
231
  grpc_connectivity_state* state_;
219
232
  grpc_closure* on_complete_;
220
233
  grpc_closure* watcher_timer_init_;
221
- grpc_closure add_closure_;
222
- grpc_closure remove_closure_;
223
234
  Atomic<bool> done_{false};
224
235
  };
225
236
 
@@ -239,20 +250,19 @@ class ChannelData {
239
250
  void DestroyResolvingLoadBalancingPolicyLocked();
240
251
 
241
252
  static bool ProcessResolverResultLocked(
242
- void* arg, const Resolver::Result& result, const char** lb_policy_name,
253
+ void* arg, const Resolver::Result& result,
243
254
  RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config,
244
- grpc_error** service_config_error);
255
+ grpc_error** service_config_error, bool* no_valid_service_config);
245
256
 
246
257
  grpc_error* DoPingLocked(grpc_transport_op* op);
247
258
 
248
- static void StartTransportOpLocked(void* arg, grpc_error* ignored);
259
+ void StartTransportOpLocked(grpc_transport_op* op);
249
260
 
250
- static void TryToConnectLocked(void* arg, grpc_error* error_ignored);
261
+ void TryToConnectLocked();
251
262
 
252
263
  void ProcessLbPolicy(
253
264
  const Resolver::Result& resolver_result,
254
265
  const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
255
- grpc_core::UniquePtr<char>* lb_policy_name,
256
266
  RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config);
257
267
 
258
268
  //
@@ -281,9 +291,9 @@ class ChannelData {
281
291
  RefCountedPtr<ServiceConfig> service_config_;
282
292
 
283
293
  //
284
- // Fields used in the control plane. Guarded by combiner.
294
+ // Fields used in the control plane. Guarded by work_serializer.
285
295
  //
286
- Combiner* combiner_;
296
+ std::shared_ptr<WorkSerializer> work_serializer_;
287
297
  grpc_pollset_set* interested_parties_;
288
298
  RefCountedPtr<SubchannelPoolInterface> subchannel_pool_;
289
299
  OrphanablePtr<ResolvingLoadBalancingPolicy> resolving_lb_policy_;
@@ -295,17 +305,17 @@ class ChannelData {
295
305
  std::map<Subchannel*, int> subchannel_refcount_map_;
296
306
  // The set of SubchannelWrappers that currently exist.
297
307
  // No need to hold a ref, since the map is updated in the control-plane
298
- // combiner when the SubchannelWrappers are created and destroyed.
308
+ // work_serializer when the SubchannelWrappers are created and destroyed.
299
309
  std::set<SubchannelWrapper*> subchannel_wrappers_;
300
310
  // Pending ConnectedSubchannel updates for each SubchannelWrapper.
301
- // Updates are queued here in the control plane combiner and then applied
302
- // in the data plane mutex when the picker is updated.
303
- std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel>,
304
- RefCountedPtrLess<SubchannelWrapper>>
311
+ // Updates are queued here in the control plane work_serializer and then
312
+ // applied in the data plane mutex when the picker is updated.
313
+ std::map<RefCountedPtr<SubchannelWrapper>, RefCountedPtr<ConnectedSubchannel>>
305
314
  pending_subchannel_updates_;
306
315
 
307
316
  //
308
- // Fields accessed from both data plane mutex and control plane combiner.
317
+ // Fields accessed from both data plane mutex and control plane
318
+ // work_serializer.
309
319
  //
310
320
  Atomic<grpc_error*> disconnect_error_;
311
321
 
@@ -365,7 +375,7 @@ class CallData {
365
375
  Metadata(CallData* calld, grpc_metadata_batch* batch)
366
376
  : calld_(calld), batch_(batch) {}
367
377
 
368
- void Add(StringView key, StringView value) override {
378
+ void Add(absl::string_view key, absl::string_view value) override {
369
379
  grpc_linked_mdelem* linked_mdelem = static_cast<grpc_linked_mdelem*>(
370
380
  calld_->arena_->Alloc(sizeof(grpc_linked_mdelem)));
371
381
  linked_mdelem->md = grpc_mdelem_from_slices(
@@ -400,7 +410,7 @@ class CallData {
400
410
  reinterpret_cast<grpc_linked_mdelem*>(handle);
401
411
  return reinterpret_cast<intptr_t>(linked_mdelem->next);
402
412
  }
403
- std::pair<StringView, StringView> IteratorHandleGet(
413
+ std::pair<absl::string_view, absl::string_view> IteratorHandleGet(
404
414
  intptr_t handle) const override {
405
415
  grpc_linked_mdelem* linked_mdelem =
406
416
  reinterpret_cast<grpc_linked_mdelem*>(handle);
@@ -432,6 +442,12 @@ class CallData {
432
442
  return calld_->backend_metric_data_;
433
443
  }
434
444
 
445
+ absl::string_view ExperimentalGetCallAttribute(const char* key) override {
446
+ auto it = calld_->call_attributes_.find(key);
447
+ if (it == calld_->call_attributes_.end()) return absl::string_view();
448
+ return it->second;
449
+ }
450
+
435
451
  private:
436
452
  CallData* calld_;
437
453
  };
@@ -751,8 +767,8 @@ class CallData {
751
767
  grpc_call_context_element* call_context_;
752
768
 
753
769
  RefCountedPtr<ServerRetryThrottleData> retry_throttle_data_;
754
- ServiceConfig::CallData service_config_call_data_;
755
770
  const ClientChannelMethodParsedConfig* method_params_ = nullptr;
771
+ std::map<const char*, absl::string_view> call_attributes_;
756
772
 
757
773
  RefCountedPtr<SubchannelCall> subchannel_call_;
758
774
 
@@ -821,7 +837,7 @@ class CallData {
821
837
  // Note: We inline the cache for the first 3 send_message ops and use
822
838
  // dynamic allocation after that. This number was essentially picked
823
839
  // at random; it could be changed in the future to tune performance.
824
- InlinedVector<ByteStreamCache*, 3> send_messages_;
840
+ absl::InlinedVector<ByteStreamCache*, 3> send_messages_;
825
841
  // send_trailing_metadata
826
842
  bool seen_send_trailing_metadata_ = false;
827
843
  grpc_linked_mdelem* send_trailing_metadata_storage_ = nullptr;
@@ -839,7 +855,7 @@ class CallData {
839
855
  // Note that no synchronization is needed here, because even if the
840
856
  // underlying subchannel is shared between channels, this wrapper will only
841
857
  // be used within one channel, so it will always be synchronized by the
842
- // control plane combiner.
858
+ // control plane work_serializer.
843
859
  class ChannelData::SubchannelWrapper : public SubchannelInterface {
844
860
  public:
845
861
  SubchannelWrapper(ChannelData* chand, Subchannel* subchannel,
@@ -908,7 +924,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
908
924
  initial_state,
909
925
  grpc_core::UniquePtr<char>(
910
926
  gpr_strdup(health_check_service_name_.get())),
911
- OrphanablePtr<Subchannel::ConnectivityStateWatcherInterface>(
927
+ RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
912
928
  watcher_wrapper));
913
929
  }
914
930
 
@@ -958,14 +974,14 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
958
974
  replacement->last_seen_state(),
959
975
  grpc_core::UniquePtr<char>(
960
976
  gpr_strdup(health_check_service_name.get())),
961
- OrphanablePtr<Subchannel::ConnectivityStateWatcherInterface>(
977
+ RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface>(
962
978
  replacement));
963
979
  }
964
980
  // Save the new health check service name.
965
981
  health_check_service_name_ = std::move(health_check_service_name);
966
982
  }
967
983
 
968
- // Caller must be holding the control-plane combiner.
984
+ // Caller must be holding the control-plane work_serializer.
969
985
  ConnectedSubchannel* connected_subchannel() const {
970
986
  return connected_subchannel_.get();
971
987
  }
@@ -1005,23 +1021,27 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
1005
1021
  parent_(std::move(parent)),
1006
1022
  last_seen_state_(initial_state) {}
1007
1023
 
1008
- ~WatcherWrapper() { parent_.reset(DEBUG_LOCATION, "WatcherWrapper"); }
1009
-
1010
- void Orphan() override { Unref(); }
1024
+ ~WatcherWrapper() {
1025
+ auto* parent = parent_.release(); // ref owned by lambda
1026
+ parent->chand_->work_serializer_->Run(
1027
+ [parent]() { parent->Unref(DEBUG_LOCATION, "WatcherWrapper"); },
1028
+ DEBUG_LOCATION);
1029
+ }
1011
1030
 
1012
- void OnConnectivityStateChange(
1013
- grpc_connectivity_state new_state,
1014
- RefCountedPtr<ConnectedSubchannel> connected_subchannel) override {
1031
+ void OnConnectivityStateChange() override {
1015
1032
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1016
1033
  gpr_log(GPR_INFO,
1017
1034
  "chand=%p: connectivity change for subchannel wrapper %p "
1018
- "subchannel %p (connected_subchannel=%p state=%s); "
1019
- "hopping into combiner",
1020
- parent_->chand_, parent_.get(), parent_->subchannel_,
1021
- connected_subchannel.get(), ConnectivityStateName(new_state));
1035
+ "subchannel %p; hopping into work_serializer",
1036
+ parent_->chand_, parent_.get(), parent_->subchannel_);
1022
1037
  }
1023
- // Will delete itself.
1024
- new Updater(Ref(), new_state, std::move(connected_subchannel));
1038
+ Ref().release(); // ref owned by lambda
1039
+ parent_->chand_->work_serializer_->Run(
1040
+ [this]() {
1041
+ ApplyUpdateInControlPlaneWorkSerializer();
1042
+ Unref();
1043
+ },
1044
+ DEBUG_LOCATION);
1025
1045
  }
1026
1046
 
1027
1047
  grpc_pollset_set* interested_parties() override {
@@ -1041,50 +1061,25 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
1041
1061
  grpc_connectivity_state last_seen_state() const { return last_seen_state_; }
1042
1062
 
1043
1063
  private:
1044
- class Updater {
1045
- public:
1046
- Updater(RefCountedPtr<WatcherWrapper> parent,
1047
- grpc_connectivity_state new_state,
1048
- RefCountedPtr<ConnectedSubchannel> connected_subchannel)
1049
- : parent_(std::move(parent)),
1050
- state_(new_state),
1051
- connected_subchannel_(std::move(connected_subchannel)) {
1052
- parent_->parent_->chand_->combiner_->Run(
1053
- GRPC_CLOSURE_INIT(&closure_, ApplyUpdateInControlPlaneCombiner,
1054
- this, nullptr),
1055
- GRPC_ERROR_NONE);
1064
+ void ApplyUpdateInControlPlaneWorkSerializer() {
1065
+ if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1066
+ gpr_log(GPR_INFO,
1067
+ "chand=%p: processing connectivity change in work serializer "
1068
+ "for subchannel wrapper %p subchannel %p "
1069
+ "watcher=%p",
1070
+ parent_->chand_, parent_.get(), parent_->subchannel_,
1071
+ watcher_.get());
1056
1072
  }
1057
-
1058
- private:
1059
- static void ApplyUpdateInControlPlaneCombiner(void* arg,
1060
- grpc_error* /*error*/) {
1061
- Updater* self = static_cast<Updater*>(arg);
1062
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1063
- gpr_log(GPR_INFO,
1064
- "chand=%p: processing connectivity change in combiner "
1065
- "for subchannel wrapper %p subchannel %p "
1066
- "(connected_subchannel=%p state=%s): watcher=%p",
1067
- self->parent_->parent_->chand_, self->parent_->parent_.get(),
1068
- self->parent_->parent_->subchannel_,
1069
- self->connected_subchannel_.get(),
1070
- ConnectivityStateName(self->state_),
1071
- self->parent_->watcher_.get());
1072
- }
1073
- // Ignore update if the parent WatcherWrapper has been replaced
1074
- // since this callback was scheduled.
1075
- if (self->parent_->watcher_ == nullptr) return;
1076
- self->parent_->last_seen_state_ = self->state_;
1077
- self->parent_->parent_->MaybeUpdateConnectedSubchannel(
1078
- std::move(self->connected_subchannel_));
1079
- self->parent_->watcher_->OnConnectivityStateChange(self->state_);
1080
- delete self;
1073
+ ConnectivityStateChange state_change = PopConnectivityStateChange();
1074
+ // Ignore update if the parent WatcherWrapper has been replaced
1075
+ // since this callback was scheduled.
1076
+ if (watcher_ != nullptr) {
1077
+ last_seen_state_ = state_change.state;
1078
+ parent_->MaybeUpdateConnectedSubchannel(
1079
+ std::move(state_change.connected_subchannel));
1080
+ watcher_->OnConnectivityStateChange(state_change.state);
1081
1081
  }
1082
-
1083
- RefCountedPtr<WatcherWrapper> parent_;
1084
- grpc_connectivity_state state_;
1085
- RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
1086
- grpc_closure closure_;
1087
- };
1082
+ }
1088
1083
 
1089
1084
  std::unique_ptr<SubchannelInterface::ConnectivityStateWatcherInterface>
1090
1085
  watcher_;
@@ -1123,7 +1118,7 @@ class ChannelData::SubchannelWrapper : public SubchannelInterface {
1123
1118
  // CancelConnectivityStateWatch() with its watcher, we know the
1124
1119
  // corresponding WrapperWatcher to cancel on the underlying subchannel.
1125
1120
  std::map<ConnectivityStateWatcherInterface*, WatcherWrapper*> watcher_map_;
1126
- // To be accessed only in the control plane combiner.
1121
+ // To be accessed only in the control plane work_serializer.
1127
1122
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_;
1128
1123
  // To be accessed only in the data plane mutex.
1129
1124
  RefCountedPtr<ConnectedSubchannel> connected_subchannel_in_data_plane_;
@@ -1146,9 +1141,6 @@ ChannelData::ExternalConnectivityWatcher::ExternalConnectivityWatcher(
1146
1141
  grpc_polling_entity_add_to_pollset_set(&pollent_,
1147
1142
  chand_->interested_parties_);
1148
1143
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ExternalConnectivityWatcher");
1149
- chand_->combiner_->Run(
1150
- GRPC_CLOSURE_INIT(&add_closure_, AddWatcherLocked, this, nullptr),
1151
- GRPC_ERROR_NONE);
1152
1144
  }
1153
1145
 
1154
1146
  ChannelData::ExternalConnectivityWatcher::~ExternalConnectivityWatcher() {
@@ -1158,6 +1150,11 @@ ChannelData::ExternalConnectivityWatcher::~ExternalConnectivityWatcher() {
1158
1150
  "ExternalConnectivityWatcher");
1159
1151
  }
1160
1152
 
1153
+ void ChannelData::ExternalConnectivityWatcher::Start() {
1154
+ chand_->work_serializer_->Run([this]() { AddWatcherLocked(); },
1155
+ DEBUG_LOCATION);
1156
+ }
1157
+
1161
1158
  void ChannelData::ExternalConnectivityWatcher::Notify(
1162
1159
  grpc_connectivity_state state) {
1163
1160
  bool done = false;
@@ -1170,13 +1167,12 @@ void ChannelData::ExternalConnectivityWatcher::Notify(
1170
1167
  // Report new state to the user.
1171
1168
  *state_ = state;
1172
1169
  ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_NONE);
1173
- // Hop back into the combiner to clean up.
1170
+ // Hop back into the work_serializer to clean up.
1174
1171
  // Not needed in state SHUTDOWN, because the tracker will
1175
1172
  // automatically remove all watchers in that case.
1176
1173
  if (state != GRPC_CHANNEL_SHUTDOWN) {
1177
- chand_->combiner_->Run(
1178
- GRPC_CLOSURE_INIT(&remove_closure_, RemoveWatcherLocked, this, nullptr),
1179
- GRPC_ERROR_NONE);
1174
+ chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
1175
+ DEBUG_LOCATION);
1180
1176
  }
1181
1177
  }
1182
1178
 
@@ -1187,28 +1183,20 @@ void ChannelData::ExternalConnectivityWatcher::Cancel() {
1187
1183
  return; // Already done.
1188
1184
  }
1189
1185
  ExecCtx::Run(DEBUG_LOCATION, on_complete_, GRPC_ERROR_CANCELLED);
1190
- // Hop back into the combiner to clean up.
1191
- chand_->combiner_->Run(
1192
- GRPC_CLOSURE_INIT(&remove_closure_, RemoveWatcherLocked, this, nullptr),
1193
- GRPC_ERROR_NONE);
1186
+ // Hop back into the work_serializer to clean up.
1187
+ chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
1188
+ DEBUG_LOCATION);
1194
1189
  }
1195
1190
 
1196
- void ChannelData::ExternalConnectivityWatcher::AddWatcherLocked(
1197
- void* arg, grpc_error* /*ignored*/) {
1198
- ExternalConnectivityWatcher* self =
1199
- static_cast<ExternalConnectivityWatcher*>(arg);
1200
- Closure::Run(DEBUG_LOCATION, self->watcher_timer_init_, GRPC_ERROR_NONE);
1191
+ void ChannelData::ExternalConnectivityWatcher::AddWatcherLocked() {
1192
+ Closure::Run(DEBUG_LOCATION, watcher_timer_init_, GRPC_ERROR_NONE);
1201
1193
  // Add new watcher.
1202
- self->chand_->state_tracker_.AddWatcher(
1203
- self->initial_state_,
1204
- OrphanablePtr<ConnectivityStateWatcherInterface>(self));
1194
+ chand_->state_tracker_.AddWatcher(
1195
+ initial_state_, OrphanablePtr<ConnectivityStateWatcherInterface>(this));
1205
1196
  }
1206
1197
 
1207
- void ChannelData::ExternalConnectivityWatcher::RemoveWatcherLocked(
1208
- void* arg, grpc_error* /*ignored*/) {
1209
- ExternalConnectivityWatcher* self =
1210
- static_cast<ExternalConnectivityWatcher*>(arg);
1211
- self->chand_->state_tracker_.RemoveWatcher(self);
1198
+ void ChannelData::ExternalConnectivityWatcher::RemoveWatcherLocked() {
1199
+ chand_->state_tracker_.RemoveWatcher(this);
1212
1200
  }
1213
1201
 
1214
1202
  //
@@ -1224,28 +1212,20 @@ class ChannelData::ConnectivityWatcherAdder {
1224
1212
  initial_state_(initial_state),
1225
1213
  watcher_(std::move(watcher)) {
1226
1214
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherAdder");
1227
- chand_->combiner_->Run(
1228
- GRPC_CLOSURE_INIT(&closure_,
1229
- &ConnectivityWatcherAdder::AddWatcherLocked, this,
1230
- nullptr),
1231
- GRPC_ERROR_NONE);
1215
+ chand_->work_serializer_->Run([this]() { AddWatcherLocked(); },
1216
+ DEBUG_LOCATION);
1232
1217
  }
1233
1218
 
1234
1219
  private:
1235
- static void AddWatcherLocked(void* arg, grpc_error* /*error*/) {
1236
- ConnectivityWatcherAdder* self =
1237
- static_cast<ConnectivityWatcherAdder*>(arg);
1238
- self->chand_->state_tracker_.AddWatcher(self->initial_state_,
1239
- std::move(self->watcher_));
1240
- GRPC_CHANNEL_STACK_UNREF(self->chand_->owning_stack_,
1241
- "ConnectivityWatcherAdder");
1242
- delete self;
1220
+ void AddWatcherLocked() {
1221
+ chand_->state_tracker_.AddWatcher(initial_state_, std::move(watcher_));
1222
+ GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_, "ConnectivityWatcherAdder");
1223
+ delete this;
1243
1224
  }
1244
1225
 
1245
1226
  ChannelData* chand_;
1246
1227
  grpc_connectivity_state initial_state_;
1247
1228
  OrphanablePtr<AsyncConnectivityStateWatcherInterface> watcher_;
1248
- grpc_closure closure_;
1249
1229
  };
1250
1230
 
1251
1231
  //
@@ -1258,26 +1238,20 @@ class ChannelData::ConnectivityWatcherRemover {
1258
1238
  AsyncConnectivityStateWatcherInterface* watcher)
1259
1239
  : chand_(chand), watcher_(watcher) {
1260
1240
  GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ConnectivityWatcherRemover");
1261
- chand_->combiner_->Run(
1262
- GRPC_CLOSURE_INIT(&closure_,
1263
- &ConnectivityWatcherRemover::RemoveWatcherLocked,
1264
- this, nullptr),
1265
- GRPC_ERROR_NONE);
1241
+ chand_->work_serializer_->Run([this]() { RemoveWatcherLocked(); },
1242
+ DEBUG_LOCATION);
1266
1243
  }
1267
1244
 
1268
1245
  private:
1269
- static void RemoveWatcherLocked(void* arg, grpc_error* /*error*/) {
1270
- ConnectivityWatcherRemover* self =
1271
- static_cast<ConnectivityWatcherRemover*>(arg);
1272
- self->chand_->state_tracker_.RemoveWatcher(self->watcher_);
1273
- GRPC_CHANNEL_STACK_UNREF(self->chand_->owning_stack_,
1246
+ void RemoveWatcherLocked() {
1247
+ chand_->state_tracker_.RemoveWatcher(watcher_);
1248
+ GRPC_CHANNEL_STACK_UNREF(chand_->owning_stack_,
1274
1249
  "ConnectivityWatcherRemover");
1275
- delete self;
1250
+ delete this;
1276
1251
  }
1277
1252
 
1278
1253
  ChannelData* chand_;
1279
1254
  AsyncConnectivityStateWatcherInterface* watcher_;
1280
- grpc_closure closure_;
1281
1255
  };
1282
1256
 
1283
1257
  //
@@ -1341,7 +1315,8 @@ class ChannelData::ClientChannelControlHelper
1341
1315
  // No-op -- we should never get this from ResolvingLoadBalancingPolicy.
1342
1316
  void RequestReresolution() override {}
1343
1317
 
1344
- void AddTraceEvent(TraceSeverity severity, StringView message) override {
1318
+ void AddTraceEvent(TraceSeverity severity,
1319
+ absl::string_view message) override {
1345
1320
  if (chand_->channelz_node_ != nullptr) {
1346
1321
  chand_->channelz_node_->AddTraceEvent(
1347
1322
  ConvertSeverityEnum(severity),
@@ -1418,7 +1393,7 @@ ChannelData::ChannelData(grpc_channel_element_args* args, grpc_error** error)
1418
1393
  client_channel_factory_(
1419
1394
  ClientChannelFactory::GetFromChannelArgs(args->channel_args)),
1420
1395
  channelz_node_(GetChannelzNode(args->channel_args)),
1421
- combiner_(grpc_combiner_create()),
1396
+ work_serializer_(std::make_shared<WorkSerializer>()),
1422
1397
  interested_parties_(grpc_pollset_set_create()),
1423
1398
  subchannel_pool_(GetSubchannelPool(args->channel_args)),
1424
1399
  state_tracker_("client_channel", GRPC_CHANNEL_IDLE),
@@ -1489,7 +1464,6 @@ ChannelData::~ChannelData() {
1489
1464
  // Stop backup polling.
1490
1465
  grpc_client_channel_stop_backup_polling(interested_parties_);
1491
1466
  grpc_pollset_set_destroy(interested_parties_);
1492
- GRPC_COMBINER_UNREF(combiner_, "client_channel");
1493
1467
  GRPC_ERROR_UNREF(disconnect_error_.Load(MemoryOrder::RELAXED));
1494
1468
  gpr_mu_destroy(&info_mu_);
1495
1469
  }
@@ -1593,8 +1567,9 @@ void ChannelData::UpdateServiceConfigLocked(
1593
1567
  void ChannelData::CreateResolvingLoadBalancingPolicyLocked() {
1594
1568
  // Instantiate resolving LB policy.
1595
1569
  LoadBalancingPolicy::Args lb_args;
1596
- lb_args.combiner = combiner_;
1597
- lb_args.channel_control_helper = MakeUnique<ClientChannelControlHelper>(this);
1570
+ lb_args.work_serializer = work_serializer_;
1571
+ lb_args.channel_control_helper =
1572
+ absl::make_unique<ClientChannelControlHelper>(this);
1598
1573
  lb_args.args = channel_args_;
1599
1574
  grpc_core::UniquePtr<char> target_uri(gpr_strdup(target_uri_.get()));
1600
1575
  resolving_lb_policy_.reset(new ResolvingLoadBalancingPolicy(
@@ -1619,57 +1594,56 @@ void ChannelData::DestroyResolvingLoadBalancingPolicyLocked() {
1619
1594
  void ChannelData::ProcessLbPolicy(
1620
1595
  const Resolver::Result& resolver_result,
1621
1596
  const internal::ClientChannelGlobalParsedConfig* parsed_service_config,
1622
- grpc_core::UniquePtr<char>* lb_policy_name,
1623
1597
  RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config) {
1624
- // Prefer the LB policy name found in the service config.
1598
+ // Prefer the LB policy config found in the service config.
1625
1599
  if (parsed_service_config != nullptr &&
1626
1600
  parsed_service_config->parsed_lb_config() != nullptr) {
1627
- lb_policy_name->reset(
1628
- gpr_strdup(parsed_service_config->parsed_lb_config()->name()));
1629
1601
  *lb_policy_config = parsed_service_config->parsed_lb_config();
1630
1602
  return;
1631
1603
  }
1632
- const char* local_policy_name = nullptr;
1604
+ // Try the deprecated LB policy name from the service config.
1605
+ // If not, try the setting from channel args.
1606
+ const char* policy_name = nullptr;
1633
1607
  if (parsed_service_config != nullptr &&
1634
- parsed_service_config->parsed_deprecated_lb_policy() != nullptr) {
1635
- local_policy_name = parsed_service_config->parsed_deprecated_lb_policy();
1608
+ !parsed_service_config->parsed_deprecated_lb_policy().empty()) {
1609
+ policy_name = parsed_service_config->parsed_deprecated_lb_policy().c_str();
1636
1610
  } else {
1637
1611
  const grpc_arg* channel_arg =
1638
1612
  grpc_channel_args_find(resolver_result.args, GRPC_ARG_LB_POLICY_NAME);
1639
- local_policy_name = grpc_channel_arg_get_string(channel_arg);
1640
- }
1641
- // Special case: If at least one balancer address is present, we use
1642
- // the grpclb policy, regardless of what the resolver has returned.
1643
- bool found_balancer_address = false;
1644
- for (size_t i = 0; i < resolver_result.addresses.size(); ++i) {
1645
- const ServerAddress& address = resolver_result.addresses[i];
1646
- if (address.IsBalancer()) {
1647
- found_balancer_address = true;
1648
- break;
1649
- }
1650
- }
1651
- if (found_balancer_address) {
1652
- if (local_policy_name != nullptr &&
1653
- strcmp(local_policy_name, "grpclb") != 0) {
1654
- gpr_log(GPR_INFO,
1655
- "resolver requested LB policy %s but provided at least one "
1656
- "balancer address -- forcing use of grpclb LB policy",
1657
- local_policy_name);
1658
- }
1659
- local_policy_name = "grpclb";
1613
+ policy_name = grpc_channel_arg_get_string(channel_arg);
1660
1614
  }
1661
1615
  // Use pick_first if nothing was specified and we didn't select grpclb
1662
1616
  // above.
1663
- lb_policy_name->reset(gpr_strdup(
1664
- local_policy_name == nullptr ? "pick_first" : local_policy_name));
1617
+ if (policy_name == nullptr) policy_name = "pick_first";
1618
+ // Now that we have the policy name, construct an empty config for it.
1619
+ Json config_json = Json::Array{Json::Object{
1620
+ {policy_name, Json::Object{}},
1621
+ }};
1622
+ grpc_error* parse_error = GRPC_ERROR_NONE;
1623
+ *lb_policy_config = LoadBalancingPolicyRegistry::ParseLoadBalancingConfig(
1624
+ config_json, &parse_error);
1625
+ // The policy name came from one of three places:
1626
+ // - The deprecated loadBalancingPolicy field in the service config,
1627
+ // in which case the code in ClientChannelServiceConfigParser
1628
+ // already verified that the policy does not require a config.
1629
+ // - One of the hard-coded values here, all of which are known to not
1630
+ // require a config.
1631
+ // - A channel arg, in which case the application did something that
1632
+ // is a misuse of our API.
1633
+ // In the first two cases, these assertions will always be true. In
1634
+ // the last case, this is probably fine for now.
1635
+ // TODO(roth): If the last case becomes a problem, add better error
1636
+ // handling here.
1637
+ GPR_ASSERT(*lb_policy_config != nullptr);
1638
+ GPR_ASSERT(parse_error == GRPC_ERROR_NONE);
1665
1639
  }
1666
1640
 
1667
1641
  // Synchronous callback from ResolvingLoadBalancingPolicy to process a
1668
1642
  // resolver result update.
1669
1643
  bool ChannelData::ProcessResolverResultLocked(
1670
- void* arg, const Resolver::Result& result, const char** lb_policy_name,
1644
+ void* arg, const Resolver::Result& result,
1671
1645
  RefCountedPtr<LoadBalancingPolicy::Config>* lb_policy_config,
1672
- grpc_error** service_config_error) {
1646
+ grpc_error** service_config_error, bool* no_valid_service_config) {
1673
1647
  ChannelData* chand = static_cast<ChannelData*>(arg);
1674
1648
  RefCountedPtr<ServiceConfig> service_config;
1675
1649
  // If resolver did not return a service config or returned an invalid service
@@ -1679,13 +1653,13 @@ bool ChannelData::ProcessResolverResultLocked(
1679
1653
  // config. If there is no saved config either, use the default service
1680
1654
  // config.
1681
1655
  if (chand->saved_service_config_ != nullptr) {
1682
- service_config = chand->saved_service_config_;
1683
1656
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1684
1657
  gpr_log(GPR_INFO,
1685
1658
  "chand=%p: resolver returned invalid service config. "
1686
1659
  "Continuing to use previous service config.",
1687
1660
  chand);
1688
1661
  }
1662
+ service_config = chand->saved_service_config_;
1689
1663
  } else if (chand->default_service_config_ != nullptr) {
1690
1664
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1691
1665
  gpr_log(GPR_INFO,
@@ -1711,6 +1685,7 @@ bool ChannelData::ProcessResolverResultLocked(
1711
1685
  *service_config_error = GRPC_ERROR_REF(result.service_config_error);
1712
1686
  if (service_config == nullptr &&
1713
1687
  result.service_config_error != GRPC_ERROR_NONE) {
1688
+ *no_valid_service_config = true;
1714
1689
  return false;
1715
1690
  }
1716
1691
  // Process service config.
@@ -1728,11 +1703,11 @@ bool ChannelData::ProcessResolverResultLocked(
1728
1703
  ((service_config == nullptr) !=
1729
1704
  (chand->saved_service_config_ == nullptr)) ||
1730
1705
  (service_config != nullptr &&
1731
- strcmp(service_config->service_config_json(),
1732
- chand->saved_service_config_->service_config_json()) != 0);
1706
+ service_config->json_string() !=
1707
+ chand->saved_service_config_->json_string());
1733
1708
  if (service_config_changed) {
1734
1709
  service_config_json.reset(gpr_strdup(
1735
- service_config != nullptr ? service_config->service_config_json()
1710
+ service_config != nullptr ? service_config->json_string().c_str()
1736
1711
  : ""));
1737
1712
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_routing_trace)) {
1738
1713
  gpr_log(GPR_INFO,
@@ -1762,7 +1737,7 @@ bool ChannelData::ProcessResolverResultLocked(
1762
1737
  chand->received_first_resolver_result_ = true;
1763
1738
  RefCountedPtr<ServerRetryThrottleData> retry_throttle_data;
1764
1739
  if (parsed_service_config != nullptr) {
1765
- Optional<internal::ClientChannelGlobalParsedConfig::RetryThrottling>
1740
+ absl::optional<internal::ClientChannelGlobalParsedConfig::RetryThrottling>
1766
1741
  retry_throttle_config = parsed_service_config->retry_throttling();
1767
1742
  if (retry_throttle_config.has_value()) {
1768
1743
  retry_throttle_data =
@@ -1775,19 +1750,18 @@ bool ChannelData::ProcessResolverResultLocked(
1775
1750
  chand->UpdateServiceConfigLocked(std::move(retry_throttle_data),
1776
1751
  chand->saved_service_config_);
1777
1752
  }
1778
- grpc_core::UniquePtr<char> processed_lb_policy_name;
1779
- chand->ProcessLbPolicy(result, parsed_service_config,
1780
- &processed_lb_policy_name, lb_policy_config);
1753
+ chand->ProcessLbPolicy(result, parsed_service_config, lb_policy_config);
1754
+ grpc_core::UniquePtr<char> lb_policy_name(
1755
+ gpr_strdup((*lb_policy_config)->name()));
1781
1756
  // Swap out the data used by GetChannelInfo().
1782
1757
  {
1783
1758
  MutexLock lock(&chand->info_mu_);
1784
- chand->info_lb_policy_name_ = std::move(processed_lb_policy_name);
1759
+ chand->info_lb_policy_name_ = std::move(lb_policy_name);
1785
1760
  if (service_config_json != nullptr) {
1786
1761
  chand->info_service_config_json_ = std::move(service_config_json);
1787
1762
  }
1788
1763
  }
1789
1764
  // Return results.
1790
- *lb_policy_name = chand->info_lb_policy_name_.get();
1791
1765
  return service_config_changed;
1792
1766
  }
1793
1767
 
@@ -1814,22 +1788,18 @@ grpc_error* ChannelData::DoPingLocked(grpc_transport_op* op) {
1814
1788
  return result.error;
1815
1789
  }
1816
1790
 
1817
- void ChannelData::StartTransportOpLocked(void* arg, grpc_error* /*ignored*/) {
1818
- grpc_transport_op* op = static_cast<grpc_transport_op*>(arg);
1819
- grpc_channel_element* elem =
1820
- static_cast<grpc_channel_element*>(op->handler_private.extra_arg);
1821
- ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
1791
+ void ChannelData::StartTransportOpLocked(grpc_transport_op* op) {
1822
1792
  // Connectivity watch.
1823
1793
  if (op->start_connectivity_watch != nullptr) {
1824
- chand->state_tracker_.AddWatcher(op->start_connectivity_watch_state,
1825
- std::move(op->start_connectivity_watch));
1794
+ state_tracker_.AddWatcher(op->start_connectivity_watch_state,
1795
+ std::move(op->start_connectivity_watch));
1826
1796
  }
1827
1797
  if (op->stop_connectivity_watch != nullptr) {
1828
- chand->state_tracker_.RemoveWatcher(op->stop_connectivity_watch);
1798
+ state_tracker_.RemoveWatcher(op->stop_connectivity_watch);
1829
1799
  }
1830
1800
  // Ping.
1831
1801
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
1832
- grpc_error* error = chand->DoPingLocked(op);
1802
+ grpc_error* error = DoPingLocked(op);
1833
1803
  if (error != GRPC_ERROR_NONE) {
1834
1804
  ExecCtx::Run(DEBUG_LOCATION, op->send_ping.on_initiate,
1835
1805
  GRPC_ERROR_REF(error));
@@ -1841,40 +1811,39 @@ void ChannelData::StartTransportOpLocked(void* arg, grpc_error* /*ignored*/) {
1841
1811
  }
1842
1812
  // Reset backoff.
1843
1813
  if (op->reset_connect_backoff) {
1844
- if (chand->resolving_lb_policy_ != nullptr) {
1845
- chand->resolving_lb_policy_->ResetBackoffLocked();
1814
+ if (resolving_lb_policy_ != nullptr) {
1815
+ resolving_lb_policy_->ResetBackoffLocked();
1846
1816
  }
1847
1817
  }
1848
1818
  // Disconnect or enter IDLE.
1849
1819
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
1850
1820
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
1851
- gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", chand,
1821
+ gpr_log(GPR_INFO, "chand=%p: disconnect_with_error: %s", this,
1852
1822
  grpc_error_string(op->disconnect_with_error));
1853
1823
  }
1854
- chand->DestroyResolvingLoadBalancingPolicyLocked();
1824
+ DestroyResolvingLoadBalancingPolicyLocked();
1855
1825
  intptr_t value;
1856
1826
  if (grpc_error_get_int(op->disconnect_with_error,
1857
1827
  GRPC_ERROR_INT_CHANNEL_CONNECTIVITY_STATE, &value) &&
1858
1828
  static_cast<grpc_connectivity_state>(value) == GRPC_CHANNEL_IDLE) {
1859
- if (chand->disconnect_error() == GRPC_ERROR_NONE) {
1829
+ if (disconnect_error() == GRPC_ERROR_NONE) {
1860
1830
  // Enter IDLE state.
1861
- chand->UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE,
1862
- "channel entering IDLE", nullptr);
1831
+ UpdateStateAndPickerLocked(GRPC_CHANNEL_IDLE, "channel entering IDLE",
1832
+ nullptr);
1863
1833
  }
1864
1834
  GRPC_ERROR_UNREF(op->disconnect_with_error);
1865
1835
  } else {
1866
1836
  // Disconnect.
1867
- GPR_ASSERT(chand->disconnect_error_.Load(MemoryOrder::RELAXED) ==
1837
+ GPR_ASSERT(disconnect_error_.Load(MemoryOrder::RELAXED) ==
1868
1838
  GRPC_ERROR_NONE);
1869
- chand->disconnect_error_.Store(op->disconnect_with_error,
1870
- MemoryOrder::RELEASE);
1871
- chand->UpdateStateAndPickerLocked(
1839
+ disconnect_error_.Store(op->disconnect_with_error, MemoryOrder::RELEASE);
1840
+ UpdateStateAndPickerLocked(
1872
1841
  GRPC_CHANNEL_SHUTDOWN, "shutdown from API",
1873
- MakeUnique<LoadBalancingPolicy::TransientFailurePicker>(
1842
+ absl::make_unique<LoadBalancingPolicy::TransientFailurePicker>(
1874
1843
  GRPC_ERROR_REF(op->disconnect_with_error)));
1875
1844
  }
1876
1845
  }
1877
- GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_, "start_transport_op");
1846
+ GRPC_CHANNEL_STACK_UNREF(owning_stack_, "start_transport_op");
1878
1847
  ExecCtx::Run(DEBUG_LOCATION, op->on_consumed, GRPC_ERROR_NONE);
1879
1848
  }
1880
1849
 
@@ -1886,13 +1855,10 @@ void ChannelData::StartTransportOp(grpc_channel_element* elem,
1886
1855
  if (op->bind_pollset != nullptr) {
1887
1856
  grpc_pollset_set_add_pollset(chand->interested_parties_, op->bind_pollset);
1888
1857
  }
1889
- // Pop into control plane combiner for remaining ops.
1890
- op->handler_private.extra_arg = elem;
1858
+ // Pop into control plane work_serializer for remaining ops.
1891
1859
  GRPC_CHANNEL_STACK_REF(chand->owning_stack_, "start_transport_op");
1892
- chand->combiner_->Run(
1893
- GRPC_CLOSURE_INIT(&op->handler_private.closure,
1894
- ChannelData::StartTransportOpLocked, op, nullptr),
1895
- GRPC_ERROR_NONE);
1860
+ chand->work_serializer_->Run(
1861
+ [chand, op]() { chand->StartTransportOpLocked(op); }, DEBUG_LOCATION);
1896
1862
  }
1897
1863
 
1898
1864
  void ChannelData::GetChannelInfo(grpc_channel_element* elem,
@@ -1943,14 +1909,13 @@ ChannelData::GetConnectedSubchannelInDataPlane(
1943
1909
  return connected_subchannel->Ref();
1944
1910
  }
1945
1911
 
1946
- void ChannelData::TryToConnectLocked(void* arg, grpc_error* /*error_ignored*/) {
1947
- auto* chand = static_cast<ChannelData*>(arg);
1948
- if (chand->resolving_lb_policy_ != nullptr) {
1949
- chand->resolving_lb_policy_->ExitIdleLocked();
1912
+ void ChannelData::TryToConnectLocked() {
1913
+ if (resolving_lb_policy_ != nullptr) {
1914
+ resolving_lb_policy_->ExitIdleLocked();
1950
1915
  } else {
1951
- chand->CreateResolvingLoadBalancingPolicyLocked();
1916
+ CreateResolvingLoadBalancingPolicyLocked();
1952
1917
  }
1953
- GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_, "TryToConnect");
1918
+ GRPC_CHANNEL_STACK_UNREF(owning_stack_, "TryToConnect");
1954
1919
  }
1955
1920
 
1956
1921
  grpc_connectivity_state ChannelData::CheckConnectivityState(
@@ -1958,8 +1923,7 @@ grpc_connectivity_state ChannelData::CheckConnectivityState(
1958
1923
  grpc_connectivity_state out = state_tracker_.state();
1959
1924
  if (out == GRPC_CHANNEL_IDLE && try_to_connect) {
1960
1925
  GRPC_CHANNEL_STACK_REF(owning_stack_, "TryToConnect");
1961
- combiner_->Run(GRPC_CLOSURE_CREATE(TryToConnectLocked, this, nullptr),
1962
- GRPC_ERROR_NONE);
1926
+ work_serializer_->Run([this]() { TryToConnectLocked(); }, DEBUG_LOCATION);
1963
1927
  }
1964
1928
  return out;
1965
1929
  }
@@ -2265,10 +2229,32 @@ void CallData::FreeCachedSendOpDataForCompletedBatch(
2265
2229
  void CallData::RecvTrailingMetadataReadyForLoadBalancingPolicy(
2266
2230
  void* arg, grpc_error* error) {
2267
2231
  CallData* calld = static_cast<CallData*>(arg);
2232
+ // Set error if call did not succeed.
2233
+ grpc_error* error_for_lb = GRPC_ERROR_NONE;
2234
+ if (error != GRPC_ERROR_NONE) {
2235
+ error_for_lb = error;
2236
+ } else {
2237
+ const auto& fields = calld->recv_trailing_metadata_->idx.named;
2238
+ GPR_ASSERT(fields.grpc_status != nullptr);
2239
+ grpc_status_code status =
2240
+ grpc_get_status_code_from_metadata(fields.grpc_status->md);
2241
+ std::string msg;
2242
+ if (status != GRPC_STATUS_OK) {
2243
+ error_for_lb = grpc_error_set_int(
2244
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("call failed"),
2245
+ GRPC_ERROR_INT_GRPC_STATUS, status);
2246
+ if (fields.grpc_message != nullptr) {
2247
+ error_for_lb = grpc_error_set_str(
2248
+ error_for_lb, GRPC_ERROR_STR_GRPC_MESSAGE,
2249
+ grpc_slice_ref_internal(GRPC_MDVALUE(fields.grpc_message->md)));
2250
+ }
2251
+ }
2252
+ }
2268
2253
  // Invoke callback to LB policy.
2269
2254
  Metadata trailing_metadata(calld, calld->recv_trailing_metadata_);
2270
- calld->lb_recv_trailing_metadata_ready_(error, &trailing_metadata,
2255
+ calld->lb_recv_trailing_metadata_ready_(error_for_lb, &trailing_metadata,
2271
2256
  &calld->lb_call_state_);
2257
+ if (error == GRPC_ERROR_NONE) GRPC_ERROR_UNREF(error_for_lb);
2272
2258
  // Chain to original callback.
2273
2259
  Closure::Run(DEBUG_LOCATION, calld->original_recv_trailing_metadata_ready_,
2274
2260
  GRPC_ERROR_REF(error));
@@ -3185,10 +3171,9 @@ void CallData::OnComplete(void* arg, grpc_error* error) {
3185
3171
  ChannelData* chand = static_cast<ChannelData*>(elem->channel_data);
3186
3172
  CallData* calld = static_cast<CallData*>(elem->call_data);
3187
3173
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
3188
- char* batch_str = grpc_transport_stream_op_batch_string(&batch_data->batch);
3189
3174
  gpr_log(GPR_INFO, "chand=%p calld=%p: got on_complete, error=%s, batch=%s",
3190
- chand, calld, grpc_error_string(error), batch_str);
3191
- gpr_free(batch_str);
3175
+ chand, calld, grpc_error_string(error),
3176
+ grpc_transport_stream_op_batch_string(&batch_data->batch).c_str());
3192
3177
  }
3193
3178
  SubchannelCallRetryState* retry_state =
3194
3179
  static_cast<SubchannelCallRetryState*>(
@@ -3261,10 +3246,8 @@ void CallData::AddClosureForSubchannelBatch(
3261
3246
  GRPC_CLOSURE_INIT(&batch->handler_private.closure, StartBatchInCallCombiner,
3262
3247
  batch, grpc_schedule_on_exec_ctx);
3263
3248
  if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
3264
- char* batch_str = grpc_transport_stream_op_batch_string(batch);
3265
3249
  gpr_log(GPR_INFO, "chand=%p calld=%p: starting subchannel batch: %s", chand,
3266
- this, batch_str);
3267
- gpr_free(batch_str);
3250
+ this, grpc_transport_stream_op_batch_string(batch).c_str());
3268
3251
  }
3269
3252
  closures->Add(&batch->handler_private.closure, GRPC_ERROR_NONE,
3270
3253
  "start_subchannel_batch");
@@ -3777,45 +3760,52 @@ void CallData::ApplyServiceConfigToCallLocked(grpc_call_element* elem) {
3777
3760
  gpr_log(GPR_INFO, "chand=%p calld=%p: applying service config to call",
3778
3761
  chand, this);
3779
3762
  }
3780
- // Store a ref to the service_config in service_config_call_data_. Also, save
3781
- // a pointer to this in the call_context so that all future filters can access
3782
- // it.
3783
- service_config_call_data_ =
3784
- ServiceConfig::CallData(chand->service_config(), path_);
3785
- if (service_config_call_data_.service_config() != nullptr) {
3786
- call_context_[GRPC_CONTEXT_SERVICE_CONFIG_CALL_DATA].value =
3787
- &service_config_call_data_;
3763
+ auto service_config = chand->service_config();
3764
+ if (service_config != nullptr) {
3765
+ // Create a ServiceConfigCallData for the call. This stores a ref to the
3766
+ // ServiceConfig and caches the right set of parsed configs to use for
3767
+ // the call. The MethodConfig will store itself in the call context,
3768
+ // so that it can be accessed by filters in the subchannel, and it
3769
+ // will be cleaned up when the call ends.
3770
+ const auto* method_params_vector =
3771
+ service_config->GetMethodParsedConfigVector(path_);
3772
+ auto* service_config_call_data = arena_->New<ServiceConfigCallData>(
3773
+ std::move(service_config), method_params_vector, call_context_);
3774
+ // Apply our own method params to the call.
3788
3775
  method_params_ = static_cast<ClientChannelMethodParsedConfig*>(
3789
- service_config_call_data_.GetMethodParsedConfig(
3776
+ service_config_call_data->GetMethodParsedConfig(
3790
3777
  internal::ClientChannelServiceConfigParser::ParserIndex()));
3791
- }
3792
- retry_throttle_data_ = chand->retry_throttle_data();
3793
- if (method_params_ != nullptr) {
3794
- // If the deadline from the service config is shorter than the one
3795
- // from the client API, reset the deadline timer.
3796
- if (chand->deadline_checking_enabled() && method_params_->timeout() != 0) {
3797
- const grpc_millis per_method_deadline =
3798
- grpc_cycle_counter_to_millis_round_up(call_start_time_) +
3799
- method_params_->timeout();
3800
- if (per_method_deadline < deadline_) {
3801
- deadline_ = per_method_deadline;
3802
- grpc_deadline_state_reset(elem, deadline_);
3778
+ if (method_params_ != nullptr) {
3779
+ // If the deadline from the service config is shorter than the one
3780
+ // from the client API, reset the deadline timer.
3781
+ if (chand->deadline_checking_enabled() &&
3782
+ method_params_->timeout() != 0) {
3783
+ const grpc_millis per_method_deadline =
3784
+ grpc_cycle_counter_to_millis_round_up(call_start_time_) +
3785
+ method_params_->timeout();
3786
+ if (per_method_deadline < deadline_) {
3787
+ deadline_ = per_method_deadline;
3788
+ grpc_deadline_state_reset(elem, deadline_);
3789
+ }
3803
3790
  }
3804
- }
3805
- // If the service config set wait_for_ready and the application
3806
- // did not explicitly set it, use the value from the service config.
3807
- uint32_t* send_initial_metadata_flags =
3808
- &pending_batches_[0]
3809
- .batch->payload->send_initial_metadata.send_initial_metadata_flags;
3810
- if (method_params_->wait_for_ready().has_value() &&
3811
- !(*send_initial_metadata_flags &
3812
- GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET)) {
3813
- if (method_params_->wait_for_ready().value()) {
3814
- *send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
3815
- } else {
3816
- *send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
3791
+ // If the service config set wait_for_ready and the application
3792
+ // did not explicitly set it, use the value from the service config.
3793
+ uint32_t* send_initial_metadata_flags =
3794
+ &pending_batches_[0]
3795
+ .batch->payload->send_initial_metadata
3796
+ .send_initial_metadata_flags;
3797
+ if (method_params_->wait_for_ready().has_value() &&
3798
+ !(*send_initial_metadata_flags &
3799
+ GRPC_INITIAL_METADATA_WAIT_FOR_READY_EXPLICITLY_SET)) {
3800
+ if (method_params_->wait_for_ready().value()) {
3801
+ *send_initial_metadata_flags |= GRPC_INITIAL_METADATA_WAIT_FOR_READY;
3802
+ } else {
3803
+ *send_initial_metadata_flags &= ~GRPC_INITIAL_METADATA_WAIT_FOR_READY;
3804
+ }
3817
3805
  }
3818
3806
  }
3807
+ // Set retry throttle data for call.
3808
+ retry_throttle_data_ = chand->retry_throttle_data();
3819
3809
  }
3820
3810
  // If no retry policy, disable retries.
3821
3811
  // TODO(roth): Remove this when adding support for transparent retries.
@@ -3871,8 +3861,25 @@ bool CallData::PickSubchannelLocked(grpc_call_element* elem,
3871
3861
  // The picker being null means that the channel is currently in IDLE state.
3872
3862
  // The incoming call will make the channel exit IDLE.
3873
3863
  if (chand->picker() == nullptr) {
3874
- // Bounce into the control plane combiner to exit IDLE.
3875
- chand->CheckConnectivityState(/*try_to_connect=*/true);
3864
+ GRPC_CHANNEL_STACK_REF(chand->owning_stack(), "PickSubchannelLocked");
3865
+ // Bounce into the control plane work serializer to exit IDLE. Since we are
3866
+ // holding on to the data plane mutex here, we offload it on the ExecCtx so
3867
+ // that we don't deadlock with ourselves.
3868
+ ExecCtx::Run(
3869
+ DEBUG_LOCATION,
3870
+ GRPC_CLOSURE_CREATE(
3871
+ [](void* arg, grpc_error* /*error*/) {
3872
+ auto* chand = static_cast<ChannelData*>(arg);
3873
+ chand->work_serializer()->Run(
3874
+ [chand]() {
3875
+ chand->CheckConnectivityState(/*try_to_connect=*/true);
3876
+ GRPC_CHANNEL_STACK_UNREF(chand->owning_stack(),
3877
+ "PickSubchannelLocked");
3878
+ },
3879
+ DEBUG_LOCATION);
3880
+ },
3881
+ chand, nullptr),
3882
+ GRPC_ERROR_NONE);
3876
3883
  // Queue the pick, so that it will be attempted once the channel
3877
3884
  // becomes connected.
3878
3885
  AddCallToQueuedPicksLocked(elem);
@@ -3957,8 +3964,10 @@ bool CallData::PickSubchannelLocked(grpc_call_element* elem,
3957
3964
  if (pick_queued_) RemoveCallFromQueuedPicksLocked(elem);
3958
3965
  // Handle drops.
3959
3966
  if (GPR_UNLIKELY(result.subchannel == nullptr)) {
3960
- result.error = GRPC_ERROR_CREATE_FROM_STATIC_STRING(
3961
- "Call dropped by load balancing policy");
3967
+ result.error = grpc_error_set_int(
3968
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING(
3969
+ "Call dropped by load balancing policy"),
3970
+ GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE);
3962
3971
  } else {
3963
3972
  // Grab a ref to the connected subchannel while we're still
3964
3973
  // holding the data plane mutex.