grpc 1.31.1 → 1.32.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.
- checksums.yaml +4 -4
- data/Makefile +595 -15723
- data/include/grpc/grpc_security.h +31 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/port_platform.h +6 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +64 -20
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +20 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +20 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +54 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +363 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +5 -4
- data/src/core/ext/filters/client_channel/server_address.cc +40 -7
- data/src/core/ext/filters/client_channel/server_address.h +42 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
- data/src/core/ext/filters/client_channel/subchannel.h +16 -4
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +239 -277
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +1 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.cc +1045 -767
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +114 -99
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +85 -417
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +3 -3
- data/src/core/lib/channel/channelz.cc +14 -15
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/channelz_registry.cc +3 -1
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/iomgr.cc +0 -10
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
- data/src/core/lib/iomgr/tcp_custom.cc +32 -16
- data/src/core/lib/iomgr/tcp_posix.cc +31 -13
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -2
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/surface/call.cc +12 -12
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +28 -20
- data/src/core/lib/surface/channel.h +12 -2
- data/src/core/lib/surface/completion_queue.cc +10 -272
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/server.cc +1066 -1244
- data/src/core/lib/surface/server.h +363 -87
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +18 -6
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/transport.h +7 -0
- data/src/core/lib/uri/uri_parser.cc +23 -21
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +3 -9
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/boringssl-with-bazel/err_data.c +263 -257
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +39 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +11 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/encode.c +2 -2
- data/third_party/upb/upb/msg.h +2 -2
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/upb.c +16 -14
- data/third_party/upb/upb/upb.h +26 -0
- data/third_party/upb/upb/upb.hpp +2 -0
- metadata +257 -155
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_API_H
|
20
|
+
#define GRPC_CORE_EXT_XDS_XDS_API_H
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
@@ -27,13 +27,13 @@
|
|
27
27
|
|
28
28
|
#include "absl/container/inlined_vector.h"
|
29
29
|
#include "absl/types/optional.h"
|
30
|
+
#include "re2/re2.h"
|
30
31
|
|
31
32
|
#include <grpc/slice_buffer.h>
|
32
33
|
|
33
|
-
#include "re2/re2.h"
|
34
34
|
#include "src/core/ext/filters/client_channel/server_address.h"
|
35
|
-
#include "src/core/ext/
|
36
|
-
#include "src/core/ext/
|
35
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
36
|
+
#include "src/core/ext/xds/xds_client_stats.h"
|
37
37
|
|
38
38
|
namespace grpc_core {
|
39
39
|
|
@@ -46,101 +46,109 @@ class XdsApi {
|
|
46
46
|
static const char* kCdsTypeUrl;
|
47
47
|
static const char* kEdsTypeUrl;
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
struct
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
REGEX, // regex stored in regex_matcher field
|
60
|
-
};
|
61
|
-
PathMatcherType type;
|
62
|
-
std::string string_matcher;
|
63
|
-
std::unique_ptr<RE2> regex_matcher;
|
64
|
-
bool operator==(const PathMatcher& other) const {
|
65
|
-
if (type != other.type) return false;
|
66
|
-
if (type == PathMatcherType::REGEX) {
|
67
|
-
// Should never be null.
|
68
|
-
if (regex_matcher == nullptr || other.regex_matcher == nullptr) {
|
69
|
-
return false;
|
70
|
-
}
|
71
|
-
return regex_matcher->pattern() == other.regex_matcher->pattern();
|
72
|
-
}
|
73
|
-
return string_matcher == other.string_matcher;
|
74
|
-
}
|
75
|
-
std::string ToString() const;
|
49
|
+
// TODO(donnadionne): When we can use absl::variant<>, consider using that
|
50
|
+
// for: PathMatcher, HeaderMatcher, cluster_name and weighted_clusters
|
51
|
+
struct Route {
|
52
|
+
// Matchers for this route.
|
53
|
+
struct Matchers {
|
54
|
+
struct PathMatcher {
|
55
|
+
enum class PathMatcherType {
|
56
|
+
PATH, // path stored in string_matcher field
|
57
|
+
PREFIX, // prefix stored in string_matcher field
|
58
|
+
REGEX, // regex stored in regex_matcher field
|
76
59
|
};
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
};
|
86
|
-
std::string name;
|
87
|
-
HeaderMatcherType type;
|
88
|
-
int64_t range_start;
|
89
|
-
int64_t range_end;
|
90
|
-
std::string string_matcher;
|
91
|
-
std::unique_ptr<RE2> regex_match;
|
92
|
-
bool present_match;
|
93
|
-
// invert_match field may or may not exisit, so initialize it to
|
94
|
-
// false.
|
95
|
-
bool invert_match = false;
|
96
|
-
bool operator==(const HeaderMatcher& other) const {
|
97
|
-
return (name == other.name && type == other.type &&
|
98
|
-
range_start == other.range_start &&
|
99
|
-
range_end == other.range_end &&
|
100
|
-
string_matcher == other.string_matcher &&
|
101
|
-
present_match == other.present_match &&
|
102
|
-
invert_match == other.invert_match);
|
103
|
-
}
|
104
|
-
std::string ToString() const;
|
105
|
-
};
|
106
|
-
PathMatcher path_matcher;
|
107
|
-
std::vector<HeaderMatcher> header_matchers;
|
108
|
-
absl::optional<uint32_t> fraction_per_million;
|
109
|
-
bool operator==(const Matchers& other) const {
|
110
|
-
return (path_matcher == other.path_matcher &&
|
111
|
-
header_matchers == other.header_matchers &&
|
112
|
-
fraction_per_million == other.fraction_per_million);
|
113
|
-
}
|
60
|
+
PathMatcherType type;
|
61
|
+
std::string string_matcher;
|
62
|
+
std::unique_ptr<RE2> regex_matcher;
|
63
|
+
|
64
|
+
PathMatcher() = default;
|
65
|
+
PathMatcher(const PathMatcher& other);
|
66
|
+
PathMatcher& operator=(const PathMatcher& other);
|
67
|
+
bool operator==(const PathMatcher& other) const;
|
114
68
|
std::string ToString() const;
|
115
69
|
};
|
116
|
-
Matchers matchers;
|
117
|
-
// Action for this route.
|
118
|
-
std::string cluster_name;
|
119
|
-
struct ClusterWeight {
|
120
|
-
std::string name;
|
121
|
-
uint32_t weight;
|
122
70
|
|
123
|
-
|
124
|
-
|
125
|
-
|
71
|
+
struct HeaderMatcher {
|
72
|
+
enum class HeaderMatcherType {
|
73
|
+
EXACT, // value stored in string_matcher field
|
74
|
+
REGEX, // uses regex_match field
|
75
|
+
RANGE, // uses range_start and range_end fields
|
76
|
+
PRESENT, // uses present_match field
|
77
|
+
PREFIX, // prefix stored in string_matcher field
|
78
|
+
SUFFIX, // suffix stored in string_matcher field
|
79
|
+
};
|
80
|
+
std::string name;
|
81
|
+
HeaderMatcherType type;
|
82
|
+
int64_t range_start;
|
83
|
+
int64_t range_end;
|
84
|
+
std::string string_matcher;
|
85
|
+
std::unique_ptr<RE2> regex_match;
|
86
|
+
bool present_match;
|
87
|
+
// invert_match field may or may not exisit, so initialize it to
|
88
|
+
// false.
|
89
|
+
bool invert_match = false;
|
90
|
+
|
91
|
+
HeaderMatcher() = default;
|
92
|
+
HeaderMatcher(const HeaderMatcher& other);
|
93
|
+
HeaderMatcher& operator=(const HeaderMatcher& other);
|
94
|
+
bool operator==(const HeaderMatcher& other) const;
|
126
95
|
std::string ToString() const;
|
127
96
|
};
|
128
|
-
std::vector<ClusterWeight> weighted_clusters;
|
129
97
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
98
|
+
PathMatcher path_matcher;
|
99
|
+
std::vector<HeaderMatcher> header_matchers;
|
100
|
+
absl::optional<uint32_t> fraction_per_million;
|
101
|
+
|
102
|
+
bool operator==(const Matchers& other) const {
|
103
|
+
return (path_matcher == other.path_matcher &&
|
104
|
+
header_matchers == other.header_matchers &&
|
105
|
+
fraction_per_million == other.fraction_per_million);
|
134
106
|
}
|
135
107
|
std::string ToString() const;
|
136
108
|
};
|
137
109
|
|
138
|
-
|
110
|
+
Matchers matchers;
|
111
|
+
|
112
|
+
// Action for this route.
|
113
|
+
// TODO(roth): When we can use absl::variant<>, consider using that
|
114
|
+
// here, to enforce the fact that only one of the two fields can be set.
|
115
|
+
std::string cluster_name;
|
116
|
+
struct ClusterWeight {
|
117
|
+
std::string name;
|
118
|
+
uint32_t weight;
|
119
|
+
bool operator==(const ClusterWeight& other) const {
|
120
|
+
return (name == other.name && weight == other.weight);
|
121
|
+
}
|
122
|
+
std::string ToString() const;
|
123
|
+
};
|
124
|
+
std::vector<ClusterWeight> weighted_clusters;
|
125
|
+
|
126
|
+
bool operator==(const Route& other) const {
|
127
|
+
return (matchers == other.matchers &&
|
128
|
+
cluster_name == other.cluster_name &&
|
129
|
+
weighted_clusters == other.weighted_clusters);
|
130
|
+
}
|
131
|
+
std::string ToString() const;
|
132
|
+
};
|
133
|
+
|
134
|
+
struct RdsUpdate {
|
135
|
+
struct VirtualHost {
|
136
|
+
std::vector<std::string> domains;
|
137
|
+
std::vector<Route> routes;
|
138
|
+
|
139
|
+
bool operator==(const VirtualHost& other) const {
|
140
|
+
return domains == other.domains && routes == other.routes;
|
141
|
+
}
|
142
|
+
};
|
143
|
+
|
144
|
+
std::vector<VirtualHost> virtual_hosts;
|
139
145
|
|
140
146
|
bool operator==(const RdsUpdate& other) const {
|
141
|
-
return
|
147
|
+
return virtual_hosts == other.virtual_hosts;
|
142
148
|
}
|
143
149
|
std::string ToString() const;
|
150
|
+
const VirtualHost* FindVirtualHostForDomain(
|
151
|
+
const std::string& domain) const;
|
144
152
|
};
|
145
153
|
|
146
154
|
// TODO(roth): When we can use absl::variant<>, consider using that
|
@@ -148,8 +156,8 @@ class XdsApi {
|
|
148
156
|
struct LdsUpdate {
|
149
157
|
// The name to use in the RDS request.
|
150
158
|
std::string route_config_name;
|
151
|
-
// The
|
152
|
-
// inlined.
|
159
|
+
// The RouteConfiguration to use for this listener.
|
160
|
+
// Present only if it is inlined in the LDS response.
|
153
161
|
absl::optional<RdsUpdate> rds_update;
|
154
162
|
|
155
163
|
bool operator==(const LdsUpdate& other) const {
|
@@ -294,7 +302,7 @@ class XdsApi {
|
|
294
302
|
std::pair<std::string /*cluster_name*/, std::string /*eds_service_name*/>,
|
295
303
|
ClusterLoadReport>;
|
296
304
|
|
297
|
-
XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap
|
305
|
+
XdsApi(XdsClient* client, TraceFlag* tracer, const XdsBootstrap* bootstrap);
|
298
306
|
|
299
307
|
// Creates an ADS request.
|
300
308
|
// Takes ownership of \a error.
|
@@ -304,19 +312,25 @@ class XdsApi {
|
|
304
312
|
const std::string& nonce, grpc_error* error,
|
305
313
|
bool populate_node);
|
306
314
|
|
307
|
-
// Parses
|
308
|
-
//
|
309
|
-
//
|
310
|
-
|
315
|
+
// Parses an ADS response.
|
316
|
+
// If the response can't be parsed at the top level, the resulting
|
317
|
+
// type_url will be empty.
|
318
|
+
struct AdsParseResult {
|
319
|
+
grpc_error* parse_error = GRPC_ERROR_NONE;
|
320
|
+
std::string version;
|
321
|
+
std::string nonce;
|
322
|
+
std::string type_url;
|
323
|
+
absl::optional<LdsUpdate> lds_update;
|
324
|
+
absl::optional<RdsUpdate> rds_update;
|
325
|
+
CdsUpdateMap cds_update_map;
|
326
|
+
EdsUpdateMap eds_update_map;
|
327
|
+
};
|
328
|
+
AdsParseResult ParseAdsResponse(
|
311
329
|
const grpc_slice& encoded_response,
|
312
330
|
const std::string& expected_server_name,
|
313
331
|
const std::set<absl::string_view>& expected_route_configuration_names,
|
314
332
|
const std::set<absl::string_view>& expected_cluster_names,
|
315
|
-
const std::set<absl::string_view>& expected_eds_service_names
|
316
|
-
absl::optional<LdsUpdate>* lds_update,
|
317
|
-
absl::optional<RdsUpdate>* rds_update, CdsUpdateMap* cds_update_map,
|
318
|
-
EdsUpdateMap* eds_update_map, std::string* version, std::string* nonce,
|
319
|
-
std::string* type_url);
|
333
|
+
const std::set<absl::string_view>& expected_eds_service_names);
|
320
334
|
|
321
335
|
// Creates an LRS request querying \a server_name.
|
322
336
|
grpc_slice CreateLrsInitialRequest(const std::string& server_name);
|
@@ -335,11 +349,12 @@ class XdsApi {
|
|
335
349
|
private:
|
336
350
|
XdsClient* client_;
|
337
351
|
TraceFlag* tracer_;
|
338
|
-
const
|
352
|
+
const bool use_v3_;
|
353
|
+
const XdsBootstrap* bootstrap_; // Do not own.
|
339
354
|
const std::string build_version_;
|
340
355
|
const std::string user_agent_name_;
|
341
356
|
};
|
342
357
|
|
343
358
|
} // namespace grpc_core
|
344
359
|
|
345
|
-
#endif /*
|
360
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_API_H */
|
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
#include <grpc/support/port_platform.h>
|
18
18
|
|
19
|
-
#include "src/core/ext/
|
19
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
20
20
|
|
21
21
|
#include <vector>
|
22
22
|
|
@@ -35,6 +35,10 @@
|
|
35
35
|
|
36
36
|
namespace grpc_core {
|
37
37
|
|
38
|
+
bool XdsBootstrap::XdsServer::ShouldUseV3() const {
|
39
|
+
return server_features.find("xds_v3") != server_features.end();
|
40
|
+
}
|
41
|
+
|
38
42
|
namespace {
|
39
43
|
|
40
44
|
std::string BootstrapString(const XdsBootstrap& bootstrap) {
|
@@ -65,7 +69,13 @@ std::string BootstrapString(const XdsBootstrap& bootstrap) {
|
|
65
69
|
parts.push_back(absl::StrFormat(" {type=\"%s\", config=%s},\n",
|
66
70
|
creds.type, creds.config.Dump()));
|
67
71
|
}
|
68
|
-
parts.push_back(" ]
|
72
|
+
parts.push_back(" ],\n");
|
73
|
+
if (!bootstrap.server().server_features.empty()) {
|
74
|
+
parts.push_back(absl::StrCat(
|
75
|
+
" server_features=[",
|
76
|
+
absl::StrJoin(bootstrap.server().server_features, ", "), "],\n"));
|
77
|
+
}
|
78
|
+
parts.push_back(" }\n]");
|
69
79
|
return absl::StrJoin(parts, "");
|
70
80
|
}
|
71
81
|
|
@@ -186,6 +196,16 @@ grpc_error* XdsBootstrap::ParseXdsServer(Json* json, size_t idx) {
|
|
186
196
|
if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
|
187
197
|
}
|
188
198
|
}
|
199
|
+
it = json->mutable_object()->find("server_features");
|
200
|
+
if (it != json->mutable_object()->end()) {
|
201
|
+
if (it->second.type() != Json::Type::ARRAY) {
|
202
|
+
error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
|
203
|
+
"\"server_features\" field is not an array"));
|
204
|
+
} else {
|
205
|
+
grpc_error* parse_error = ParseServerFeaturesArray(&it->second, &server);
|
206
|
+
if (parse_error != GRPC_ERROR_NONE) error_list.push_back(parse_error);
|
207
|
+
}
|
208
|
+
}
|
189
209
|
// Can't use GRPC_ERROR_CREATE_FROM_VECTOR() here, because the error
|
190
210
|
// string is not static in this case.
|
191
211
|
if (error_list.empty()) return GRPC_ERROR_NONE;
|
@@ -251,6 +271,28 @@ grpc_error* XdsBootstrap::ParseChannelCreds(Json* json, size_t idx,
|
|
251
271
|
return error;
|
252
272
|
}
|
253
273
|
|
274
|
+
grpc_error* XdsBootstrap::ParseServerFeaturesArray(Json* json,
|
275
|
+
XdsServer* server) {
|
276
|
+
std::vector<grpc_error*> error_list;
|
277
|
+
for (size_t i = 0; i < json->mutable_array()->size(); ++i) {
|
278
|
+
Json& child = json->mutable_array()->at(i);
|
279
|
+
if (child.type() == Json::Type::STRING &&
|
280
|
+
child.string_value() == "xds_v3") {
|
281
|
+
// TODO(roth): Remove env var check once we do interop testing and
|
282
|
+
// are sure that the v3 code actually works.
|
283
|
+
grpc_core::UniquePtr<char> enable_str(
|
284
|
+
gpr_getenv("GRPC_XDS_EXPERIMENTAL_V3_SUPPORT"));
|
285
|
+
bool enabled = false;
|
286
|
+
if (gpr_parse_bool_value(enable_str.get(), &enabled) && enabled) {
|
287
|
+
server->server_features.insert(
|
288
|
+
std::move(*child.mutable_string_value()));
|
289
|
+
}
|
290
|
+
}
|
291
|
+
}
|
292
|
+
return GRPC_ERROR_CREATE_FROM_VECTOR(
|
293
|
+
"errors parsing \"server_features\" array", &error_list);
|
294
|
+
}
|
295
|
+
|
254
296
|
grpc_error* XdsBootstrap::ParseNode(Json* json) {
|
255
297
|
std::vector<grpc_error*> error_list;
|
256
298
|
node_ = absl::make_unique<Node>();
|
@@ -14,12 +14,13 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_H
|
19
19
|
|
20
20
|
#include <grpc/support/port_platform.h>
|
21
21
|
|
22
22
|
#include <memory>
|
23
|
+
#include <set>
|
23
24
|
#include <string>
|
24
25
|
#include <vector>
|
25
26
|
|
@@ -55,6 +56,9 @@ class XdsBootstrap {
|
|
55
56
|
struct XdsServer {
|
56
57
|
std::string server_uri;
|
57
58
|
absl::InlinedVector<ChannelCreds, 1> channel_creds;
|
59
|
+
std::set<std::string> server_features;
|
60
|
+
|
61
|
+
bool ShouldUseV3() const;
|
58
62
|
};
|
59
63
|
|
60
64
|
// If *error is not GRPC_ERROR_NONE after returning, then there was an
|
@@ -76,6 +80,7 @@ class XdsBootstrap {
|
|
76
80
|
grpc_error* ParseXdsServer(Json* json, size_t idx);
|
77
81
|
grpc_error* ParseChannelCredsArray(Json* json, XdsServer* server);
|
78
82
|
grpc_error* ParseChannelCreds(Json* json, size_t idx, XdsServer* server);
|
83
|
+
grpc_error* ParseServerFeaturesArray(Json* json, XdsServer* server);
|
79
84
|
grpc_error* ParseNode(Json* json);
|
80
85
|
grpc_error* ParseLocality(Json* json);
|
81
86
|
|
@@ -85,4 +90,4 @@ class XdsBootstrap {
|
|
85
90
|
|
86
91
|
} // namespace grpc_core
|
87
92
|
|
88
|
-
#endif /*
|
93
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_BOOTSTRAP_H */
|
@@ -16,14 +16,14 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_CHANNEL_H
|
20
|
+
#define GRPC_CORE_EXT_XDS_XDS_CHANNEL_H
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#include <grpc/impl/codegen/grpc_types.h>
|
25
25
|
|
26
|
-
#include "src/core/ext/
|
26
|
+
#include "src/core/ext/xds/xds_bootstrap.h"
|
27
27
|
#include "src/core/lib/iomgr/error.h"
|
28
28
|
|
29
29
|
namespace grpc_core {
|
@@ -42,5 +42,5 @@ grpc_channel* CreateXdsChannel(const XdsBootstrap& bootstrap,
|
|
42
42
|
|
43
43
|
} // namespace grpc_core
|
44
44
|
|
45
|
-
#endif /*
|
45
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_CHANNEL_H \
|
46
46
|
*/
|
@@ -14,8 +14,8 @@
|
|
14
14
|
// limitations under the License.
|
15
15
|
//
|
16
16
|
|
17
|
-
#ifndef
|
18
|
-
#define
|
17
|
+
#ifndef GRPC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H
|
18
|
+
#define GRPC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H
|
19
19
|
|
20
20
|
// Boolean channel arg indicating whether the target is an xds server.
|
21
21
|
#define GRPC_ARG_ADDRESS_IS_XDS_SERVER "grpc.address_is_xds_server"
|
@@ -23,4 +23,4 @@
|
|
23
23
|
// Pointer channel arg containing a ref to the XdsClient object.
|
24
24
|
#define GRPC_ARG_XDS_CLIENT "grpc.xds_client"
|
25
25
|
|
26
|
-
#endif /*
|
26
|
+
#endif /* GRPC_CORE_EXT_XDS_XDS_CHANNEL_ARGS_H */
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
#include <grpc/support/port_platform.h>
|
20
20
|
|
21
|
-
#include "src/core/ext/
|
21
|
+
#include "src/core/ext/xds/xds_channel.h"
|
22
22
|
|
23
23
|
#include <string.h>
|
24
24
|
|
@@ -28,14 +28,11 @@
|
|
28
28
|
#include <grpc/support/alloc.h>
|
29
29
|
#include <grpc/support/string_util.h>
|
30
30
|
|
31
|
-
#include "src/core/ext/filters/client_channel/client_channel.h"
|
32
|
-
#include "src/core/ext/filters/client_channel/server_address.h"
|
33
31
|
#include "src/core/lib/channel/channel_args.h"
|
34
32
|
#include "src/core/lib/gpr/string.h"
|
35
33
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
36
34
|
#include "src/core/lib/security/credentials/credentials.h"
|
37
35
|
#include "src/core/lib/security/credentials/fake/fake_credentials.h"
|
38
|
-
#include "src/core/lib/security/transport/target_authority_table.h"
|
39
36
|
#include "src/core/lib/slice/slice_internal.h"
|
40
37
|
|
41
38
|
namespace grpc_core {
|
@@ -73,7 +70,7 @@ grpc_channel* CreateXdsChannel(const XdsBootstrap& bootstrap,
|
|
73
70
|
if (!bootstrap.server().channel_creds.empty()) {
|
74
71
|
for (size_t i = 0; i < bootstrap.server().channel_creds.size(); ++i) {
|
75
72
|
if (bootstrap.server().channel_creds[i].type == "google_default") {
|
76
|
-
creds = grpc_google_default_credentials_create();
|
73
|
+
creds = grpc_google_default_credentials_create(nullptr);
|
77
74
|
break;
|
78
75
|
} else if (bootstrap.server().channel_creds[i].type == "fake") {
|
79
76
|
creds = grpc_fake_transport_security_credentials_create();
|