grpc 1.31.0.pre1 → 1.33.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 +693 -16022
- data/include/grpc/grpc.h +0 -5
- data/include/grpc/grpc_security.h +47 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/grpc_types.h +0 -5
- 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 +264 -186
- 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/config_selector.cc +0 -4
- data/src/core/ext/filters/client_channel/config_selector.h +34 -5
- 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 +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +48 -35
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +9 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +126 -119
- 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 +21 -15
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +32 -13
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -7
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -32
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +26 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +207 -129
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +453 -255
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +571 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +727 -0
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +8 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
- 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 +602 -58
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +28 -0
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +8 -39
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +4 -3
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +49 -47
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -9
- data/src/core/ext/filters/client_channel/server_address.cc +120 -7
- data/src/core/ext/filters/client_channel/server_address.h +48 -21
- data/src/core/ext/filters/client_channel/service_config.cc +16 -13
- data/src/core/ext/filters/client_channel/service_config.h +7 -4
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
- data/src/core/ext/filters/client_channel/service_config_parser.cc +8 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +8 -5
- 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/client_channel/subchannel_interface.h +44 -0
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.cc +2 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +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 +256 -287
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +11 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +10 -0
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +10 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +17 -30
- 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 +244 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +766 -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 +458 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1635 -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 +124 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +379 -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 +310 -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 +103 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +351 -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/extension.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +241 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +752 -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 +176 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +645 -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/core/v3/substitution_format_string.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +85 -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 +128 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +467 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +155 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +539 -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 +178 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +616 -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 +900 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +3290 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +60 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +139 -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 +364 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1336 -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 +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +387 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +76 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +214 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +147 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +570 -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 +139 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +449 -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 +54 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +133 -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/checked.upb.c +242 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +753 -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/security.upb.c +31 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -0
- 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/udpa/core/v1/authority.upb.c +28 -0
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +53 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +129 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +77 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +85 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +160 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +84 -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/xds/certificate_provider_factory.h +59 -0
- data/src/core/ext/xds/certificate_provider_registry.cc +103 -0
- data/src/core/ext/xds/certificate_provider_registry.h +57 -0
- data/src/core/ext/xds/certificate_provider_store.h +50 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +377 -0
- data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +102 -0
- data/src/core/ext/xds/xds_api.cc +2596 -0
- data/src/core/ext/xds/xds_api.h +397 -0
- 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_args.h +9 -6
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +541 -785
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +114 -93
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +20 -14
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +36 -8
- data/src/core/lib/channel/channel_args.h +0 -1
- data/src/core/lib/channel/channelz.cc +24 -60
- data/src/core/lib/channel/channelz.h +12 -20
- data/src/core/lib/channel/channelz_registry.cc +15 -12
- data/src/core/lib/channel/channelz_registry.h +3 -0
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/gpr/time_precise.cc +2 -0
- data/src/core/lib/gpr/time_precise.h +6 -2
- data/src/core/lib/gprpp/dual_ref_counted.h +336 -0
- data/src/core/lib/gprpp/ref_counted.h +51 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +153 -0
- 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 +36 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/exec_ctx.h +10 -8
- 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/json/json_util.cc +58 -0
- data/src/core/lib/json/json_util.h +37 -0
- 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/certificate_provider.h +60 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +321 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +214 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +45 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +51 -0
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -12
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -0
- 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 +37 -51
- data/src/core/lib/surface/channel.h +18 -3
- 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 +27 -12
- 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/bdp_estimator.h +2 -1
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +20 -8
- 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/metadata.cc +11 -1
- 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/plugin_registry/grpc_plugin_registry.cc +35 -20
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +2 -2
- data/src/ruby/bin/math_services_pb.rb +4 -4
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +7 -7
- data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
- data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
- data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
- data/src/ruby/spec/user_agent_spec.rb +74 -0
- 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 +475 -467
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +0 -6
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +9 -43
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +55 -4
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +34 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +30 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -15
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +543 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +237 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +44 -2
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +221 -49
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +64 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +7 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +21 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +24 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +67 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +29 -35
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +13 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +28 -40
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +7 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +55 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +12 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +4 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +48 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +26 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +199 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +52 -43
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +18 -18
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +13 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +8 -9
- 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_both.cc +1 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +4 -8
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +7 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/re2/re2/bitmap256.h +117 -0
- data/third_party/re2/re2/bitstate.cc +385 -0
- data/third_party/re2/re2/compile.cc +1279 -0
- data/third_party/re2/re2/dfa.cc +2130 -0
- data/third_party/re2/re2/filtered_re2.cc +121 -0
- data/third_party/re2/re2/filtered_re2.h +109 -0
- data/third_party/re2/re2/mimics_pcre.cc +197 -0
- data/third_party/re2/re2/nfa.cc +713 -0
- data/third_party/re2/re2/onepass.cc +623 -0
- data/third_party/re2/re2/parse.cc +2464 -0
- data/third_party/re2/re2/perl_groups.cc +119 -0
- data/third_party/re2/re2/pod_array.h +55 -0
- data/third_party/re2/re2/prefilter.cc +710 -0
- data/third_party/re2/re2/prefilter.h +108 -0
- data/third_party/re2/re2/prefilter_tree.cc +407 -0
- data/third_party/re2/re2/prefilter_tree.h +139 -0
- data/third_party/re2/re2/prog.cc +988 -0
- data/third_party/re2/re2/prog.h +436 -0
- data/third_party/re2/re2/re2.cc +1362 -0
- data/third_party/re2/re2/re2.h +1002 -0
- data/third_party/re2/re2/regexp.cc +980 -0
- data/third_party/re2/re2/regexp.h +659 -0
- data/third_party/re2/re2/set.cc +154 -0
- data/third_party/re2/re2/set.h +80 -0
- data/third_party/re2/re2/simplify.cc +657 -0
- data/third_party/re2/re2/sparse_array.h +392 -0
- data/third_party/re2/re2/sparse_set.h +264 -0
- data/third_party/re2/re2/stringpiece.cc +65 -0
- data/third_party/re2/re2/stringpiece.h +210 -0
- data/third_party/re2/re2/tostring.cc +351 -0
- data/third_party/re2/re2/unicode_casefold.cc +582 -0
- data/third_party/re2/re2/unicode_casefold.h +78 -0
- data/third_party/re2/re2/unicode_groups.cc +6269 -0
- data/third_party/re2/re2/unicode_groups.h +67 -0
- data/third_party/re2/re2/walker-inl.h +246 -0
- data/third_party/re2/util/benchmark.h +156 -0
- data/third_party/re2/util/flags.h +26 -0
- data/third_party/re2/util/logging.h +109 -0
- data/third_party/re2/util/malloc_counter.h +19 -0
- data/third_party/re2/util/mix.h +41 -0
- data/third_party/re2/util/mutex.h +148 -0
- data/third_party/re2/util/pcre.cc +1025 -0
- data/third_party/re2/util/pcre.h +681 -0
- data/third_party/re2/util/rune.cc +260 -0
- data/third_party/re2/util/strutil.cc +149 -0
- data/third_party/re2/util/strutil.h +21 -0
- data/third_party/re2/util/test.h +50 -0
- data/third_party/re2/util/utf.h +44 -0
- data/third_party/re2/util/util.h +42 -0
- 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 +340 -153
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +0 -528
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +0 -1142
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -2110
- data/src/core/ext/filters/client_channel/xds/xds_api.h +0 -345
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +0 -46
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +0 -106
- 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/ext/upb-generated/gogoproto/gogo.upb.c +0 -17
- data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -29
- 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
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pku.c +0 -110
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_sxnet.c +0 -274
@@ -21,6 +21,9 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <map>
|
25
|
+
#include <memory>
|
26
|
+
|
24
27
|
#include "absl/container/inlined_vector.h"
|
25
28
|
|
26
29
|
#include "src/core/lib/channel/channel_args.h"
|
@@ -37,35 +40,45 @@ namespace grpc_core {
|
|
37
40
|
// args when a subchannel is created for this address.
|
38
41
|
class ServerAddress {
|
39
42
|
public:
|
43
|
+
// Base class for resolver-supplied attributes.
|
44
|
+
// Unlike channel args, these attributes don't affect subchannel
|
45
|
+
// uniqueness or behavior. They are for use by LB policies only.
|
46
|
+
//
|
47
|
+
// Attributes are keyed by a C string that is unique by address, not
|
48
|
+
// by value. All attributes added with the same key must be of the
|
49
|
+
// same type.
|
50
|
+
class AttributeInterface {
|
51
|
+
public:
|
52
|
+
virtual ~AttributeInterface() = default;
|
53
|
+
|
54
|
+
// Creates a copy of the attribute.
|
55
|
+
virtual std::unique_ptr<AttributeInterface> Copy() const = 0;
|
56
|
+
|
57
|
+
// Compares this attribute with another.
|
58
|
+
virtual int Cmp(const AttributeInterface* other) const = 0;
|
59
|
+
|
60
|
+
// Returns a human-readable representation of the attribute.
|
61
|
+
virtual std::string ToString() const = 0;
|
62
|
+
};
|
63
|
+
|
40
64
|
// Takes ownership of args.
|
41
|
-
ServerAddress(const grpc_resolved_address& address, grpc_channel_args* args
|
65
|
+
ServerAddress(const grpc_resolved_address& address, grpc_channel_args* args,
|
66
|
+
std::map<const char*, std::unique_ptr<AttributeInterface>>
|
67
|
+
attributes = {});
|
42
68
|
ServerAddress(const void* address, size_t address_len,
|
43
|
-
grpc_channel_args* args
|
69
|
+
grpc_channel_args* args,
|
70
|
+
std::map<const char*, std::unique_ptr<AttributeInterface>>
|
71
|
+
attributes = {});
|
44
72
|
|
45
73
|
~ServerAddress() { grpc_channel_args_destroy(args_); }
|
46
74
|
|
47
75
|
// Copyable.
|
48
|
-
ServerAddress(const ServerAddress& other)
|
49
|
-
|
50
|
-
ServerAddress& operator=(const ServerAddress& other) {
|
51
|
-
address_ = other.address_;
|
52
|
-
grpc_channel_args_destroy(args_);
|
53
|
-
args_ = grpc_channel_args_copy(other.args_);
|
54
|
-
return *this;
|
55
|
-
}
|
76
|
+
ServerAddress(const ServerAddress& other);
|
77
|
+
ServerAddress& operator=(const ServerAddress& other);
|
56
78
|
|
57
79
|
// Movable.
|
58
|
-
ServerAddress(ServerAddress&& other)
|
59
|
-
|
60
|
-
other.args_ = nullptr;
|
61
|
-
}
|
62
|
-
ServerAddress& operator=(ServerAddress&& other) {
|
63
|
-
address_ = other.address_;
|
64
|
-
grpc_channel_args_destroy(args_);
|
65
|
-
args_ = other.args_;
|
66
|
-
other.args_ = nullptr;
|
67
|
-
return *this;
|
68
|
-
}
|
80
|
+
ServerAddress(ServerAddress&& other) noexcept;
|
81
|
+
ServerAddress& operator=(ServerAddress&& other) noexcept;
|
69
82
|
|
70
83
|
bool operator==(const ServerAddress& other) const { return Cmp(other) == 0; }
|
71
84
|
|
@@ -74,9 +87,23 @@ class ServerAddress {
|
|
74
87
|
const grpc_resolved_address& address() const { return address_; }
|
75
88
|
const grpc_channel_args* args() const { return args_; }
|
76
89
|
|
90
|
+
const AttributeInterface* GetAttribute(const char* key) const;
|
91
|
+
|
92
|
+
// Returns a copy of the address with a modified attribute.
|
93
|
+
// If the new value is null, the attribute is removed.
|
94
|
+
ServerAddress WithAttribute(const char* key,
|
95
|
+
std::unique_ptr<AttributeInterface> value) const;
|
96
|
+
|
97
|
+
std::string ToString() const;
|
98
|
+
|
77
99
|
private:
|
100
|
+
// Allows the channel to access the attributes without knowing the keys.
|
101
|
+
// (We intentionally do not allow LB policies to do this.)
|
102
|
+
friend class ChannelServerAddressPeer;
|
103
|
+
|
78
104
|
grpc_resolved_address address_;
|
79
105
|
grpc_channel_args* args_;
|
106
|
+
std::map<const char*, std::unique_ptr<AttributeInterface>> attributes_;
|
80
107
|
};
|
81
108
|
|
82
109
|
//
|
@@ -31,16 +31,17 @@
|
|
31
31
|
namespace grpc_core {
|
32
32
|
|
33
33
|
RefCountedPtr<ServiceConfig> ServiceConfig::Create(
|
34
|
-
absl::string_view json_string,
|
34
|
+
const grpc_channel_args* args, absl::string_view json_string,
|
35
|
+
grpc_error** error) {
|
35
36
|
GPR_DEBUG_ASSERT(error != nullptr);
|
36
37
|
Json json = Json::Parse(json_string, error);
|
37
38
|
if (*error != GRPC_ERROR_NONE) return nullptr;
|
38
|
-
return MakeRefCounted<ServiceConfig>(
|
39
|
-
|
40
|
-
error);
|
39
|
+
return MakeRefCounted<ServiceConfig>(args, std::string(json_string),
|
40
|
+
std::move(json), error);
|
41
41
|
}
|
42
42
|
|
43
|
-
ServiceConfig::ServiceConfig(
|
43
|
+
ServiceConfig::ServiceConfig(const grpc_channel_args* args,
|
44
|
+
std::string json_string, Json json,
|
44
45
|
grpc_error** error)
|
45
46
|
: json_string_(std::move(json_string)), json_(std::move(json)) {
|
46
47
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -52,9 +53,9 @@ ServiceConfig::ServiceConfig(std::string json_string, Json json,
|
|
52
53
|
std::vector<grpc_error*> error_list;
|
53
54
|
grpc_error* global_error = GRPC_ERROR_NONE;
|
54
55
|
parsed_global_configs_ =
|
55
|
-
ServiceConfigParser::ParseGlobalParameters(json_, &global_error);
|
56
|
+
ServiceConfigParser::ParseGlobalParameters(args, json_, &global_error);
|
56
57
|
if (global_error != GRPC_ERROR_NONE) error_list.push_back(global_error);
|
57
|
-
grpc_error* local_error = ParsePerMethodParams();
|
58
|
+
grpc_error* local_error = ParsePerMethodParams(args);
|
58
59
|
if (local_error != GRPC_ERROR_NONE) error_list.push_back(local_error);
|
59
60
|
if (!error_list.empty()) {
|
60
61
|
*error = GRPC_ERROR_CREATE_FROM_VECTOR("Service config parsing error",
|
@@ -68,14 +69,15 @@ ServiceConfig::~ServiceConfig() {
|
|
68
69
|
}
|
69
70
|
}
|
70
71
|
|
71
|
-
grpc_error* ServiceConfig::ParseJsonMethodConfig(const
|
72
|
+
grpc_error* ServiceConfig::ParseJsonMethodConfig(const grpc_channel_args* args,
|
73
|
+
const Json& json) {
|
72
74
|
std::vector<grpc_error*> error_list;
|
73
75
|
// Parse method config with each registered parser.
|
74
76
|
auto parsed_configs =
|
75
77
|
absl::make_unique<ServiceConfigParser::ParsedConfigVector>();
|
76
78
|
grpc_error* parser_error = GRPC_ERROR_NONE;
|
77
79
|
*parsed_configs =
|
78
|
-
ServiceConfigParser::ParsePerMethodParameters(json, &parser_error);
|
80
|
+
ServiceConfigParser::ParsePerMethodParameters(args, json, &parser_error);
|
79
81
|
if (parser_error != GRPC_ERROR_NONE) {
|
80
82
|
error_list.push_back(parser_error);
|
81
83
|
}
|
@@ -128,7 +130,7 @@ grpc_error* ServiceConfig::ParseJsonMethodConfig(const Json& json) {
|
|
128
130
|
return GRPC_ERROR_CREATE_FROM_VECTOR("methodConfig", &error_list);
|
129
131
|
}
|
130
132
|
|
131
|
-
grpc_error* ServiceConfig::ParsePerMethodParams() {
|
133
|
+
grpc_error* ServiceConfig::ParsePerMethodParams(const grpc_channel_args* args) {
|
132
134
|
std::vector<grpc_error*> error_list;
|
133
135
|
auto it = json_.object_value().find("methodConfig");
|
134
136
|
if (it != json_.object_value().end()) {
|
@@ -142,7 +144,7 @@ grpc_error* ServiceConfig::ParsePerMethodParams() {
|
|
142
144
|
"field:methodConfig error:not of type Object"));
|
143
145
|
continue;
|
144
146
|
}
|
145
|
-
grpc_error* error = ParseJsonMethodConfig(method_config);
|
147
|
+
grpc_error* error = ParseJsonMethodConfig(args, method_config);
|
146
148
|
if (error != GRPC_ERROR_NONE) {
|
147
149
|
error_list.push_back(error);
|
148
150
|
}
|
@@ -202,15 +204,16 @@ std::string ServiceConfig::ParseJsonMethodName(const Json& json,
|
|
202
204
|
|
203
205
|
const ServiceConfigParser::ParsedConfigVector*
|
204
206
|
ServiceConfig::GetMethodParsedConfigVector(const grpc_slice& path) const {
|
207
|
+
if (parsed_method_configs_map_.empty()) return nullptr;
|
205
208
|
// Try looking up the full path in the map.
|
206
209
|
auto it = parsed_method_configs_map_.find(path);
|
207
210
|
if (it != parsed_method_configs_map_.end()) return it->second;
|
208
211
|
// If we didn't find a match for the path, try looking for a wildcard
|
209
212
|
// entry (i.e., change "/service/method" to "/service/").
|
210
213
|
UniquePtr<char> path_str(grpc_slice_to_c_string(path));
|
211
|
-
char* sep = strrchr(path_str.get(), '/')
|
214
|
+
char* sep = strrchr(path_str.get(), '/');
|
212
215
|
if (sep == nullptr) return nullptr; // Shouldn't ever happen.
|
213
|
-
|
216
|
+
sep[1] = '\0';
|
214
217
|
grpc_slice wildcard_path = grpc_slice_from_static_string(path_str.get());
|
215
218
|
it = parsed_method_configs_map_.find(wildcard_path);
|
216
219
|
if (it != parsed_method_configs_map_.end()) return it->second;
|
@@ -65,10 +65,12 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
65
65
|
public:
|
66
66
|
/// Creates a new service config from parsing \a json_string.
|
67
67
|
/// Returns null on parse error.
|
68
|
-
static RefCountedPtr<ServiceConfig> Create(
|
68
|
+
static RefCountedPtr<ServiceConfig> Create(const grpc_channel_args* args,
|
69
|
+
absl::string_view json_string,
|
69
70
|
grpc_error** error);
|
70
71
|
|
71
|
-
ServiceConfig(std::string json_string,
|
72
|
+
ServiceConfig(const grpc_channel_args* args, std::string json_string,
|
73
|
+
Json json, grpc_error** error);
|
72
74
|
~ServiceConfig();
|
73
75
|
|
74
76
|
const std::string& json_string() const { return json_string_; }
|
@@ -89,8 +91,9 @@ class ServiceConfig : public RefCounted<ServiceConfig> {
|
|
89
91
|
|
90
92
|
private:
|
91
93
|
// Helper functions for parsing the method configs.
|
92
|
-
grpc_error* ParsePerMethodParams();
|
93
|
-
grpc_error* ParseJsonMethodConfig(const
|
94
|
+
grpc_error* ParsePerMethodParams(const grpc_channel_args* args);
|
95
|
+
grpc_error* ParseJsonMethodConfig(const grpc_channel_args* args,
|
96
|
+
const Json& json);
|
94
97
|
|
95
98
|
// Returns a path string for the JSON name object specified by json.
|
96
99
|
// Sets *error on error.
|
@@ -37,8 +37,8 @@ class ServiceConfigChannelArgChannelData {
|
|
37
37
|
args->channel_args, GRPC_ARG_SERVICE_CONFIG);
|
38
38
|
if (service_config_str != nullptr) {
|
39
39
|
grpc_error* service_config_error = GRPC_ERROR_NONE;
|
40
|
-
auto service_config =
|
41
|
-
|
40
|
+
auto service_config = ServiceConfig::Create(
|
41
|
+
args->channel_args, service_config_str, &service_config_error);
|
42
42
|
if (service_config_error == GRPC_ERROR_NONE) {
|
43
43
|
service_config_ = std::move(service_config);
|
44
44
|
} else {
|
@@ -45,14 +45,15 @@ size_t ServiceConfigParser::RegisterParser(std::unique_ptr<Parser> parser) {
|
|
45
45
|
}
|
46
46
|
|
47
47
|
ServiceConfigParser::ParsedConfigVector
|
48
|
-
ServiceConfigParser::ParseGlobalParameters(const
|
48
|
+
ServiceConfigParser::ParseGlobalParameters(const grpc_channel_args* args,
|
49
|
+
const Json& json,
|
49
50
|
grpc_error** error) {
|
50
51
|
ParsedConfigVector parsed_global_configs;
|
51
52
|
std::vector<grpc_error*> error_list;
|
52
53
|
for (size_t i = 0; i < g_registered_parsers->size(); i++) {
|
53
54
|
grpc_error* parser_error = GRPC_ERROR_NONE;
|
54
|
-
auto parsed_config =
|
55
|
-
|
55
|
+
auto parsed_config = (*g_registered_parsers)[i]->ParseGlobalParams(
|
56
|
+
args, json, &parser_error);
|
56
57
|
if (parser_error != GRPC_ERROR_NONE) {
|
57
58
|
error_list.push_back(parser_error);
|
58
59
|
}
|
@@ -65,14 +66,15 @@ ServiceConfigParser::ParseGlobalParameters(const Json& json,
|
|
65
66
|
}
|
66
67
|
|
67
68
|
ServiceConfigParser::ParsedConfigVector
|
68
|
-
ServiceConfigParser::ParsePerMethodParameters(const
|
69
|
+
ServiceConfigParser::ParsePerMethodParameters(const grpc_channel_args* args,
|
70
|
+
const Json& json,
|
69
71
|
grpc_error** error) {
|
70
72
|
ParsedConfigVector parsed_method_configs;
|
71
73
|
std::vector<grpc_error*> error_list;
|
72
74
|
for (size_t i = 0; i < g_registered_parsers->size(); i++) {
|
73
75
|
grpc_error* parser_error = GRPC_ERROR_NONE;
|
74
|
-
auto parsed_config =
|
75
|
-
|
76
|
+
auto parsed_config = (*g_registered_parsers)[i]->ParsePerMethodParams(
|
77
|
+
args, json, &parser_error);
|
76
78
|
if (parser_error != GRPC_ERROR_NONE) {
|
77
79
|
error_list.push_back(parser_error);
|
78
80
|
}
|
@@ -23,6 +23,8 @@
|
|
23
23
|
|
24
24
|
#include "absl/container/inlined_vector.h"
|
25
25
|
|
26
|
+
#include <grpc/impl/codegen/grpc_types.h>
|
27
|
+
|
26
28
|
#include "src/core/lib/iomgr/error.h"
|
27
29
|
#include "src/core/lib/json/json.h"
|
28
30
|
|
@@ -45,7 +47,7 @@ class ServiceConfigParser {
|
|
45
47
|
virtual ~Parser() = default;
|
46
48
|
|
47
49
|
virtual std::unique_ptr<ParsedConfig> ParseGlobalParams(
|
48
|
-
const Json& /* json */, grpc_error** error) {
|
50
|
+
const grpc_channel_args*, const Json& /* json */, grpc_error** error) {
|
49
51
|
// Avoid unused parameter warning on debug-only parameter
|
50
52
|
(void)error;
|
51
53
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -53,7 +55,7 @@ class ServiceConfigParser {
|
|
53
55
|
}
|
54
56
|
|
55
57
|
virtual std::unique_ptr<ParsedConfig> ParsePerMethodParams(
|
56
|
-
const Json& /* json */, grpc_error** error) {
|
58
|
+
const grpc_channel_args*, const Json& /* json */, grpc_error** error) {
|
57
59
|
// Avoid unused parameter warning on debug-only parameter
|
58
60
|
(void)error;
|
59
61
|
GPR_DEBUG_ASSERT(error != nullptr);
|
@@ -77,11 +79,12 @@ class ServiceConfigParser {
|
|
77
79
|
/// retrieved using the same index that was returned at registration time.
|
78
80
|
static size_t RegisterParser(std::unique_ptr<Parser> parser);
|
79
81
|
|
80
|
-
static ParsedConfigVector ParseGlobalParameters(const
|
82
|
+
static ParsedConfigVector ParseGlobalParameters(const grpc_channel_args* args,
|
83
|
+
const Json& json,
|
81
84
|
grpc_error** error);
|
82
85
|
|
83
|
-
static ParsedConfigVector ParsePerMethodParameters(
|
84
|
-
|
86
|
+
static ParsedConfigVector ParsePerMethodParameters(
|
87
|
+
const grpc_channel_args* args, const Json& json, grpc_error** error);
|
85
88
|
};
|
86
89
|
|
87
90
|
} // namespace grpc_core
|
@@ -26,12 +26,13 @@
|
|
26
26
|
#include <algorithm>
|
27
27
|
#include <cstring>
|
28
28
|
|
29
|
+
#include "absl/strings/str_format.h"
|
30
|
+
|
29
31
|
#include <grpc/support/alloc.h>
|
30
32
|
#include <grpc/support/string_util.h>
|
31
33
|
|
32
34
|
#include "src/core/ext/filters/client_channel/client_channel.h"
|
33
35
|
#include "src/core/ext/filters/client_channel/health/health_check_client.h"
|
34
|
-
#include "src/core/ext/filters/client_channel/parse_address.h"
|
35
36
|
#include "src/core/ext/filters/client_channel/proxy_mapper_registry.h"
|
36
37
|
#include "src/core/ext/filters/client_channel/service_config.h"
|
37
38
|
#include "src/core/ext/filters/client_channel/subchannel_pool_interface.h"
|
@@ -44,6 +45,7 @@
|
|
44
45
|
#include "src/core/lib/gprpp/manual_constructor.h"
|
45
46
|
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
46
47
|
#include "src/core/lib/gprpp/sync.h"
|
48
|
+
#include "src/core/lib/iomgr/parse_address.h"
|
47
49
|
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
48
50
|
#include "src/core/lib/profiling/timers.h"
|
49
51
|
#include "src/core/lib/slice/slice_internal.h"
|
@@ -325,7 +327,8 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
325
327
|
}
|
326
328
|
|
327
329
|
private:
|
328
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
330
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
331
|
+
const absl::Status& status) override {
|
329
332
|
Subchannel* c = subchannel_;
|
330
333
|
MutexLock lock(&c->mu_);
|
331
334
|
switch (new_state) {
|
@@ -343,7 +346,15 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
343
346
|
if (c->channelz_node() != nullptr) {
|
344
347
|
c->channelz_node()->SetChildSocket(nullptr);
|
345
348
|
}
|
346
|
-
|
349
|
+
// We need to construct our own status if the underlying state was
|
350
|
+
// shutdown since the accompanying status will be StatusCode::OK
|
351
|
+
// otherwise.
|
352
|
+
c->SetConnectivityStateLocked(
|
353
|
+
GRPC_CHANNEL_TRANSIENT_FAILURE,
|
354
|
+
new_state == GRPC_CHANNEL_SHUTDOWN
|
355
|
+
? absl::Status(absl::StatusCode::kUnavailable,
|
356
|
+
"Subchannel has disconnected.")
|
357
|
+
: status);
|
347
358
|
c->backoff_begun_ = false;
|
348
359
|
c->backoff_.Reset();
|
349
360
|
}
|
@@ -354,7 +365,7 @@ class Subchannel::ConnectedSubchannelStateWatcher
|
|
354
365
|
// a callback for READY, because that was the state we started
|
355
366
|
// this watch from. And a connected subchannel should never go
|
356
367
|
// from READY to CONNECTING or IDLE.
|
357
|
-
c->SetConnectivityStateLocked(new_state);
|
368
|
+
c->SetConnectivityStateLocked(new_state, status);
|
358
369
|
}
|
359
370
|
}
|
360
371
|
}
|
@@ -368,14 +379,15 @@ class Subchannel::AsyncWatcherNotifierLocked {
|
|
368
379
|
public:
|
369
380
|
AsyncWatcherNotifierLocked(
|
370
381
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher,
|
371
|
-
Subchannel* subchannel, grpc_connectivity_state state
|
382
|
+
Subchannel* subchannel, grpc_connectivity_state state,
|
383
|
+
const absl::Status& status)
|
372
384
|
: watcher_(std::move(watcher)) {
|
373
385
|
RefCountedPtr<ConnectedSubchannel> connected_subchannel;
|
374
386
|
if (state == GRPC_CHANNEL_READY) {
|
375
387
|
connected_subchannel = subchannel->connected_subchannel_;
|
376
388
|
}
|
377
389
|
watcher_->PushConnectivityStateChange(
|
378
|
-
{state, std::move(connected_subchannel)});
|
390
|
+
{state, status, std::move(connected_subchannel)});
|
379
391
|
ExecCtx::Run(
|
380
392
|
DEBUG_LOCATION,
|
381
393
|
GRPC_CLOSURE_INIT(&closure_,
|
@@ -409,9 +421,10 @@ void Subchannel::ConnectivityStateWatcherList::RemoveWatcherLocked(
|
|
409
421
|
}
|
410
422
|
|
411
423
|
void Subchannel::ConnectivityStateWatcherList::NotifyLocked(
|
412
|
-
Subchannel* subchannel, grpc_connectivity_state state
|
424
|
+
Subchannel* subchannel, grpc_connectivity_state state,
|
425
|
+
const absl::Status& status) {
|
413
426
|
for (const auto& p : watchers_) {
|
414
|
-
new AsyncWatcherNotifierLocked(p.second, subchannel, state);
|
427
|
+
new AsyncWatcherNotifierLocked(p.second, subchannel, state, status);
|
415
428
|
}
|
416
429
|
}
|
417
430
|
|
@@ -450,7 +463,7 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
450
463
|
grpc_connectivity_state initial_state,
|
451
464
|
RefCountedPtr<Subchannel::ConnectivityStateWatcherInterface> watcher) {
|
452
465
|
if (state_ != initial_state) {
|
453
|
-
new AsyncWatcherNotifierLocked(watcher, subchannel_, state_);
|
466
|
+
new AsyncWatcherNotifierLocked(watcher, subchannel_, state_, status_);
|
454
467
|
}
|
455
468
|
watcher_list_.AddWatcherLocked(std::move(watcher));
|
456
469
|
}
|
@@ -462,7 +475,7 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
462
475
|
|
463
476
|
bool HasWatchers() const { return !watcher_list_.empty(); }
|
464
477
|
|
465
|
-
void NotifyLocked(grpc_connectivity_state state) {
|
478
|
+
void NotifyLocked(grpc_connectivity_state state, const absl::Status& status) {
|
466
479
|
if (state == GRPC_CHANNEL_READY) {
|
467
480
|
// If we had not already notified for CONNECTING state, do so now.
|
468
481
|
// (We may have missed this earlier, because if the transition
|
@@ -470,13 +483,15 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
470
483
|
// subchannel may not have sent us a notification for CONNECTING.)
|
471
484
|
if (state_ != GRPC_CHANNEL_CONNECTING) {
|
472
485
|
state_ = GRPC_CHANNEL_CONNECTING;
|
473
|
-
|
486
|
+
status_ = status;
|
487
|
+
watcher_list_.NotifyLocked(subchannel_, state_, status);
|
474
488
|
}
|
475
489
|
// If we've become connected, start health checking.
|
476
490
|
StartHealthCheckingLocked();
|
477
491
|
} else {
|
478
492
|
state_ = state;
|
479
|
-
|
493
|
+
status_ = status;
|
494
|
+
watcher_list_.NotifyLocked(subchannel_, state_, status);
|
480
495
|
// We're not connected, so stop health checking.
|
481
496
|
health_check_client_.reset();
|
482
497
|
}
|
@@ -489,11 +504,13 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
489
504
|
}
|
490
505
|
|
491
506
|
private:
|
492
|
-
void OnConnectivityStateChange(grpc_connectivity_state new_state
|
507
|
+
void OnConnectivityStateChange(grpc_connectivity_state new_state,
|
508
|
+
const absl::Status& status) override {
|
493
509
|
MutexLock lock(&subchannel_->mu_);
|
494
510
|
if (new_state != GRPC_CHANNEL_SHUTDOWN && health_check_client_ != nullptr) {
|
495
511
|
state_ = new_state;
|
496
|
-
|
512
|
+
status_ = status;
|
513
|
+
watcher_list_.NotifyLocked(subchannel_, new_state, status);
|
497
514
|
}
|
498
515
|
}
|
499
516
|
|
@@ -508,6 +525,7 @@ class Subchannel::HealthWatcherMap::HealthWatcher
|
|
508
525
|
grpc_core::UniquePtr<char> health_check_service_name_;
|
509
526
|
OrphanablePtr<HealthCheckClient> health_check_client_;
|
510
527
|
grpc_connectivity_state state_;
|
528
|
+
absl::Status status_;
|
511
529
|
ConnectivityStateWatcherList watcher_list_;
|
512
530
|
};
|
513
531
|
|
@@ -547,9 +565,10 @@ void Subchannel::HealthWatcherMap::RemoveWatcherLocked(
|
|
547
565
|
if (!it->second->HasWatchers()) map_.erase(it);
|
548
566
|
}
|
549
567
|
|
550
|
-
void Subchannel::HealthWatcherMap::NotifyLocked(grpc_connectivity_state state
|
568
|
+
void Subchannel::HealthWatcherMap::NotifyLocked(grpc_connectivity_state state,
|
569
|
+
const absl::Status& status) {
|
551
570
|
for (const auto& p : map_) {
|
552
|
-
p.second->NotifyLocked(state);
|
571
|
+
p.second->NotifyLocked(state, status);
|
553
572
|
}
|
554
573
|
}
|
555
574
|
|
@@ -724,6 +743,25 @@ Subchannel* Subchannel::Create(OrphanablePtr<SubchannelConnector> connector,
|
|
724
743
|
return registered;
|
725
744
|
}
|
726
745
|
|
746
|
+
void Subchannel::ThrottleKeepaliveTime(int new_keepalive_time) {
|
747
|
+
MutexLock lock(&mu_);
|
748
|
+
// Only update the value if the new keepalive time is larger.
|
749
|
+
if (new_keepalive_time > keepalive_time_) {
|
750
|
+
keepalive_time_ = new_keepalive_time;
|
751
|
+
if (grpc_trace_subchannel.enabled()) {
|
752
|
+
gpr_log(GPR_INFO, "Subchannel=%p: Throttling keepalive time to %d", this,
|
753
|
+
new_keepalive_time);
|
754
|
+
}
|
755
|
+
const grpc_arg arg_to_add = grpc_channel_arg_integer_create(
|
756
|
+
const_cast<char*>(GRPC_ARG_KEEPALIVE_TIME_MS), new_keepalive_time);
|
757
|
+
const char* arg_to_remove = GRPC_ARG_KEEPALIVE_TIME_MS;
|
758
|
+
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
759
|
+
args_, &arg_to_remove, 1, &arg_to_add, 1);
|
760
|
+
grpc_channel_args_destroy(args_);
|
761
|
+
args_ = new_args;
|
762
|
+
}
|
763
|
+
}
|
764
|
+
|
727
765
|
Subchannel* Subchannel::Ref(GRPC_SUBCHANNEL_REF_EXTRA_ARGS) {
|
728
766
|
gpr_atm old_refs;
|
729
767
|
old_refs = RefMutate((1 << INTERNAL_REF_BITS),
|
@@ -826,7 +864,7 @@ void Subchannel::WatchConnectivityState(
|
|
826
864
|
}
|
827
865
|
if (health_check_service_name == nullptr) {
|
828
866
|
if (state_ != initial_state) {
|
829
|
-
new AsyncWatcherNotifierLocked(watcher, this, state_);
|
867
|
+
new AsyncWatcherNotifierLocked(watcher, this, state_, status_);
|
830
868
|
}
|
831
869
|
watcher_list_.AddWatcherLocked(std::move(watcher));
|
832
870
|
} else {
|
@@ -928,8 +966,10 @@ const char* SubchannelConnectivityStateChangeString(
|
|
928
966
|
} // namespace
|
929
967
|
|
930
968
|
// Note: Must be called with a state that is different from the current state.
|
931
|
-
void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state
|
969
|
+
void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state,
|
970
|
+
const absl::Status& status) {
|
932
971
|
state_ = state;
|
972
|
+
status_ = status;
|
933
973
|
if (channelz_node_ != nullptr) {
|
934
974
|
channelz_node_->UpdateConnectivityState(state);
|
935
975
|
channelz_node_->AddTraceEvent(
|
@@ -938,9 +978,9 @@ void Subchannel::SetConnectivityStateLocked(grpc_connectivity_state state) {
|
|
938
978
|
SubchannelConnectivityStateChangeString(state)));
|
939
979
|
}
|
940
980
|
// Notify non-health watchers.
|
941
|
-
watcher_list_.NotifyLocked(this, state);
|
981
|
+
watcher_list_.NotifyLocked(this, state, status);
|
942
982
|
// Notify health watchers.
|
943
|
-
health_watcher_map_.NotifyLocked(state);
|
983
|
+
health_watcher_map_.NotifyLocked(state, status);
|
944
984
|
}
|
945
985
|
|
946
986
|
void Subchannel::MaybeStartConnectingLocked() {
|
@@ -1012,7 +1052,7 @@ void Subchannel::ContinueConnectingLocked() {
|
|
1012
1052
|
next_attempt_deadline_ = backoff_.NextAttemptTime();
|
1013
1053
|
args.deadline = std::max(next_attempt_deadline_, min_deadline);
|
1014
1054
|
args.channel_args = args_;
|
1015
|
-
SetConnectivityStateLocked(GRPC_CHANNEL_CONNECTING);
|
1055
|
+
SetConnectivityStateLocked(GRPC_CHANNEL_CONNECTING, absl::Status());
|
1016
1056
|
connector_->Connect(args, &connecting_result_, &on_connecting_finished_);
|
1017
1057
|
}
|
1018
1058
|
|
@@ -1031,7 +1071,8 @@ void Subchannel::OnConnectingFinished(void* arg, grpc_error* error) {
|
|
1031
1071
|
GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting");
|
1032
1072
|
} else {
|
1033
1073
|
gpr_log(GPR_INFO, "Connect failed: %s", grpc_error_string(error));
|
1034
|
-
c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE
|
1074
|
+
c->SetConnectivityStateLocked(GRPC_CHANNEL_TRANSIENT_FAILURE,
|
1075
|
+
grpc_error_to_absl_status(error));
|
1035
1076
|
GRPC_SUBCHANNEL_WEAK_UNREF(c, "connecting");
|
1036
1077
|
}
|
1037
1078
|
}
|
@@ -1091,7 +1132,7 @@ bool Subchannel::PublishTransportLocked() {
|
|
1091
1132
|
connected_subchannel_->StartWatch(
|
1092
1133
|
pollset_set_, MakeOrphanable<ConnectedSubchannelStateWatcher>(this));
|
1093
1134
|
// Report initial state.
|
1094
|
-
SetConnectivityStateLocked(GRPC_CHANNEL_READY);
|
1135
|
+
SetConnectivityStateLocked(GRPC_CHANNEL_READY, absl::Status());
|
1095
1136
|
return true;
|
1096
1137
|
}
|
1097
1138
|
|