grpc 1.24.0 → 1.25.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (504) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +306 -243
  3. data/etc/roots.pem +0 -100
  4. data/include/grpc/grpc_security.h +44 -18
  5. data/include/grpc/impl/codegen/grpc_types.h +15 -0
  6. data/include/grpc/impl/codegen/port_platform.h +27 -11
  7. data/include/grpc/impl/codegen/sync_generic.h +1 -1
  8. data/src/boringssl/err_data.c +695 -650
  9. data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
  10. data/src/core/ext/filters/client_channel/client_channel.h +24 -0
  11. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
  12. data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
  13. data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
  14. data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
  15. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
  17. data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
  19. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
  20. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
  21. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
  22. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
  25. data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
  26. data/src/core/ext/filters/client_channel/resolver.cc +1 -2
  27. data/src/core/ext/filters/client_channel/resolver.h +8 -16
  28. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
  29. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
  34. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
  37. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
  38. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
  39. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
  40. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
  41. data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
  42. data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
  45. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
  46. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
  47. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
  48. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
  49. data/src/core/ext/filters/client_channel/service_config.h +8 -8
  50. data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
  51. data/src/core/ext/filters/client_channel/subchannel.h +7 -9
  52. data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
  53. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
  54. data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
  55. data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
  56. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
  57. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
  58. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
  59. data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
  60. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
  61. data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
  62. data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
  63. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
  64. data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
  65. data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
  66. data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
  67. data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
  68. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
  69. data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
  70. data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
  71. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
  73. data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
  74. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
  75. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
  77. data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
  78. data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
  79. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
  80. data/src/core/lib/channel/channel_args.cc +16 -0
  81. data/src/core/lib/channel/channel_args.h +22 -0
  82. data/src/core/lib/channel/channelz.cc +5 -6
  83. data/src/core/lib/channel/channelz.h +1 -1
  84. data/src/core/lib/channel/connected_channel.cc +20 -20
  85. data/src/core/lib/channel/handshaker.h +3 -4
  86. data/src/core/lib/channel/handshaker_factory.h +1 -3
  87. data/src/core/lib/debug/trace.h +3 -2
  88. data/src/core/lib/gprpp/arena.cc +3 -3
  89. data/src/core/lib/gprpp/arena.h +2 -3
  90. data/src/core/lib/gprpp/inlined_vector.h +9 -0
  91. data/src/core/lib/gprpp/map.h +3 -501
  92. data/src/core/lib/gprpp/memory.h +45 -41
  93. data/src/core/lib/gprpp/mpscq.cc +108 -0
  94. data/src/core/lib/gprpp/mpscq.h +98 -0
  95. data/src/core/lib/gprpp/orphanable.h +6 -11
  96. data/src/core/lib/gprpp/ref_counted.h +25 -19
  97. data/src/core/lib/gprpp/set.h +33 -0
  98. data/src/core/lib/gprpp/thd.h +2 -4
  99. data/src/core/lib/http/httpcli.cc +1 -1
  100. data/src/core/lib/http/httpcli_security_connector.cc +15 -11
  101. data/src/core/lib/http/parser.cc +1 -1
  102. data/src/core/lib/iomgr/buffer_list.cc +4 -5
  103. data/src/core/lib/iomgr/buffer_list.h +5 -6
  104. data/src/core/lib/iomgr/call_combiner.cc +4 -5
  105. data/src/core/lib/iomgr/call_combiner.h +2 -2
  106. data/src/core/lib/iomgr/cfstream_handle.h +3 -5
  107. data/src/core/lib/iomgr/closure.h +8 -3
  108. data/src/core/lib/iomgr/combiner.cc +45 -82
  109. data/src/core/lib/iomgr/combiner.h +32 -8
  110. data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
  111. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
  112. data/src/core/lib/iomgr/exec_ctx.h +4 -3
  113. data/src/core/lib/iomgr/executor.cc +4 -2
  114. data/src/core/lib/iomgr/executor.h +3 -0
  115. data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
  116. data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
  117. data/src/core/lib/iomgr/executor/threadpool.h +7 -11
  118. data/src/core/lib/iomgr/resource_quota.cc +55 -51
  119. data/src/core/lib/iomgr/resource_quota.h +13 -9
  120. data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
  121. data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
  123. data/src/core/lib/iomgr/tcp_custom.cc +9 -7
  124. data/src/core/lib/iomgr/tcp_posix.cc +20 -16
  125. data/src/core/lib/iomgr/tcp_server.h +1 -4
  126. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
  127. data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
  128. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
  129. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  130. data/src/core/lib/iomgr/udp_server.cc +3 -2
  131. data/src/core/lib/iomgr/udp_server.h +6 -12
  132. data/src/core/lib/json/json.h +1 -1
  133. data/src/core/lib/json/json_string.cc +2 -2
  134. data/src/core/lib/profiling/basic_timers.cc +2 -2
  135. data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
  136. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
  137. data/src/core/lib/security/credentials/credentials.h +4 -20
  138. data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
  139. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
  140. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
  141. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
  142. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
  143. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
  144. data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
  145. data/src/core/lib/security/security_connector/security_connector.cc +1 -0
  146. data/src/core/lib/security/security_connector/security_connector.h +19 -17
  147. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
  148. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  149. data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
  150. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
  151. data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
  152. data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
  153. data/src/core/lib/security/transport/security_handshaker.cc +29 -13
  154. data/src/core/lib/security/transport/security_handshaker.h +4 -2
  155. data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
  156. data/src/core/lib/slice/slice.cc +2 -10
  157. data/src/core/lib/slice/slice_hash_table.h +4 -6
  158. data/src/core/lib/slice/slice_intern.cc +42 -39
  159. data/src/core/lib/slice/slice_internal.h +3 -3
  160. data/src/core/lib/slice/slice_utils.h +21 -4
  161. data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
  162. data/src/core/lib/surface/call.cc +3 -3
  163. data/src/core/lib/surface/channel.cc +7 -0
  164. data/src/core/lib/surface/completion_queue.cc +12 -11
  165. data/src/core/lib/surface/completion_queue.h +4 -2
  166. data/src/core/lib/surface/init.cc +1 -0
  167. data/src/core/lib/surface/lame_client.cc +33 -18
  168. data/src/core/lib/surface/server.cc +77 -76
  169. data/src/core/lib/surface/version.cc +1 -1
  170. data/src/core/lib/transport/byte_stream.h +3 -7
  171. data/src/core/lib/transport/connectivity_state.cc +112 -98
  172. data/src/core/lib/transport/connectivity_state.h +100 -50
  173. data/src/core/lib/transport/static_metadata.cc +276 -288
  174. data/src/core/lib/transport/static_metadata.h +73 -76
  175. data/src/core/lib/transport/status_conversion.cc +1 -1
  176. data/src/core/lib/transport/status_metadata.cc +1 -1
  177. data/src/core/lib/transport/transport.cc +2 -2
  178. data/src/core/lib/transport/transport.h +12 -4
  179. data/src/core/lib/transport/transport_op_string.cc +14 -11
  180. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
  181. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
  182. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
  183. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
  184. data/src/core/tsi/fake_transport_security.cc +7 -5
  185. data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
  186. data/src/core/tsi/local_transport_security.cc +8 -6
  187. data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
  188. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
  189. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
  190. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
  191. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
  192. data/src/core/tsi/ssl_transport_security.cc +12 -12
  193. data/src/core/tsi/ssl_transport_security.h +2 -2
  194. data/src/core/tsi/transport_security_grpc.cc +7 -0
  195. data/src/core/tsi/transport_security_grpc.h +6 -0
  196. data/src/ruby/ext/grpc/extconf.rb +1 -0
  197. data/src/ruby/ext/grpc/rb_call.c +1 -1
  198. data/src/ruby/ext/grpc/rb_channel.c +1 -1
  199. data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
  200. data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
  201. data/src/ruby/lib/grpc/version.rb +1 -1
  202. data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
  203. data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
  204. data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
  205. data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
  206. data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
  207. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
  208. data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
  209. data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
  210. data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
  211. data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
  212. data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
  213. data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
  214. data/third_party/boringssl/crypto/base64/base64.c +2 -2
  215. data/third_party/boringssl/crypto/bio/bio.c +73 -9
  216. data/third_party/boringssl/crypto/bio/connect.c +4 -0
  217. data/third_party/boringssl/crypto/bio/fd.c +4 -0
  218. data/third_party/boringssl/crypto/bio/file.c +5 -2
  219. data/third_party/boringssl/crypto/bio/socket.c +4 -0
  220. data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
  221. data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
  222. data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
  223. data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
  224. data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
  225. data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
  226. data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
  227. data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
  228. data/third_party/boringssl/crypto/chacha/internal.h +45 -0
  229. data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
  230. data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
  231. data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
  232. data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
  233. data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
  234. data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
  235. data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
  236. data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
  237. data/third_party/boringssl/crypto/conf/conf.c +7 -0
  238. data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
  239. data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
  240. data/third_party/boringssl/crypto/cpu-intel.c +45 -51
  241. data/third_party/boringssl/crypto/crypto.c +39 -22
  242. data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
  243. data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
  244. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
  245. data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
  246. data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
  247. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
  248. data/third_party/boringssl/crypto/engine/engine.c +2 -1
  249. data/third_party/boringssl/crypto/err/err.c +2 -0
  250. data/third_party/boringssl/crypto/err/internal.h +2 -2
  251. data/third_party/boringssl/crypto/evp/evp.c +89 -8
  252. data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
  253. data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
  254. data/third_party/boringssl/crypto/evp/internal.h +18 -1
  255. data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
  256. data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
  257. data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
  258. data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
  259. data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
  260. data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
  261. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
  262. data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
  263. data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
  264. data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
  265. data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
  266. data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
  267. data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
  268. data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
  269. data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
  270. data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
  271. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
  272. data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
  273. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
  274. data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
  275. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
  276. data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
  277. data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
  278. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
  279. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
  280. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
  281. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
  282. data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
  283. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
  284. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
  285. data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
  286. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
  287. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
  288. data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
  289. data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
  290. data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
  291. data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
  292. data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
  293. data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
  294. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
  295. data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
  296. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
  297. data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
  298. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
  299. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
  300. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
  301. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
  302. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
  303. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
  304. data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
  305. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
  306. data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
  307. data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
  308. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
  309. data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
  310. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
  311. data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
  312. data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
  313. data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
  314. data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
  315. data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
  316. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
  317. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
  318. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
  319. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
  320. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
  321. data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
  322. data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
  323. data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
  324. data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
  325. data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
  326. data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
  327. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
  328. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
  329. data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
  330. data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
  331. data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
  332. data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
  333. data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
  334. data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
  335. data/third_party/boringssl/crypto/hrss/internal.h +62 -0
  336. data/third_party/boringssl/crypto/internal.h +95 -20
  337. data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
  338. data/third_party/boringssl/crypto/mem.c +39 -2
  339. data/third_party/boringssl/crypto/obj/obj.c +4 -4
  340. data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
  341. data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
  342. data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
  343. data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
  344. data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
  345. data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
  346. data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
  347. data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
  348. data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
  349. data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
  350. data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
  351. data/third_party/boringssl/crypto/pool/internal.h +1 -1
  352. data/third_party/boringssl/crypto/pool/pool.c +21 -0
  353. data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
  354. data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
  355. data/third_party/boringssl/crypto/refcount_lock.c +2 -2
  356. data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
  357. data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
  358. data/third_party/boringssl/crypto/stack/stack.c +83 -32
  359. data/third_party/boringssl/crypto/thread_none.c +2 -2
  360. data/third_party/boringssl/crypto/thread_pthread.c +2 -2
  361. data/third_party/boringssl/crypto/thread_win.c +38 -19
  362. data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
  363. data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
  364. data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
  365. data/third_party/boringssl/crypto/x509/by_file.c +12 -10
  366. data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
  367. data/third_party/boringssl/crypto/x509/t_req.c +1 -3
  368. data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
  369. data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
  370. data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
  371. data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
  372. data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
  373. data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
  374. data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
  375. data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
  376. data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
  377. data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
  378. data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
  379. data/third_party/boringssl/crypto/x509/x509name.c +2 -3
  380. data/third_party/boringssl/crypto/x509/x_all.c +109 -210
  381. data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
  382. data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
  383. data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
  384. data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
  385. data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
  386. data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
  387. data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
  388. data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
  389. data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
  390. data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
  391. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
  392. data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
  393. data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
  394. data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
  395. data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
  396. data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
  397. data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
  398. data/third_party/boringssl/include/openssl/aead.h +45 -19
  399. data/third_party/boringssl/include/openssl/aes.h +32 -7
  400. data/third_party/boringssl/include/openssl/asn1.h +7 -77
  401. data/third_party/boringssl/include/openssl/base.h +120 -6
  402. data/third_party/boringssl/include/openssl/base64.h +4 -1
  403. data/third_party/boringssl/include/openssl/bio.h +112 -81
  404. data/third_party/boringssl/include/openssl/blowfish.h +3 -3
  405. data/third_party/boringssl/include/openssl/bn.h +55 -29
  406. data/third_party/boringssl/include/openssl/buf.h +2 -2
  407. data/third_party/boringssl/include/openssl/bytestring.h +54 -32
  408. data/third_party/boringssl/include/openssl/cast.h +2 -2
  409. data/third_party/boringssl/include/openssl/cipher.h +46 -16
  410. data/third_party/boringssl/include/openssl/cmac.h +6 -2
  411. data/third_party/boringssl/include/openssl/conf.h +3 -6
  412. data/third_party/boringssl/include/openssl/cpu.h +25 -9
  413. data/third_party/boringssl/include/openssl/crypto.h +32 -10
  414. data/third_party/boringssl/include/openssl/curve25519.h +4 -4
  415. data/third_party/boringssl/include/openssl/dh.h +3 -2
  416. data/third_party/boringssl/include/openssl/digest.h +21 -7
  417. data/third_party/boringssl/include/openssl/dsa.h +8 -2
  418. data/third_party/boringssl/include/openssl/e_os2.h +18 -0
  419. data/third_party/boringssl/include/openssl/ec.h +25 -21
  420. data/third_party/boringssl/include/openssl/ec_key.h +36 -8
  421. data/third_party/boringssl/include/openssl/ecdh.h +17 -0
  422. data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
  423. data/third_party/boringssl/include/openssl/engine.h +4 -4
  424. data/third_party/boringssl/include/openssl/err.h +3 -0
  425. data/third_party/boringssl/include/openssl/evp.h +199 -42
  426. data/third_party/boringssl/include/openssl/hmac.h +4 -4
  427. data/third_party/boringssl/include/openssl/hrss.h +100 -0
  428. data/third_party/boringssl/include/openssl/lhash.h +131 -23
  429. data/third_party/boringssl/include/openssl/md4.h +6 -4
  430. data/third_party/boringssl/include/openssl/md5.h +6 -4
  431. data/third_party/boringssl/include/openssl/mem.h +6 -2
  432. data/third_party/boringssl/include/openssl/nid.h +3 -0
  433. data/third_party/boringssl/include/openssl/obj.h +3 -0
  434. data/third_party/boringssl/include/openssl/pem.h +102 -64
  435. data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
  436. data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
  437. data/third_party/boringssl/include/openssl/pool.h +13 -2
  438. data/third_party/boringssl/include/openssl/ripemd.h +5 -4
  439. data/third_party/boringssl/include/openssl/rsa.h +46 -15
  440. data/third_party/boringssl/include/openssl/sha.h +40 -28
  441. data/third_party/boringssl/include/openssl/siphash.h +37 -0
  442. data/third_party/boringssl/include/openssl/span.h +17 -9
  443. data/third_party/boringssl/include/openssl/ssl.h +766 -393
  444. data/third_party/boringssl/include/openssl/ssl3.h +4 -3
  445. data/third_party/boringssl/include/openssl/stack.h +134 -77
  446. data/third_party/boringssl/include/openssl/thread.h +1 -1
  447. data/third_party/boringssl/include/openssl/tls1.h +25 -9
  448. data/third_party/boringssl/include/openssl/type_check.h +14 -15
  449. data/third_party/boringssl/include/openssl/x509.h +28 -3
  450. data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
  451. data/third_party/boringssl/include/openssl/x509v3.h +17 -13
  452. data/third_party/boringssl/ssl/d1_both.cc +9 -18
  453. data/third_party/boringssl/ssl/d1_lib.cc +4 -3
  454. data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
  455. data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
  456. data/third_party/boringssl/ssl/dtls_method.cc +0 -1
  457. data/third_party/boringssl/ssl/dtls_record.cc +28 -28
  458. data/third_party/boringssl/ssl/handoff.cc +295 -91
  459. data/third_party/boringssl/ssl/handshake.cc +133 -72
  460. data/third_party/boringssl/ssl/handshake_client.cc +218 -189
  461. data/third_party/boringssl/ssl/handshake_server.cc +399 -272
  462. data/third_party/boringssl/ssl/internal.h +1413 -928
  463. data/third_party/boringssl/ssl/s3_both.cc +175 -36
  464. data/third_party/boringssl/ssl/s3_lib.cc +9 -13
  465. data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
  466. data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
  467. data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
  468. data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
  469. data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
  470. data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
  471. data/third_party/boringssl/ssl/ssl_file.cc +2 -0
  472. data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
  473. data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
  474. data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
  475. data/third_party/boringssl/ssl/ssl_session.cc +230 -178
  476. data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
  477. data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
  478. data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
  479. data/third_party/boringssl/ssl/t1_enc.cc +5 -96
  480. data/third_party/boringssl/ssl/t1_lib.cc +931 -678
  481. data/third_party/boringssl/ssl/tls13_both.cc +251 -121
  482. data/third_party/boringssl/ssl/tls13_client.cc +129 -73
  483. data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
  484. data/third_party/boringssl/ssl/tls13_server.cc +259 -192
  485. data/third_party/boringssl/ssl/tls_method.cc +26 -21
  486. data/third_party/boringssl/ssl/tls_record.cc +42 -47
  487. data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
  488. data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
  489. data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
  490. data/third_party/boringssl/third_party/fiat/p256.c +238 -999
  491. data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
  492. data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
  493. data/third_party/upb/upb/port_def.inc +1 -1
  494. data/third_party/upb/upb/table.c +2 -1
  495. metadata +71 -43
  496. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
  497. data/src/core/lib/gpr/mpscq.cc +0 -117
  498. data/src/core/lib/gpr/mpscq.h +0 -88
  499. data/src/core/lib/gprpp/abstract.h +0 -47
  500. data/src/core/lib/gprpp/pair.h +0 -38
  501. data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
  502. data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
  503. data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
  504. data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -0,0 +1,221 @@
