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
@@ -117,7 +117,6 @@ grpc_arg grpc_channel_arg_pointer_create(char* name, void* value,
|
|
117
117
|
const grpc_arg_pointer_vtable* vtable);
|
118
118
|
|
119
119
|
// Returns a string representing channel args in human-readable form.
|
120
|
-
// Callers takes ownership of result.
|
121
120
|
std::string grpc_channel_args_string(const grpc_channel_args* args);
|
122
121
|
|
123
122
|
// Takes ownership of the old_args
|
@@ -48,40 +48,6 @@
|
|
48
48
|
namespace grpc_core {
|
49
49
|
namespace channelz {
|
50
50
|
|
51
|
-
//
|
52
|
-
// channel arg code
|
53
|
-
//
|
54
|
-
|
55
|
-
namespace {
|
56
|
-
|
57
|
-
void* parent_uuid_copy(void* p) { return p; }
|
58
|
-
void parent_uuid_destroy(void* /*p*/) {}
|
59
|
-
int parent_uuid_cmp(void* p1, void* p2) { return GPR_ICMP(p1, p2); }
|
60
|
-
const grpc_arg_pointer_vtable parent_uuid_vtable = {
|
61
|
-
parent_uuid_copy, parent_uuid_destroy, parent_uuid_cmp};
|
62
|
-
|
63
|
-
} // namespace
|
64
|
-
|
65
|
-
grpc_arg MakeParentUuidArg(intptr_t parent_uuid) {
|
66
|
-
// We would ideally like to store the uuid in an integer argument.
|
67
|
-
// Unfortunately, that won't work, because intptr_t (the type used for
|
68
|
-
// uuids) doesn't fit in an int (the type used for integer args).
|
69
|
-
// So instead, we use a hack to store it as a pointer, because
|
70
|
-
// intptr_t should be the same size as void*.
|
71
|
-
static_assert(sizeof(intptr_t) <= sizeof(void*),
|
72
|
-
"can't fit intptr_t inside of void*");
|
73
|
-
return grpc_channel_arg_pointer_create(
|
74
|
-
const_cast<char*>(GRPC_ARG_CHANNELZ_PARENT_UUID),
|
75
|
-
reinterpret_cast<void*>(parent_uuid), &parent_uuid_vtable);
|
76
|
-
}
|
77
|
-
|
78
|
-
intptr_t GetParentUuidFromArgs(const grpc_channel_args& args) {
|
79
|
-
const grpc_arg* arg =
|
80
|
-
grpc_channel_args_find(&args, GRPC_ARG_CHANNELZ_PARENT_UUID);
|
81
|
-
if (arg == nullptr || arg->type != GRPC_ARG_POINTER) return 0;
|
82
|
-
return reinterpret_cast<intptr_t>(arg->value.pointer.p);
|
83
|
-
}
|
84
|
-
|
85
51
|
//
|
86
52
|
// BaseNode
|
87
53
|
//
|
@@ -171,13 +137,12 @@ void CallCountingHelper::PopulateCallCounts(Json::Object* object) {
|
|
171
137
|
//
|
172
138
|
|
173
139
|
ChannelNode::ChannelNode(std::string target, size_t channel_tracer_max_nodes,
|
174
|
-
|
175
|
-
: BaseNode(
|
176
|
-
|
140
|
+
bool is_internal_channel)
|
141
|
+
: BaseNode(is_internal_channel ? EntityType::kInternalChannel
|
142
|
+
: EntityType::kTopLevelChannel,
|
177
143
|
target),
|
178
144
|
target_(std::move(target)),
|
179
|
-
trace_(channel_tracer_max_nodes)
|
180
|
-
parent_uuid_(parent_uuid) {}
|
145
|
+
trace_(channel_tracer_max_nodes) {}
|
181
146
|
|
182
147
|
const char* ChannelNode::GetChannelConnectivityStateChangeString(
|
183
148
|
grpc_connectivity_state state) {
|
@@ -235,18 +200,18 @@ void ChannelNode::PopulateChildRefs(Json::Object* json) {
|
|
235
200
|
MutexLock lock(&child_mu_);
|
236
201
|
if (!child_subchannels_.empty()) {
|
237
202
|
Json::Array array;
|
238
|
-
for (
|
203
|
+
for (intptr_t subchannel_uuid : child_subchannels_) {
|
239
204
|
array.emplace_back(Json::Object{
|
240
|
-
{"subchannelId", std::to_string(
|
205
|
+
{"subchannelId", std::to_string(subchannel_uuid)},
|
241
206
|
});
|
242
207
|
}
|
243
208
|
(*json)["subchannelRef"] = std::move(array);
|
244
209
|
}
|
245
210
|
if (!child_channels_.empty()) {
|
246
211
|
Json::Array array;
|
247
|
-
for (
|
212
|
+
for (intptr_t channel_uuid : child_channels_) {
|
248
213
|
array.emplace_back(Json::Object{
|
249
|
-
{"channelId", std::to_string(
|
214
|
+
{"channelId", std::to_string(channel_uuid)},
|
250
215
|
});
|
251
216
|
}
|
252
217
|
(*json)["channelRef"] = std::move(array);
|
@@ -261,7 +226,7 @@ void ChannelNode::SetConnectivityState(grpc_connectivity_state state) {
|
|
261
226
|
|
262
227
|
void ChannelNode::AddChildChannel(intptr_t child_uuid) {
|
263
228
|
MutexLock lock(&child_mu_);
|
264
|
-
child_channels_.insert(
|
229
|
+
child_channels_.insert(child_uuid);
|
265
230
|
}
|
266
231
|
|
267
232
|
void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
|
@@ -271,7 +236,7 @@ void ChannelNode::RemoveChildChannel(intptr_t child_uuid) {
|
|
271
236
|
|
272
237
|
void ChannelNode::AddChildSubchannel(intptr_t child_uuid) {
|
273
238
|
MutexLock lock(&child_mu_);
|
274
|
-
child_subchannels_.insert(
|
239
|
+
child_subchannels_.insert(child_uuid);
|
275
240
|
}
|
276
241
|
|
277
242
|
void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) {
|
@@ -283,7 +248,7 @@ void ChannelNode::RemoveChildSubchannel(intptr_t child_uuid) {
|
|
283
248
|
// ServerNode
|
284
249
|
//
|
285
250
|
|
286
|
-
ServerNode::ServerNode(
|
251
|
+
ServerNode::ServerNode(size_t channel_tracer_max_nodes)
|
287
252
|
: BaseNode(EntityType::kServer, ""), trace_(channel_tracer_max_nodes) {}
|
288
253
|
|
289
254
|
ServerNode::~ServerNode() {}
|
@@ -310,27 +275,26 @@ void ServerNode::RemoveChildListenSocket(intptr_t child_uuid) {
|
|
310
275
|
|
311
276
|
std::string ServerNode::RenderServerSockets(intptr_t start_socket_id,
|
312
277
|
intptr_t max_results) {
|
278
|
+
GPR_ASSERT(start_socket_id >= 0);
|
279
|
+
GPR_ASSERT(max_results >= 0);
|
313
280
|
// If user does not set max_results, we choose 500.
|
314
281
|
size_t pagination_limit = max_results == 0 ? 500 : max_results;
|
315
282
|
Json::Object object;
|
316
283
|
{
|
317
284
|
MutexLock lock(&child_mu_);
|
318
285
|
size_t sockets_rendered = 0;
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
{"name", it->second->name()},
|
329
|
-
});
|
330
|
-
}
|
331
|
-
object["socketRef"] = std::move(array);
|
286
|
+
// Create list of socket refs.
|
287
|
+
Json::Array array;
|
288
|
+
auto it = child_sockets_.lower_bound(start_socket_id);
|
289
|
+
for (; it != child_sockets_.end() && sockets_rendered < pagination_limit;
|
290
|
+
++it, ++sockets_rendered) {
|
291
|
+
array.emplace_back(Json::Object{
|
292
|
+
{"socketId", std::to_string(it->first)},
|
293
|
+
{"name", it->second->name()},
|
294
|
+
});
|
332
295
|
}
|
333
|
-
|
296
|
+
object["socketRef"] = std::move(array);
|
297
|
+
if (it == child_sockets_.end()) object["end"] = true;
|
334
298
|
}
|
335
299
|
Json json = std::move(object);
|
336
300
|
return json.Dump();
|
@@ -23,6 +23,7 @@
|
|
23
23
|
|
24
24
|
#include <grpc/grpc.h>
|
25
25
|
|
26
|
+
#include <set>
|
26
27
|
#include <string>
|
27
28
|
|
28
29
|
#include "absl/container/inlined_vector.h"
|
@@ -42,8 +43,9 @@
|
|
42
43
|
// Channel arg key for channelz node.
|
43
44
|
#define GRPC_ARG_CHANNELZ_CHANNEL_NODE "grpc.channelz_channel_node"
|
44
45
|
|
45
|
-
// Channel arg key
|
46
|
-
#define
|
46
|
+
// Channel arg key for indicating an internal channel.
|
47
|
+
#define GRPC_ARG_CHANNELZ_IS_INTERNAL_CHANNEL \
|
48
|
+
"grpc.channelz_is_internal_channel"
|
47
49
|
|
48
50
|
/** This is the default value for whether or not to enable channelz. If
|
49
51
|
* GRPC_ARG_ENABLE_CHANNELZ is set, it will override this default value. */
|
@@ -59,10 +61,6 @@ namespace grpc_core {
|
|
59
61
|
|
60
62
|
namespace channelz {
|
61
63
|
|
62
|
-
// Helpers for getting and setting GRPC_ARG_CHANNELZ_PARENT_UUID.
|
63
|
-
grpc_arg MakeParentUuidArg(intptr_t parent_uuid);
|
64
|
-
intptr_t GetParentUuidFromArgs(const grpc_channel_args& args);
|
65
|
-
|
66
64
|
class SocketNode;
|
67
65
|
class ListenSocketNode;
|
68
66
|
|
@@ -176,14 +174,12 @@ class CallCountingHelper {
|
|
176
174
|
class ChannelNode : public BaseNode {
|
177
175
|
public:
|
178
176
|
ChannelNode(std::string target, size_t channel_tracer_max_nodes,
|
179
|
-
|
177
|
+
bool is_internal_channel);
|
180
178
|
|
181
179
|
// Returns the string description of the given connectivity state.
|
182
180
|
static const char* GetChannelConnectivityStateChangeString(
|
183
181
|
grpc_connectivity_state state);
|
184
182
|
|
185
|
-
intptr_t parent_uuid() const { return parent_uuid_; }
|
186
|
-
|
187
183
|
Json RenderJson() override;
|
188
184
|
|
189
185
|
// proxy methods to composed classes.
|
@@ -213,32 +209,28 @@ class ChannelNode : public BaseNode {
|
|
213
209
|
void RemoveChildSubchannel(intptr_t child_uuid);
|
214
210
|
|
215
211
|
private:
|
216
|
-
|
217
|
-
|
218
|
-
// to allow the channel trace test to access trace_.
|
212
|
+
// Allows the channel trace test to access trace_.
|
219
213
|
friend class testing::ChannelNodePeer;
|
220
214
|
|
215
|
+
void PopulateChildRefs(Json::Object* json);
|
216
|
+
|
221
217
|
std::string target_;
|
222
218
|
CallCountingHelper call_counter_;
|
223
219
|
ChannelTrace trace_;
|
224
|
-
const intptr_t parent_uuid_;
|
225
220
|
|
226
221
|
// Least significant bit indicates whether the value is set. Remaining
|
227
222
|
// bits are a grpc_connectivity_state value.
|
228
223
|
Atomic<int> connectivity_state_{0};
|
229
224
|
|
230
|
-
Mutex child_mu_; // Guards
|
231
|
-
|
232
|
-
|
233
|
-
// implementation. Change this if/when we have one.
|
234
|
-
std::map<intptr_t, bool> child_channels_;
|
235
|
-
std::map<intptr_t, bool> child_subchannels_;
|
225
|
+
Mutex child_mu_; // Guards sets below.
|
226
|
+
std::set<intptr_t> child_channels_;
|
227
|
+
std::set<intptr_t> child_subchannels_;
|
236
228
|
};
|
237
229
|
|
238
230
|
// Handles channelz bookkeeping for servers
|
239
231
|
class ServerNode : public BaseNode {
|
240
232
|
public:
|
241
|
-
ServerNode(
|
233
|
+
explicit ServerNode(size_t channel_tracer_max_nodes);
|
242
234
|
|
243
235
|
~ServerNode() override;
|
244
236
|
|
@@ -78,8 +78,7 @@ RefCountedPtr<BaseNode> ChannelzRegistry::InternalGet(intptr_t uuid) {
|
|
78
78
|
// Found node. Return only if its refcount is not zero (i.e., when we
|
79
79
|
// know that there is no other thread about to destroy it).
|
80
80
|
BaseNode* node = it->second;
|
81
|
-
|
82
|
-
return RefCountedPtr<BaseNode>(node);
|
81
|
+
return node->RefIfNonZero();
|
83
82
|
}
|
84
83
|
|
85
84
|
std::string ChannelzRegistry::InternalGetTopChannels(
|
@@ -91,8 +90,9 @@ std::string ChannelzRegistry::InternalGetTopChannels(
|
|
91
90
|
for (auto it = node_map_.lower_bound(start_channel_id);
|
92
91
|
it != node_map_.end(); ++it) {
|
93
92
|
BaseNode* node = it->second;
|
93
|
+
RefCountedPtr<BaseNode> node_ref;
|
94
94
|
if (node->type() == BaseNode::EntityType::kTopLevelChannel &&
|
95
|
-
node->RefIfNonZero()) {
|
95
|
+
(node_ref = node->RefIfNonZero()) != nullptr) {
|
96
96
|
// Check if we are over pagination limit to determine if we need to set
|
97
97
|
// the "end" element. If we don't go through this block, we know that
|
98
98
|
// when the loop terminates, we have <= to kPaginationLimit.
|
@@ -100,10 +100,10 @@ std::string ChannelzRegistry::InternalGetTopChannels(
|
|
100
100
|
// refcount, we need to decrease it, but we can't unref while
|
101
101
|
// holding the lock, because this may lead to a deadlock.
|
102
102
|
if (top_level_channels.size() == kPaginationLimit) {
|
103
|
-
node_after_pagination_limit
|
103
|
+
node_after_pagination_limit = std::move(node_ref);
|
104
104
|
break;
|
105
105
|
}
|
106
|
-
top_level_channels.emplace_back(
|
106
|
+
top_level_channels.emplace_back(std::move(node_ref));
|
107
107
|
}
|
108
108
|
}
|
109
109
|
}
|
@@ -129,8 +129,9 @@ std::string ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
|
|
129
129
|
for (auto it = node_map_.lower_bound(start_server_id);
|
130
130
|
it != node_map_.end(); ++it) {
|
131
131
|
BaseNode* node = it->second;
|
132
|
+
RefCountedPtr<BaseNode> node_ref;
|
132
133
|
if (node->type() == BaseNode::EntityType::kServer &&
|
133
|
-
node->RefIfNonZero()) {
|
134
|
+
(node_ref = node->RefIfNonZero()) != nullptr) {
|
134
135
|
// Check if we are over pagination limit to determine if we need to set
|
135
136
|
// the "end" element. If we don't go through this block, we know that
|
136
137
|
// when the loop terminates, we have <= to kPaginationLimit.
|
@@ -138,10 +139,10 @@ std::string ChannelzRegistry::InternalGetServers(intptr_t start_server_id) {
|
|
138
139
|
// refcount, we need to decrease it, but we can't unref while
|
139
140
|
// holding the lock, because this may lead to a deadlock.
|
140
141
|
if (servers.size() == kPaginationLimit) {
|
141
|
-
node_after_pagination_limit
|
142
|
+
node_after_pagination_limit = std::move(node_ref);
|
142
143
|
break;
|
143
144
|
}
|
144
|
-
servers.emplace_back(
|
145
|
+
servers.emplace_back(std::move(node_ref));
|
145
146
|
}
|
146
147
|
}
|
147
148
|
}
|
@@ -164,9 +165,9 @@ void ChannelzRegistry::InternalLogAllEntities() {
|
|
164
165
|
{
|
165
166
|
MutexLock lock(&mu_);
|
166
167
|
for (auto& p : node_map_) {
|
167
|
-
BaseNode
|
168
|
-
if (node
|
169
|
-
nodes.emplace_back(node);
|
168
|
+
RefCountedPtr<BaseNode> node = p.second->RefIfNonZero();
|
169
|
+
if (node != nullptr) {
|
170
|
+
nodes.emplace_back(std::move(node));
|
170
171
|
}
|
171
172
|
}
|
172
173
|
}
|
@@ -208,10 +209,12 @@ char* grpc_channelz_get_server(intptr_t server_id) {
|
|
208
209
|
char* grpc_channelz_get_server_sockets(intptr_t server_id,
|
209
210
|
intptr_t start_socket_id,
|
210
211
|
intptr_t max_results) {
|
212
|
+
// Validate inputs before handing them of to the renderer.
|
211
213
|
grpc_core::RefCountedPtr<grpc_core::channelz::BaseNode> base_node =
|
212
214
|
grpc_core::channelz::ChannelzRegistry::Get(server_id);
|
213
215
|
if (base_node == nullptr ||
|
214
|
-
base_node->type() != grpc_core::channelz::BaseNode::EntityType::kServer
|
216
|
+
base_node->type() != grpc_core::channelz::BaseNode::EntityType::kServer ||
|
217
|
+
start_socket_id < 0 || max_results < 0) {
|
215
218
|
return nullptr;
|
216
219
|
}
|
217
220
|
// This cast is ok since we have just checked to make sure base_node is
|
@@ -116,10 +116,6 @@ void gpr_cv_destroy(gpr_cv* cv) {
|
|
116
116
|
#endif
|
117
117
|
}
|
118
118
|
|
119
|
-
#define gpr_convert_clock_type_debug(t, clock_type, now1, now2, add_result, \
|
120
|
-
sub_result) \
|
121
|
-
gpr_convert_clock_type((t), (clock_type))
|
122
|
-
|
123
119
|
int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) {
|
124
120
|
int err = 0;
|
125
121
|
if (gpr_time_cmp(abs_deadline, gpr_inf_future(abs_deadline.clock_type)) ==
|
@@ -132,11 +128,9 @@ int gpr_cv_wait(gpr_cv* cv, gpr_mu* mu, gpr_timespec abs_deadline) {
|
|
132
128
|
} else {
|
133
129
|
struct timespec abs_deadline_ts;
|
134
130
|
#if GPR_LINUX
|
135
|
-
abs_deadline =
|
136
|
-
abs_deadline, GPR_CLOCK_MONOTONIC, now1, now2, add_result, sub_result);
|
131
|
+
abs_deadline = gpr_convert_clock_type(abs_deadline, GPR_CLOCK_MONOTONIC);
|
137
132
|
#else
|
138
|
-
abs_deadline =
|
139
|
-
abs_deadline, GPR_CLOCK_REALTIME, now1, now2, add_result, sub_result);
|
133
|
+
abs_deadline = gpr_convert_clock_type(abs_deadline, GPR_CLOCK_REALTIME);
|
140
134
|
#endif // GPR_LINUX
|
141
135
|
abs_deadline_ts.tv_sec = static_cast<time_t>(abs_deadline.tv_sec);
|
142
136
|
abs_deadline_ts.tv_nsec = abs_deadline.tv_nsec;
|
@@ -31,6 +31,7 @@
|
|
31
31
|
|
32
32
|
#include "src/core/lib/gpr/time_precise.h"
|
33
33
|
|
34
|
+
#ifndef GPR_CYCLE_COUNTER_CUSTOM
|
34
35
|
#if GPR_CYCLE_COUNTER_RDTSC_32 || GPR_CYCLE_COUNTER_RDTSC_64
|
35
36
|
#if GPR_LINUX
|
36
37
|
static bool read_freq_from_kernel(double* freq) {
|
@@ -163,3 +164,4 @@ gpr_timespec gpr_cycle_counter_sub(gpr_cycle_counter a, gpr_cycle_counter b) {
|
|
163
164
|
gpr_cycle_counter_to_time(b));
|
164
165
|
}
|
165
166
|
#endif /* GPR_CYCLE_COUNTER_FALLBACK */
|
167
|
+
#endif /* !GPR_CYCLE_COUNTER_CUSTOM */
|
@@ -31,7 +31,10 @@
|
|
31
31
|
// Using gpr_get_cycle_counter() is preferred to using ExecCtx::Get()->Now()
|
32
32
|
// whenever possible.
|
33
33
|
|
34
|
-
#if
|
34
|
+
#if GPR_CYCLE_COUNTER_CUSTOM
|
35
|
+
typedef int64_t gpr_cycle_counter;
|
36
|
+
gpr_cycle_counter gpr_get_cycle_counter();
|
37
|
+
#elif GPR_CYCLE_COUNTER_RDTSC_32
|
35
38
|
typedef int64_t gpr_cycle_counter;
|
36
39
|
inline gpr_cycle_counter gpr_get_cycle_counter() {
|
37
40
|
int64_t ret;
|
@@ -54,7 +57,8 @@ gpr_cycle_counter gpr_get_cycle_counter();
|
|
54
57
|
#else
|
55
58
|
#error Must define exactly one of \
|
56
59
|
GPR_CYCLE_COUNTER_RDTSC_32, \
|
57
|
-
GPR_CYCLE_COUNTER_RDTSC_64,
|
60
|
+
GPR_CYCLE_COUNTER_RDTSC_64, \
|
61
|
+
GPR_CYCLE_COUNTER_CUSTOM, or \
|
58
62
|
GPR_CYCLE_COUNTER_FALLBACK
|
59
63
|
#endif
|
60
64
|
|
@@ -0,0 +1,336 @@
|
|
1
|
+
//
|
2
|
+
// Copyright 2020 gRPC authors.
|
3
|
+
//
|
4
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
// you may not use this file except in compliance with the License.
|
6
|
+
// You may obtain a copy of the License at
|
7
|
+
//
|
8
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
//
|
10
|
+
// Unless required by applicable law or agreed to in writing, software
|
11
|
+
// distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
// See the License for the specific language governing permissions and
|
14
|
+
// limitations under the License.
|
15
|
+
//
|
16
|
+
|
17
|
+
#ifndef GRPC_CORE_LIB_GPRPP_DUAL_REF_COUNTED_H
|
18
|
+
#define GRPC_CORE_LIB_GPRPP_DUAL_REF_COUNTED_H
|
19
|
+
|
20
|
+
#include <grpc/support/port_platform.h>
|
21
|
+
|
22
|
+
#include <grpc/support/atm.h>
|
23
|
+
#include <grpc/support/log.h>
|
24
|
+
#include <grpc/support/sync.h>
|
25
|
+
|
26
|
+
#include <atomic>
|
27
|
+
#include <cassert>
|
28
|
+
#include <cinttypes>
|
29
|
+
|
30
|
+
#include "src/core/lib/debug/trace.h"
|
31
|
+
#include "src/core/lib/gprpp/atomic.h"
|
32
|
+
#include "src/core/lib/gprpp/debug_location.h"
|
33
|
+
#include "src/core/lib/gprpp/orphanable.h"
|
34
|
+
#include "src/core/lib/gprpp/ref_counted_ptr.h"
|
35
|
+
|
36
|
+
namespace grpc_core {
|
37
|
+
|
38
|
+
// DualRefCounted is an interface for reference-counted objects with two
|
39
|
+
// classes of refs: strong refs (usually just called "refs") and weak refs.
|
40
|
+
// This supports cases where an object needs to start shutting down when
|
41
|
+
// all external callers are done with it (represented by strong refs) but
|
42
|
+
// cannot be destroyed until all internal callbacks are complete
|
43
|
+
// (represented by weak refs).
|
44
|
+
//
|
45
|
+
// Each class of refs can be incremented and decremented independently.
|
46
|
+
// Objects start with 1 strong ref and 0 weak refs at instantiation.
|
47
|
+
// When the strong refcount reaches 0, the object's Orphan() method is called.
|
48
|
+
// When the weak refcount reaches 0, the object is destroyed.
|
49
|
+
//
|
50
|
+
// This will be used by CRTP (curiously-recurring template pattern), e.g.:
|
51
|
+
// class MyClass : public RefCounted<MyClass> { ... };
|
52
|
+
template <typename Child>
|
53
|
+
class DualRefCounted : public Orphanable {
|
54
|
+
public:
|
55
|
+
virtual ~DualRefCounted() = default;
|
56
|
+
|
57
|
+
RefCountedPtr<Child> Ref() GRPC_MUST_USE_RESULT {
|
58
|
+
IncrementRefCount();
|
59
|
+
return RefCountedPtr<Child>(static_cast<Child*>(this));
|
60
|
+
}
|
61
|
+
|
62
|
+
RefCountedPtr<Child> Ref(const DebugLocation& location,
|
63
|
+
const char* reason) GRPC_MUST_USE_RESULT {
|
64
|
+
IncrementRefCount(location, reason);
|
65
|
+
return RefCountedPtr<Child>(static_cast<Child*>(this));
|
66
|
+
}
|
67
|
+
|
68
|
+
void Unref() {
|
69
|
+
// Convert strong ref to weak ref.
|
70
|
+
const uint64_t prev_ref_pair =
|
71
|
+
refs_.FetchAdd(MakeRefPair(-1, 1), MemoryOrder::ACQ_REL);
|
72
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
73
|
+
#ifndef NDEBUG
|
74
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
75
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
76
|
+
gpr_log(GPR_INFO, "%s:%p unref %d -> %d, weak_ref %d -> %d",
|
77
|
+
trace_flag_->name(), this, strong_refs, strong_refs - 1,
|
78
|
+
weak_refs, weak_refs + 1);
|
79
|
+
}
|
80
|
+
GPR_ASSERT(strong_refs > 0);
|
81
|
+
#endif
|
82
|
+
if (GPR_UNLIKELY(strong_refs == 1)) {
|
83
|
+
Orphan();
|
84
|
+
}
|
85
|
+
// Now drop the weak ref.
|
86
|
+
WeakUnref();
|
87
|
+
}
|
88
|
+
void Unref(const DebugLocation& location, const char* reason) {
|
89
|
+
const uint64_t prev_ref_pair =
|
90
|
+
refs_.FetchAdd(MakeRefPair(-1, 1), MemoryOrder::ACQ_REL);
|
91
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
92
|
+
#ifndef NDEBUG
|
93
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
94
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
95
|
+
gpr_log(GPR_INFO, "%s:%p %s:%d unref %d -> %d, weak_ref %d -> %d) %s",
|
96
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
97
|
+
strong_refs, strong_refs - 1, weak_refs, weak_refs + 1, reason);
|
98
|
+
}
|
99
|
+
GPR_ASSERT(strong_refs > 0);
|
100
|
+
#else
|
101
|
+
// Avoid unused-parameter warnings for debug-only parameters
|
102
|
+
(void)location;
|
103
|
+
(void)reason;
|
104
|
+
#endif
|
105
|
+
if (GPR_UNLIKELY(strong_refs == 1)) {
|
106
|
+
Orphan();
|
107
|
+
}
|
108
|
+
// Now drop the weak ref.
|
109
|
+
WeakUnref(location, reason);
|
110
|
+
}
|
111
|
+
|
112
|
+
RefCountedPtr<Child> RefIfNonZero() GRPC_MUST_USE_RESULT {
|
113
|
+
uint64_t prev_ref_pair = refs_.Load(MemoryOrder::ACQUIRE);
|
114
|
+
do {
|
115
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
116
|
+
#ifndef NDEBUG
|
117
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
118
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
119
|
+
gpr_log(GPR_INFO, "%s:%p ref_if_non_zero %d -> %d (weak_refs=%d)",
|
120
|
+
trace_flag_->name(), this, strong_refs, strong_refs + 1,
|
121
|
+
weak_refs);
|
122
|
+
}
|
123
|
+
#endif
|
124
|
+
if (strong_refs == 0) return nullptr;
|
125
|
+
} while (!refs_.CompareExchangeWeak(
|
126
|
+
&prev_ref_pair, prev_ref_pair + MakeRefPair(1, 0), MemoryOrder::ACQ_REL,
|
127
|
+
MemoryOrder::ACQUIRE));
|
128
|
+
return RefCountedPtr<Child>(static_cast<Child*>(this));
|
129
|
+
}
|
130
|
+
|
131
|
+
RefCountedPtr<Child> RefIfNonZero(const DebugLocation& location,
|
132
|
+
const char* reason) GRPC_MUST_USE_RESULT {
|
133
|
+
uint64_t prev_ref_pair = refs_.Load(MemoryOrder::ACQUIRE);
|
134
|
+
do {
|
135
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
136
|
+
#ifndef NDEBUG
|
137
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
138
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
139
|
+
gpr_log(GPR_INFO,
|
140
|
+
"%s:%p %s:%d ref_if_non_zero %d -> %d (weak_refs=%d) %s",
|
141
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
142
|
+
strong_refs, strong_refs + 1, weak_refs, reason);
|
143
|
+
}
|
144
|
+
#else
|
145
|
+
// Avoid unused-parameter warnings for debug-only parameters
|
146
|
+
(void)location;
|
147
|
+
(void)reason;
|
148
|
+
#endif
|
149
|
+
if (strong_refs == 0) return nullptr;
|
150
|
+
} while (!refs_.CompareExchangeWeak(
|
151
|
+
&prev_ref_pair, prev_ref_pair + MakeRefPair(1, 0), MemoryOrder::ACQ_REL,
|
152
|
+
MemoryOrder::ACQUIRE));
|
153
|
+
return RefCountedPtr<Child>(static_cast<Child*>(this));
|
154
|
+
}
|
155
|
+
|
156
|
+
WeakRefCountedPtr<Child> WeakRef() GRPC_MUST_USE_RESULT {
|
157
|
+
IncrementWeakRefCount();
|
158
|
+
return WeakRefCountedPtr<Child>(static_cast<Child*>(this));
|
159
|
+
}
|
160
|
+
|
161
|
+
WeakRefCountedPtr<Child> WeakRef(const DebugLocation& location,
|
162
|
+
const char* reason) GRPC_MUST_USE_RESULT {
|
163
|
+
IncrementWeakRefCount(location, reason);
|
164
|
+
return WeakRefCountedPtr<Child>(static_cast<Child*>(this));
|
165
|
+
}
|
166
|
+
|
167
|
+
void WeakUnref() {
|
168
|
+
#ifndef NDEBUG
|
169
|
+
// Grab a copy of the trace flag before the atomic change, since we
|
170
|
+
// can't safely access it afterwards if we're going to be freed.
|
171
|
+
auto* trace_flag = trace_flag_;
|
172
|
+
#endif
|
173
|
+
const uint64_t prev_ref_pair =
|
174
|
+
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
|
175
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
176
|
+
#ifndef NDEBUG
|
177
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
178
|
+
if (trace_flag != nullptr && trace_flag->enabled()) {
|
179
|
+
gpr_log(GPR_INFO, "%s:%p weak_unref %d -> %d (refs=%d)",
|
180
|
+
trace_flag->name(), this, weak_refs, weak_refs - 1, strong_refs);
|
181
|
+
}
|
182
|
+
GPR_ASSERT(weak_refs > 0);
|
183
|
+
#endif
|
184
|
+
if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
|
185
|
+
delete static_cast<Child*>(this);
|
186
|
+
}
|
187
|
+
}
|
188
|
+
void WeakUnref(const DebugLocation& location, const char* reason) {
|
189
|
+
#ifndef NDEBUG
|
190
|
+
// Grab a copy of the trace flag before the atomic change, since we
|
191
|
+
// can't safely access it afterwards if we're going to be freed.
|
192
|
+
auto* trace_flag = trace_flag_;
|
193
|
+
#endif
|
194
|
+
const uint64_t prev_ref_pair =
|
195
|
+
refs_.FetchSub(MakeRefPair(0, 1), MemoryOrder::ACQ_REL);
|
196
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
197
|
+
#ifndef NDEBUG
|
198
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
199
|
+
if (trace_flag != nullptr && trace_flag->enabled()) {
|
200
|
+
gpr_log(GPR_INFO, "%s:%p %s:%d weak_unref %d -> %d (refs=%d) %s",
|
201
|
+
trace_flag->name(), this, location.file(), location.line(),
|
202
|
+
weak_refs, weak_refs - 1, strong_refs, reason);
|
203
|
+
}
|
204
|
+
GPR_ASSERT(weak_refs > 0);
|
205
|
+
#else
|
206
|
+
// Avoid unused-parameter warnings for debug-only parameters
|
207
|
+
(void)location;
|
208
|
+
(void)reason;
|
209
|
+
#endif
|
210
|
+
if (GPR_UNLIKELY(prev_ref_pair == MakeRefPair(0, 1))) {
|
211
|
+
delete static_cast<Child*>(this);
|
212
|
+
}
|
213
|
+
}
|
214
|
+
|
215
|
+
// Not copyable nor movable.
|
216
|
+
DualRefCounted(const DualRefCounted&) = delete;
|
217
|
+
DualRefCounted& operator=(const DualRefCounted&) = delete;
|
218
|
+
|
219
|
+
protected:
|
220
|
+
// TraceFlagT is defined to accept both DebugOnlyTraceFlag and TraceFlag.
|
221
|
+
// Note: RefCount tracing is only enabled on debug builds, even when a
|
222
|
+
// TraceFlag is used.
|
223
|
+
template <typename TraceFlagT = TraceFlag>
|
224
|
+
explicit DualRefCounted(
|
225
|
+
TraceFlagT*
|
226
|
+
#ifndef NDEBUG
|
227
|
+
// Leave unnamed if NDEBUG to avoid unused parameter warning
|
228
|
+
trace_flag
|
229
|
+
#endif
|
230
|
+
= nullptr,
|
231
|
+
int32_t initial_refcount = 1)
|
232
|
+
:
|
233
|
+
#ifndef NDEBUG
|
234
|
+
trace_flag_(trace_flag),
|
235
|
+
#endif
|
236
|
+
refs_(MakeRefPair(initial_refcount, 0)) {
|
237
|
+
}
|
238
|
+
|
239
|
+
private:
|
240
|
+
// Allow RefCountedPtr<> to access IncrementRefCount().
|
241
|
+
template <typename T>
|
242
|
+
friend class RefCountedPtr;
|
243
|
+
// Allow WeakRefCountedPtr<> to access IncrementWeakRefCount().
|
244
|
+
template <typename T>
|
245
|
+
friend class WeakRefCountedPtr;
|
246
|
+
|
247
|
+
// First 32 bits are strong refs, next 32 bits are weak refs.
|
248
|
+
static uint64_t MakeRefPair(uint32_t strong, uint32_t weak) {
|
249
|
+
return (static_cast<uint64_t>(strong) << 32) + static_cast<int64_t>(weak);
|
250
|
+
}
|
251
|
+
static uint32_t GetStrongRefs(uint64_t ref_pair) {
|
252
|
+
return static_cast<uint32_t>(ref_pair >> 32);
|
253
|
+
}
|
254
|
+
static uint32_t GetWeakRefs(uint64_t ref_pair) {
|
255
|
+
return static_cast<uint32_t>(ref_pair & 0xffffffffu);
|
256
|
+
}
|
257
|
+
|
258
|
+
void IncrementRefCount() {
|
259
|
+
#ifndef NDEBUG
|
260
|
+
const uint64_t prev_ref_pair =
|
261
|
+
refs_.FetchAdd(MakeRefPair(1, 0), MemoryOrder::RELAXED);
|
262
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
263
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
264
|
+
GPR_ASSERT(strong_refs != 0);
|
265
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
266
|
+
gpr_log(GPR_INFO, "%s:%p ref %d -> %d; (weak_refs=%d)",
|
267
|
+
trace_flag_->name(), this, strong_refs, strong_refs + 1,
|
268
|
+
weak_refs);
|
269
|
+
}
|
270
|
+
#else
|
271
|
+
refs_.FetchAdd(MakeRefPair(1, 0), MemoryOrder::RELAXED);
|
272
|
+
#endif
|
273
|
+
}
|
274
|
+
void IncrementRefCount(const DebugLocation& location, const char* reason) {
|
275
|
+
#ifndef NDEBUG
|
276
|
+
const uint64_t prev_ref_pair =
|
277
|
+
refs_.FetchAdd(MakeRefPair(1, 0), MemoryOrder::RELAXED);
|
278
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
279
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
280
|
+
GPR_ASSERT(strong_refs != 0);
|
281
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
282
|
+
gpr_log(GPR_INFO, "%s:%p %s:%d ref %d -> %d (weak_refs=%d) %s",
|
283
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
284
|
+
strong_refs, strong_refs + 1, weak_refs, reason);
|
285
|
+
}
|
286
|
+
#else
|
287
|
+
// Use conditionally-important parameters
|
288
|
+
(void)location;
|
289
|
+
(void)reason;
|
290
|
+
refs_.FetchAdd(MakeRefPair(1, 0), MemoryOrder::RELAXED);
|
291
|
+
#endif
|
292
|
+
}
|
293
|
+
|
294
|
+
void IncrementWeakRefCount() {
|
295
|
+
#ifndef NDEBUG
|
296
|
+
const uint64_t prev_ref_pair =
|
297
|
+
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
|
298
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
299
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
300
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
301
|
+
gpr_log(GPR_INFO, "%s:%p weak_ref %d -> %d; (refs=%d)",
|
302
|
+
trace_flag_->name(), this, weak_refs, weak_refs + 1, strong_refs);
|
303
|
+
}
|
304
|
+
#else
|
305
|
+
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
|
306
|
+
#endif
|
307
|
+
}
|
308
|
+
void IncrementWeakRefCount(const DebugLocation& location,
|
309
|
+
const char* reason) {
|
310
|
+
#ifndef NDEBUG
|
311
|
+
const uint64_t prev_ref_pair =
|
312
|
+
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
|
313
|
+
const uint32_t strong_refs = GetStrongRefs(prev_ref_pair);
|
314
|
+
const uint32_t weak_refs = GetWeakRefs(prev_ref_pair);
|
315
|
+
if (trace_flag_ != nullptr && trace_flag_->enabled()) {
|
316
|
+
gpr_log(GPR_INFO, "%s:%p %s:%d weak_ref %d -> %d (refs=%d) %s",
|
317
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
318
|
+
weak_refs, weak_refs + 1, strong_refs, reason);
|
319
|
+
}
|
320
|
+
#else
|
321
|
+
// Use conditionally-important parameters
|
322
|
+
(void)location;
|
323
|
+
(void)reason;
|
324
|
+
refs_.FetchAdd(MakeRefPair(0, 1), MemoryOrder::RELAXED);
|
325
|
+
#endif
|
326
|
+
}
|
327
|
+
|
328
|
+
#ifndef NDEBUG
|
329
|
+
TraceFlag* trace_flag_;
|
330
|
+
#endif
|
331
|
+
Atomic<uint64_t> refs_;
|
332
|
+
};
|
333
|
+
|
334
|
+
} // namespace grpc_core
|
335
|
+
|
336
|
+
#endif /* GRPC_CORE_LIB_GPRPP_DUAL_REF_COUNTED_H */
|