grpc 1.24.0 → 1.25.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.
- checksums.yaml +4 -4
- data/Makefile +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +72 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- 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/
|
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
|
20
|
-
#define
|
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 /*
|
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*
|
237
|
-
|
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
|
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*
|
264
|
-
|
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
|
272
|
-
|
273
|
-
|
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
|
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
|
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
|
-
|
332
|
+
deadline_client_start_transport_stream_op_batch,
|
333
333
|
grpc_channel_next_op,
|
334
334
|
sizeof(base_call_data),
|
335
|
-
|
335
|
+
deadline_init_call_elem,
|
336
336
|
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
337
|
-
|
337
|
+
deadline_destroy_call_elem,
|
338
338
|
0, // sizeof(channel_data)
|
339
|
-
|
340
|
-
|
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
|
-
|
346
|
+
deadline_server_start_transport_stream_op_batch,
|
347
347
|
grpc_channel_next_op,
|
348
348
|
sizeof(server_call_data),
|
349
|
-
|
349
|
+
deadline_init_call_elem,
|
350
350
|
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
351
|
-
|
351
|
+
deadline_destroy_call_elem,
|
352
352
|
0, // sizeof(channel_data)
|
353
|
-
|
354
|
-
|
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
|
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("
|
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*
|
469
|
-
|
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
|
476
|
-
|
477
|
-
|
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*
|
570
|
-
|
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
|
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
|
-
|
591
|
+
http_client_start_transport_stream_op_batch,
|
592
592
|
grpc_channel_next_op,
|
593
593
|
sizeof(call_data),
|
594
|
-
|
594
|
+
http_client_init_call_elem,
|
595
595
|
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
596
|
-
|
596
|
+
http_client_destroy_call_elem,
|
597
597
|
sizeof(channel_data),
|
598
|
-
|
599
|
-
|
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
|
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*
|
76
|
-
|
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
|
84
|
-
|
85
|
-
|
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*
|
89
|
-
|
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
|
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
|
-
|
121
|
+
client_authority_start_transport_stream_op_batch,
|
122
122
|
grpc_channel_next_op,
|
123
123
|
sizeof(call_data),
|
124
|
-
|
124
|
+
client_authority_init_call_elem,
|
125
125
|
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
126
|
-
|
126
|
+
client_authority_destroy_call_elem,
|
127
127
|
sizeof(channel_data),
|
128
|
-
|
129
|
-
|
128
|
+
client_authority_init_channel_elem,
|
129
|
+
client_authority_destroy_channel_elem,
|
130
130
|
grpc_channel_next_get_info,
|
131
131
|
"authority"};
|
132
132
|
|