1
+ //
2
+ // Copyright 2019 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
16
+
17
+ #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_H
18
+ #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include "src/core/ext/filters/client_channel/service_config.h"
23
+ #include "src/core/ext/filters/client_channel/xds/xds_api.h"
24
+ #include "src/core/ext/filters/client_channel/xds/xds_bootstrap.h"
25
+ #include "src/core/ext/filters/client_channel/xds/xds_client_stats.h"
26
+ #include "src/core/lib/gprpp/map.h"
27
+ #include "src/core/lib/gprpp/memory.h"
28
+ #include "src/core/lib/gprpp/orphanable.h"
29
+ #include "src/core/lib/gprpp/ref_counted.h"
30
+ #include "src/core/lib/gprpp/ref_counted_ptr.h"
31
+ #include "src/core/lib/gprpp/set.h"
32
+ #include "src/core/lib/gprpp/string_view.h"
33
+ #include "src/core/lib/iomgr/combiner.h"
34
+
35
+ namespace grpc_core {
36
+
37
+ extern TraceFlag xds_client_trace;
38
+
39
+ class XdsClient : public InternallyRefCounted<XdsClient> {
40
+ public:
41
+ // Service config watcher interface. Implemented by callers.
42
+ class ServiceConfigWatcherInterface {
43
+ public:
44
+ virtual ~ServiceConfigWatcherInterface() = default;
45
+
46
+ virtual void OnServiceConfigChanged(
47
+ RefCountedPtr<ServiceConfig> service_config) = 0;
48
+
49
+ virtual void OnError(grpc_error* error) = 0;
50
+ };
51
+
52
+ // Cluster data watcher interface. Implemented by callers.
53
+ class ClusterWatcherInterface {
54
+ public:
55
+ virtual ~ClusterWatcherInterface() = default;
56
+
57
+ virtual void OnClusterChanged(CdsUpdate cluster_data) = 0;
58
+
59
+ virtual void OnError(grpc_error* error) = 0;
60
+ };
61
+
62
+ // Endpoint data watcher interface. Implemented by callers.
63
+ class EndpointWatcherInterface {
64
+ public:
65
+ virtual ~EndpointWatcherInterface() = default;
66
+
67
+ virtual void OnEndpointChanged(EdsUpdate update) = 0;
68
+
69
+ virtual void OnError(grpc_error* error) = 0;
70
+ };
71
+
72
+ // If *error is not GRPC_ERROR_NONE after construction, then there was
73
+ // an error initializing the client.
74
+ XdsClient(Combiner* combiner, grpc_pollset_set* interested_parties,
75
+ StringView server_name,
76
+ UniquePtr<ServiceConfigWatcherInterface> watcher,
77
+ const grpc_channel_args& channel_args, grpc_error** error);
78
+ ~XdsClient();
79
+
80
+ void Orphan() override;
81
+
82
+ // Start and cancel cluster data watch for a cluster.
83
+ // The XdsClient takes ownership of the watcher, but the caller may
84
+ // keep a raw pointer to the watcher, which may be used only for
85
+ // cancellation. (Because the caller does not own the watcher, the
86
+ // pointer must not be used for any other purpose.)
87
+ void WatchClusterData(StringView cluster,
88
+ UniquePtr<ClusterWatcherInterface> watcher);
89
+ void CancelClusterDataWatch(StringView cluster,
90
+ ClusterWatcherInterface* watcher);
91
+
92
+ // Start and cancel endpoint data watch for a cluster.
93
+ // The XdsClient takes ownership of the watcher, but the caller may
94
+ // keep a raw pointer to the watcher, which may be used only for
95
+ // cancellation. (Because the caller does not own the watcher, the
96
+ // pointer must not be used for any other purpose.)
97
+ void WatchEndpointData(StringView cluster,
98
+ UniquePtr<EndpointWatcherInterface> watcher);
99
+ void CancelEndpointDataWatch(StringView cluster,
100
+ EndpointWatcherInterface* watcher);
101
+
102
+ // Adds and removes client stats for cluster.
103
+ void AddClientStats(StringView cluster, XdsClientStats* client_stats);
104
+ void RemoveClientStats(StringView cluster, XdsClientStats* client_stats);
105
+
106
+ // Resets connection backoff state.
107
+ void ResetBackoff();
108
+
109
+ // Helpers for encoding the XdsClient object in channel args.
110
+ grpc_arg MakeChannelArg() const;
111
+ static RefCountedPtr<XdsClient> GetFromChannelArgs(
112
+ const grpc_channel_args& args);
113
+
114
+ private:
115
+ // Contains a channel to the xds server and all the data related to the
116
+ // channel. Holds a ref to the xds client object.
117
+ // TODO(roth): This is separate from the XdsClient object because it was
118
+ // originally designed to be able to swap itself out in case the
119
+ // balancer name changed. Now that the balancer name is going to be
120
+ // coming from the bootstrap file, we don't really need this level of
121
+ // indirection unless we decide to support watching the bootstrap file
122
+ // for changes. At some point, if we decide that we're never going to
123
+ // need to do that, then we can eliminate this class and move its
124
+ // contents directly into the XdsClient class.
125
+ class ChannelState : public InternallyRefCounted<ChannelState> {
126
+ public:
127
+ template <typename T>
128
+ class RetryableCall;
129
+
130
+ class AdsCallState;
131
+ class LrsCallState;
132
+
133
+ ChannelState(RefCountedPtr<XdsClient> xds_client,
134
+ const grpc_channel_args& args);
135
+ ~ChannelState();
136
+
137
+ void Orphan() override;
138
+
139
+ grpc_channel* channel() const { return channel_; }
140
+ XdsClient* xds_client() const { return xds_client_.get(); }
141
+ AdsCallState* ads_calld() const;
142
+ LrsCallState* lrs_calld() const;
143
+
144
+ void MaybeStartAdsCall();
145
+ void StopAdsCall();
146
+
147
+ void MaybeStartLrsCall();
148
+ void StopLrsCall();
149
+
150
+ bool HasActiveAdsCall() const;
151
+
152
+ void StartConnectivityWatchLocked();
153
+ void CancelConnectivityWatchLocked();
154
+
155
+ private:
156
+ class StateWatcher;
157
+
158
+ // The owning xds client.
159
+ RefCountedPtr<XdsClient> xds_client_;
160
+
161
+ // The channel and its status.
162
+ grpc_channel* channel_;
163
+ bool shutting_down_ = false;
164
+ StateWatcher* watcher_ = nullptr;
165
+
166
+ // The retryable XDS calls.
167
+ OrphanablePtr<RetryableCall<AdsCallState>> ads_calld_;
168
+ OrphanablePtr<RetryableCall<LrsCallState>> lrs_calld_;
169
+ };
170
+
171
+ struct ClusterState {
172
+ Map<ClusterWatcherInterface*, UniquePtr<ClusterWatcherInterface>>
173
+ cluster_watchers;
174
+ Map<EndpointWatcherInterface*, UniquePtr<EndpointWatcherInterface>>
175
+ endpoint_watchers;
176
+ Set<XdsClientStats*> client_stats;
177
+ // The latest data seen from EDS.
178
+ EdsUpdate eds_update;
179
+ };
180
+
181
+ // Sends an error notification to all watchers.
182
+ void NotifyOnError(grpc_error* error);
183
+
184
+ // TODO(juanlishen): Once we implement LDS support, this can be a
185
+ // normal method instead of a closure callback.
186
+ static void NotifyOnServiceConfig(void* arg, grpc_error* error);
187
+
188
+ // Channel arg vtable functions.
189
+ static void* ChannelArgCopy(void* p);
190
+ static void ChannelArgDestroy(void* p);
191
+ static int ChannelArgCmp(void* p, void* q);
192
+
193
+ static const grpc_arg_pointer_vtable kXdsClientVtable;
194
+
195
+ UniquePtr<char> build_version_;
196
+
197
+ Combiner* combiner_;
198
+ grpc_pollset_set* interested_parties_;
199
+
200
+ UniquePtr<XdsBootstrap> bootstrap_;
201
+
202
+ UniquePtr<char> server_name_;
203
+ UniquePtr<ServiceConfigWatcherInterface> service_config_watcher_;
204
+ // TODO(juanlishen): Once we implement LDS support, this will no
205
+ // longer be needed.
206
+ grpc_closure service_config_notify_;
207
+
208
+ // The channel for communicating with the xds server.
209
+ OrphanablePtr<ChannelState> chand_;
210
+
211
+ // TODO(roth): When we need support for multiple clusters, replace
212
+ // cluster_state_ with a map keyed by cluster name.
213
+ ClusterState cluster_state_;
214
+ // Map<StringView /*cluster*/, ClusterState, StringLess> clusters_;
215
+
216
+ bool shutting_down_ = false;
217
+ };
218
+
219
+ } // namespace grpc_core
220
+
221
+ #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_H */
@@ -18,7 +18,7 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_client_stats.h"
21
+ #include "src/core/ext/filters/client_channel/xds/xds_client_stats.h"
22
22
 
23
23
  #include <grpc/support/atm.h>
24
24
  #include <grpc/support/string_util.h>
@@ -143,15 +143,11 @@ XdsClientStats::Snapshot XdsClientStats::GetSnapshotAndReset() {
143
143
  }
144
144
  {
145
145
  MutexLock lock(&dropped_requests_mu_);
146
- #if GRPC_USE_CPP_STD_LIB
147
146
  // This is a workaround for the case where some compilers cannot build
148
147
  // move-assignment of map with non-copyable but movable key.
149
148
  // https://stackoverflow.com/questions/36475497
150
149
  std::swap(snapshot.dropped_requests, dropped_requests_);
151
150
  dropped_requests_.clear();
152
- #else
153
- snapshot.dropped_requests = std::move(dropped_requests_);
154
- #endif
155
151
  }
156
152
  return snapshot;
157
153
  }
@@ -16,8 +16,8 @@
16
16
  *
17
17
  */
18
18
 
19
- #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_CLIENT_STATS_H
20
- #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_CLIENT_STATS_H
19
+ #ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_STATS_H
20
+ #define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_STATS_H
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
@@ -226,5 +226,4 @@ class XdsClientStats {
226
226
 
227
227
  } // namespace grpc_core
228
228
 
229
- #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_XDS_XDS_CLIENT_STATS_H \
230
- */
229
+ #endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_XDS_XDS_CLIENT_STATS_H */
@@ -233,14 +233,14 @@ void grpc_deadline_state_client_start_transport_stream_op_batch(
233
233
  //
234
234
 
235
235
  // Constructor for channel_data. Used for both client and server filters.
236
- static grpc_error* init_channel_elem(grpc_channel_element* elem,
237
- grpc_channel_element_args* args) {
236
+ static grpc_error* deadline_init_channel_elem(grpc_channel_element* elem,
237
+ grpc_channel_element_args* args) {
238
238
  GPR_ASSERT(!args->is_last);
239
239
  return GRPC_ERROR_NONE;
240
240
  }
241
241
 
242
242
  // Destructor for channel_data. Used for both client and server filters.
243
- static void destroy_channel_elem(grpc_channel_element* elem) {}
243
+ static void deadline_destroy_channel_elem(grpc_channel_element* elem) {}
244
244
 
245
245
  // Call data used for both client and server filter.
246
246
  typedef struct base_call_data {
@@ -260,24 +260,24 @@ typedef struct server_call_data {
260
260
  } server_call_data;
261
261
 
262
262
  // Constructor for call_data. Used for both client and server filters.
263
- static grpc_error* init_call_elem(grpc_call_element* elem,
264
- const grpc_call_element_args* args) {
263
+ static grpc_error* deadline_init_call_elem(grpc_call_element* elem,
264
+ const grpc_call_element_args* args) {
265
265
  new (elem->call_data) grpc_deadline_state(
266
266
  elem, args->call_stack, args->call_combiner, args->deadline);
267
267
  return GRPC_ERROR_NONE;
268
268
  }
269
269
 
270
270
  // Destructor for call_data. Used for both client and server filters.
271
- static void destroy_call_elem(grpc_call_element* elem,
272
- const grpc_call_final_info* final_info,
273
- grpc_closure* ignored) {
271
+ static void deadline_destroy_call_elem(grpc_call_element* elem,
272
+ const grpc_call_final_info* final_info,
273
+ grpc_closure* ignored) {
274
274
  grpc_deadline_state* deadline_state =
275
275
  static_cast<grpc_deadline_state*>(elem->call_data);
276
276
  deadline_state->~grpc_deadline_state();
277
277
  }
278
278
 
279
279
  // Method for starting a call op for client filter.
280
- static void client_start_transport_stream_op_batch(
280
+ static void deadline_client_start_transport_stream_op_batch(
281
281
  grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
282
282
  grpc_deadline_state_client_start_transport_stream_op_batch(elem, op);
283
283
  // Chain to next filter.
@@ -295,7 +295,7 @@ static void recv_initial_metadata_ready(void* arg, grpc_error* error) {
295
295
  }
296
296
 
297
297
  // Method for starting a call op for server filter.
298
- static void server_start_transport_stream_op_batch(
298
+ static void deadline_server_start_transport_stream_op_batch(
299
299
  grpc_call_element* elem, grpc_transport_stream_op_batch* op) {
300
300
  server_call_data* calld = static_cast<server_call_data*>(elem->call_data);
301
301
  if (op->cancel_stream) {
@@ -329,29 +329,29 @@ static void server_start_transport_stream_op_batch(
329
329
  }
330
330
 
331
331
  const grpc_channel_filter grpc_client_deadline_filter = {
332
- client_start_transport_stream_op_batch,
332
+ deadline_client_start_transport_stream_op_batch,
333
333
  grpc_channel_next_op,
334
334
  sizeof(base_call_data),
335
- init_call_elem,
335
+ deadline_init_call_elem,
336
336
  grpc_call_stack_ignore_set_pollset_or_pollset_set,
337
- destroy_call_elem,
337
+ deadline_destroy_call_elem,
338
338
  0, // sizeof(channel_data)
339
- init_channel_elem,
340
- destroy_channel_elem,
339
+ deadline_init_channel_elem,
340
+ deadline_destroy_channel_elem,
341
341
  grpc_channel_next_get_info,
342
342
  "deadline",
343
343
  };
344
344
 
345
345
  const grpc_channel_filter grpc_server_deadline_filter = {
346
- server_start_transport_stream_op_batch,
346
+ deadline_server_start_transport_stream_op_batch,
347
347
  grpc_channel_next_op,
348
348
  sizeof(server_call_data),
349
- init_call_elem,
349
+ deadline_init_call_elem,
350
350
  grpc_call_stack_ignore_set_pollset_or_pollset_set,
351
- destroy_call_elem,
351
+ deadline_destroy_call_elem,
352
352
  0, // sizeof(channel_data)
353
- init_channel_elem,
354
- destroy_channel_elem,
353
+ deadline_init_channel_elem,
354
+ deadline_destroy_channel_elem,
355
355
  grpc_channel_next_get_info,
356
356
  "deadline",
357
357
  };
@@ -340,11 +340,11 @@ static void remove_if_present(grpc_metadata_batch* batch,
340
340
  }
341
341
  }
342
342
 
343
- static void hc_start_transport_stream_op_batch(
343
+ static void http_client_start_transport_stream_op_batch(
344
344
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
345
345
  call_data* calld = static_cast<call_data*>(elem->call_data);
346
346
  channel_data* channeld = static_cast<channel_data*>(elem->channel_data);
347
- GPR_TIMER_SCOPE("hc_start_transport_stream_op_batch", 0);
347
+ GPR_TIMER_SCOPE("http_client_start_transport_stream_op_batch", 0);
348
348
 
349
349
  if (batch->recv_initial_metadata) {
350
350
  /* substitute our callback for the higher callback */
@@ -465,16 +465,16 @@ done:
465
465
  }
466
466
 
467
467
  /* Constructor for call_data */
468
- static grpc_error* init_call_elem(grpc_call_element* elem,
469
- const grpc_call_element_args* args) {
468
+ static grpc_error* http_client_init_call_elem(
469
+ grpc_call_element* elem, const grpc_call_element_args* args) {
470
470
  new (elem->call_data) call_data(elem, *args);
471
471
  return GRPC_ERROR_NONE;
472
472
  }
473
473
 
474
474
  /* Destructor for call_data */
475
- static void destroy_call_elem(grpc_call_element* elem,
476
- const grpc_call_final_info* final_info,
477
- grpc_closure* ignored) {
475
+ static void http_client_destroy_call_elem(
476
+ grpc_call_element* elem, const grpc_call_final_info* final_info,
477
+ grpc_closure* ignored) {
478
478
  call_data* calld = static_cast<call_data*>(elem->call_data);
479
479
  calld->~call_data();
480
480
  }
@@ -566,8 +566,8 @@ static grpc_core::ManagedMemorySlice user_agent_from_args(
566
566
  }
567
567
 
568
568
  /* Constructor for channel_data */
569
- static grpc_error* init_channel_elem(grpc_channel_element* elem,
570
- grpc_channel_element_args* args) {
569
+ static grpc_error* http_client_init_channel_elem(
570
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
571
571
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
572
572
  GPR_ASSERT(!args->is_last);
573
573
  GPR_ASSERT(args->optional_transport != nullptr);
@@ -582,20 +582,20 @@ static grpc_error* init_channel_elem(grpc_channel_element* elem,
582
582
  }
583
583
 
584
584
  /* Destructor for channel data */
585
- static void destroy_channel_elem(grpc_channel_element* elem) {
585
+ static void http_client_destroy_channel_elem(grpc_channel_element* elem) {
586
586
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
587
587
  GRPC_MDELEM_UNREF(chand->user_agent);
588
588
  }
589
589
 
590
590
  const grpc_channel_filter grpc_http_client_filter = {
591
- hc_start_transport_stream_op_batch,
591
+ http_client_start_transport_stream_op_batch,
592
592
  grpc_channel_next_op,
593
593
  sizeof(call_data),
594
- init_call_elem,
594
+ http_client_init_call_elem,
595
595
  grpc_call_stack_ignore_set_pollset_or_pollset_set,
596
- destroy_call_elem,
596
+ http_client_destroy_call_elem,
597
597
  sizeof(channel_data),
598
- init_channel_elem,
599
- destroy_channel_elem,
598
+ http_client_init_channel_elem,
599
+ http_client_destroy_channel_elem,
600
600
  grpc_channel_next_get_info,
601
601
  "http-client"};
@@ -48,7 +48,7 @@ struct channel_data {
48
48
  grpc_mdelem default_authority_mdelem;
49
49
  };
50
50
 
51
- void authority_start_transport_stream_op_batch(
51
+ void client_authority_start_transport_stream_op_batch(
52
52
  grpc_call_element* elem, grpc_transport_stream_op_batch* batch) {
53
53
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
54
54
  call_data* calld = static_cast<call_data*>(elem->call_data);
@@ -72,21 +72,21 @@ void authority_start_transport_stream_op_batch(
72
72
  }
73
73
 
74
74
  /* Constructor for call_data */
75
- grpc_error* init_call_elem(grpc_call_element* elem,
76
- const grpc_call_element_args* args) {
75
+ grpc_error* client_authority_init_call_elem(
76
+ grpc_call_element* elem, const grpc_call_element_args* args) {
77
77
  call_data* calld = static_cast<call_data*>(elem->call_data);
78
78
  calld->call_combiner = args->call_combiner;
79
79
  return GRPC_ERROR_NONE;
80
80
  }
81
81
 
82
82
  /* Destructor for call_data */
83
- void destroy_call_elem(grpc_call_element* elem,
84
- const grpc_call_final_info* final_info,
85
- grpc_closure* ignored) {}
83
+ void client_authority_destroy_call_elem(grpc_call_element* elem,
84
+ const grpc_call_final_info* final_info,
85
+ grpc_closure* ignored) {}
86
86
 
87
87
  /* Constructor for channel_data */
88
- grpc_error* init_channel_elem(grpc_channel_element* elem,
89
- grpc_channel_element_args* args) {
88
+ grpc_error* client_authority_init_channel_elem(
89
+ grpc_channel_element* elem, grpc_channel_element_args* args) {
90
90
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
91
91
  const grpc_arg* default_authority_arg =
92
92
  grpc_channel_args_find(args->channel_args, GRPC_ARG_DEFAULT_AUTHORITY);
@@ -110,7 +110,7 @@ grpc_error* init_channel_elem(grpc_channel_element* elem,
110
110
  }
111
111
 
112
112
  /* Destructor for channel data */
113
- void destroy_channel_elem(grpc_channel_element* elem) {
113
+ void client_authority_destroy_channel_elem(grpc_channel_element* elem) {
114
114
  channel_data* chand = static_cast<channel_data*>(elem->channel_data);
115
115
  grpc_slice_unref_internal(chand->default_authority);
116
116
  GRPC_MDELEM_UNREF(chand->default_authority_mdelem);
@@ -118,15 +118,15 @@ void destroy_channel_elem(grpc_channel_element* elem) {
118
118
  } // namespace
119
119
 
120
120
  const grpc_channel_filter grpc_client_authority_filter = {
121
- authority_start_transport_stream_op_batch,
121
+ client_authority_start_transport_stream_op_batch,
122
122
  grpc_channel_next_op,
123
123
  sizeof(call_data),
124
- init_call_elem,
124
+ client_authority_init_call_elem,
125
125
  grpc_call_stack_ignore_set_pollset_or_pollset_set,
126
- destroy_call_elem,
126
+ client_authority_destroy_call_elem,
127
127
  sizeof(channel_data),
128
- init_channel_elem,
129
- destroy_channel_elem,
128
+ client_authority_init_channel_elem,
129
+ client_authority_destroy_channel_elem,
130
130
  grpc_channel_next_get_info,
131
131
  "authority"};
132
132