grpc 1.31.1 → 1.32.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +595 -15723
- data/include/grpc/grpc_security.h +31 -14
- data/include/grpc/impl/codegen/README.md +22 -0
- data/include/grpc/impl/codegen/port_platform.h +6 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +64 -20
- data/src/core/ext/filters/client_channel/client_channel.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +20 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +20 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
- data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +54 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +363 -14
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +5 -4
- data/src/core/ext/filters/client_channel/server_address.cc +40 -7
- data/src/core/ext/filters/client_channel/server_address.h +42 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +64 -23
- data/src/core/ext/filters/client_channel/subchannel.h +16 -4
- data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +19 -25
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -1
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +6 -6
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +239 -277
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +5 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +1 -28
- data/src/core/ext/transport/chttp2/transport/writing.cc +6 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +12 -12
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
- data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
- data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
- data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
- data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -8
- data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
- data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
- data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +36 -36
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +1 -1
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
- data/src/core/ext/upb-generated/validate/validate.upb.h +1 -1
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.cc +1045 -767
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +114 -99
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +44 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +85 -417
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
- data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +3 -3
- data/src/core/lib/channel/channelz.cc +14 -15
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/channelz_registry.cc +3 -1
- data/src/core/lib/gpr/sync_posix.cc +2 -8
- data/src/core/lib/iomgr/endpoint.cc +5 -1
- data/src/core/lib/iomgr/endpoint.h +7 -3
- data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
- data/src/core/lib/iomgr/ev_posix.cc +0 -2
- data/src/core/lib/iomgr/iomgr.cc +0 -10
- data/src/core/lib/iomgr/iomgr.h +0 -10
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
- data/src/core/lib/iomgr/sockaddr_utils.cc +2 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +2 -1
- data/src/core/lib/iomgr/tcp_custom.cc +32 -16
- data/src/core/lib/iomgr/tcp_posix.cc +31 -13
- data/src/core/lib/iomgr/tcp_windows.cc +26 -10
- data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
- data/src/core/lib/security/authorization/authorization_engine.h +84 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
- data/src/core/lib/security/authorization/evaluate_args.h +59 -0
- data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
- data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +56 -38
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -2
- data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
- data/src/core/lib/surface/call.cc +12 -12
- data/src/core/lib/surface/call.h +2 -1
- data/src/core/lib/surface/channel.cc +28 -20
- data/src/core/lib/surface/channel.h +12 -2
- data/src/core/lib/surface/completion_queue.cc +10 -272
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/init.cc +1 -3
- data/src/core/lib/surface/server.cc +1066 -1244
- data/src/core/lib/surface/server.h +363 -87
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/authority_override.cc +38 -0
- data/src/core/lib/transport/authority_override.h +32 -0
- data/src/core/lib/transport/connectivity_state.cc +18 -13
- data/src/core/lib/transport/connectivity_state.h +18 -6
- data/src/core/lib/transport/error_utils.cc +13 -0
- data/src/core/lib/transport/error_utils.h +6 -0
- data/src/core/lib/transport/static_metadata.cc +295 -276
- data/src/core/lib/transport/static_metadata.h +80 -73
- data/src/core/lib/transport/transport.h +7 -0
- data/src/core/lib/uri/uri_parser.cc +23 -21
- data/src/core/lib/uri/uri_parser.h +3 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +22 -0
- data/src/core/tsi/ssl_transport_security.cc +3 -9
- data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +10 -0
- data/src/ruby/spec/generic/active_call_spec.rb +19 -8
- data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
- data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
- data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
- data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
- data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
- data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
- data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
- data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
- data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
- data/third_party/abseil-cpp/absl/status/status.cc +447 -0
- data/third_party/abseil-cpp/absl/status/status.h +428 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
- data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
- data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
- data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
- data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
- data/third_party/abseil-cpp/absl/types/variant.h +861 -0
- data/third_party/boringssl-with-bazel/err_data.c +263 -257
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +39 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +11 -0
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +10 -0
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
- data/third_party/upb/upb/decode.c +64 -15
- data/third_party/upb/upb/encode.c +2 -2
- data/third_party/upb/upb/msg.h +2 -2
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +0 -11
- data/third_party/upb/upb/table.int.h +0 -9
- data/third_party/upb/upb/upb.c +16 -14
- data/third_party/upb/upb/upb.h +26 -0
- data/third_party/upb/upb/upb.hpp +2 -0
- metadata +257 -155
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
- data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -429
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
- data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -198
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
- data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -388
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1453
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -226
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -323
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -334
- data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -79
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -891
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -328
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
- data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -71
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -649
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -693
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -536
- data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -88
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -386
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -224
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -273
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -332
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -415
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -538
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -204
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -32
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -2984
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -135
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -52
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -732
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1167
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
- data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
- data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -49
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
- data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -136
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -145
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
- data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -86
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -111
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -61
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -250
- data/src/core/lib/security/transport/target_authority_table.cc +0 -75
- data/src/core/lib/security/transport/target_authority_table.h +0 -40
- data/src/core/lib/slice/slice_hash_table.h +0 -199
- data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
@@ -245,7 +245,7 @@ struct grpc_call {
|
|
245
245
|
struct {
|
246
246
|
int* cancelled;
|
247
247
|
// backpointer to owning server if this is a server side call.
|
248
|
-
|
248
|
+
grpc_core::Server* core_server;
|
249
249
|
} server;
|
250
250
|
} final_op;
|
251
251
|
gpr_atm status_error = 0;
|
@@ -374,7 +374,7 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
374
374
|
} else {
|
375
375
|
GRPC_STATS_INC_SERVER_CALLS_CREATED();
|
376
376
|
call->final_op.server.cancelled = nullptr;
|
377
|
-
call->final_op.server.
|
377
|
+
call->final_op.server.core_server = args->server;
|
378
378
|
GPR_ASSERT(args->add_initial_metadata_count == 0);
|
379
379
|
call->send_extra_metadata_count = 0;
|
380
380
|
}
|
@@ -476,11 +476,11 @@ grpc_error* grpc_call_create(const grpc_call_create_args* args,
|
|
476
476
|
if (channelz_channel != nullptr) {
|
477
477
|
channelz_channel->RecordCallStarted();
|
478
478
|
}
|
479
|
-
} else {
|
480
|
-
grpc_core::channelz::ServerNode*
|
481
|
-
|
482
|
-
if (
|
483
|
-
|
479
|
+
} else if (call->final_op.server.core_server != nullptr) {
|
480
|
+
grpc_core::channelz::ServerNode* channelz_node =
|
481
|
+
call->final_op.server.core_server->channelz_node();
|
482
|
+
if (channelz_node != nullptr) {
|
483
|
+
channelz_node->RecordCallStarted();
|
484
484
|
}
|
485
485
|
}
|
486
486
|
|
@@ -759,15 +759,15 @@ static void set_final_status(grpc_call* call, grpc_error* error) {
|
|
759
759
|
} else {
|
760
760
|
*call->final_op.server.cancelled =
|
761
761
|
error != GRPC_ERROR_NONE || !call->sent_server_trailing_metadata;
|
762
|
-
grpc_core::channelz::ServerNode*
|
763
|
-
|
764
|
-
if (
|
762
|
+
grpc_core::channelz::ServerNode* channelz_node =
|
763
|
+
call->final_op.server.core_server->channelz_node();
|
764
|
+
if (channelz_node != nullptr) {
|
765
765
|
if (*call->final_op.server.cancelled ||
|
766
766
|
reinterpret_cast<grpc_error*>(
|
767
767
|
gpr_atm_acq_load(&call->status_error)) != GRPC_ERROR_NONE) {
|
768
|
-
|
768
|
+
channelz_node->RecordCallFailed();
|
769
769
|
} else {
|
770
|
-
|
770
|
+
channelz_node->RecordCallSucceeded();
|
771
771
|
}
|
772
772
|
}
|
773
773
|
GRPC_ERROR_UNREF(error);
|
data/src/core/lib/surface/call.h
CHANGED
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "src/core/lib/channel/context.h"
|
26
26
|
#include "src/core/lib/gprpp/arena.h"
|
27
27
|
#include "src/core/lib/surface/api_trace.h"
|
28
|
+
#include "src/core/lib/surface/server.h"
|
28
29
|
|
29
30
|
#include <grpc/grpc.h>
|
30
31
|
#include <grpc/impl/codegen/compression_types.h>
|
@@ -34,7 +35,7 @@ typedef void (*grpc_ioreq_completion_func)(grpc_call* call, int success,
|
|
34
35
|
|
35
36
|
typedef struct grpc_call_create_args {
|
36
37
|
grpc_channel* channel;
|
37
|
-
|
38
|
+
grpc_core::Server* server;
|
38
39
|
|
39
40
|
grpc_call* parent;
|
40
41
|
uint32_t propagation_mask;
|
@@ -415,26 +415,33 @@ grpc_call* grpc_channel_create_pollset_set_call(
|
|
415
415
|
|
416
416
|
namespace grpc_core {
|
417
417
|
|
418
|
-
RegisteredCall::RegisteredCall(const char*
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
418
|
+
RegisteredCall::RegisteredCall(const char* method_arg, const char* host_arg)
|
419
|
+
: method(method_arg != nullptr ? method_arg : ""),
|
420
|
+
host(host_arg != nullptr ? host_arg : ""),
|
421
|
+
path(grpc_mdelem_from_slices(
|
422
|
+
GRPC_MDSTR_PATH, grpc_core::ExternallyManagedSlice(method.c_str()))),
|
423
|
+
authority(!host.empty()
|
424
|
+
? grpc_mdelem_from_slices(
|
425
|
+
GRPC_MDSTR_AUTHORITY,
|
426
|
+
grpc_core::ExternallyManagedSlice(host.c_str()))
|
427
|
+
: GRPC_MDNULL) {}
|
426
428
|
|
427
429
|
// TODO(vjpai): Delete copy-constructor when allowed by all supported compilers.
|
428
|
-
RegisteredCall::RegisteredCall(const RegisteredCall& other)
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
430
|
+
RegisteredCall::RegisteredCall(const RegisteredCall& other)
|
431
|
+
: RegisteredCall(other.method.c_str(), other.host.c_str()) {}
|
432
|
+
|
433
|
+
RegisteredCall::RegisteredCall(RegisteredCall&& other) noexcept
|
434
|
+
: method(std::move(other.method)),
|
435
|
+
host(std::move(other.host)),
|
436
|
+
path(grpc_mdelem_from_slices(
|
437
|
+
GRPC_MDSTR_PATH, grpc_core::ExternallyManagedSlice(method.c_str()))),
|
438
|
+
authority(!host.empty()
|
439
|
+
? grpc_mdelem_from_slices(
|
440
|
+
GRPC_MDSTR_AUTHORITY,
|
441
|
+
grpc_core::ExternallyManagedSlice(host.c_str()))
|
442
|
+
: GRPC_MDNULL) {
|
443
|
+
GRPC_MDELEM_UNREF(other.path);
|
444
|
+
GRPC_MDELEM_UNREF(other.authority);
|
438
445
|
other.path = GRPC_MDNULL;
|
439
446
|
other.authority = GRPC_MDNULL;
|
440
447
|
}
|
@@ -457,13 +464,14 @@ void* grpc_channel_register_call(grpc_channel* channel, const char* method,
|
|
457
464
|
|
458
465
|
grpc_core::MutexLock lock(&channel->registration_table->mu);
|
459
466
|
channel->registration_table->method_registration_attempts++;
|
460
|
-
auto key = std::make_pair(host
|
467
|
+
auto key = std::make_pair(std::string(host != nullptr ? host : ""),
|
468
|
+
std::string(method != nullptr ? method : ""));
|
461
469
|
auto rc_posn = channel->registration_table->map.find(key);
|
462
470
|
if (rc_posn != channel->registration_table->map.end()) {
|
463
471
|
return &rc_posn->second;
|
464
472
|
}
|
465
473
|
auto insertion_result = channel->registration_table->map.insert(
|
466
|
-
{key, grpc_core::RegisteredCall(method, host)});
|
474
|
+
{std::move(key), grpc_core::RegisteredCall(method, host)});
|
467
475
|
return &insertion_result.first->second;
|
468
476
|
}
|
469
477
|
|
@@ -69,21 +69,31 @@ void grpc_channel_update_call_size_estimate(grpc_channel* channel, size_t size);
|
|
69
69
|
namespace grpc_core {
|
70
70
|
|
71
71
|
struct RegisteredCall {
|
72
|
+
// The method and host are kept as part of this struct just to manage their
|
73
|
+
// lifetime since they must outlive the mdelem contents.
|
74
|
+
std::string method;
|
75
|
+
std::string host;
|
76
|
+
|
72
77
|
grpc_mdelem path;
|
73
78
|
grpc_mdelem authority;
|
74
79
|
|
75
|
-
explicit RegisteredCall(const char*
|
80
|
+
explicit RegisteredCall(const char* method_arg, const char* host_arg);
|
76
81
|
// TODO(vjpai): delete copy constructor once all supported compilers allow
|
77
82
|
// std::map value_type to be MoveConstructible.
|
78
83
|
RegisteredCall(const RegisteredCall& other);
|
79
84
|
RegisteredCall(RegisteredCall&& other) noexcept;
|
85
|
+
RegisteredCall& operator=(const RegisteredCall&) = delete;
|
86
|
+
RegisteredCall& operator=(RegisteredCall&&) = delete;
|
80
87
|
|
81
88
|
~RegisteredCall();
|
82
89
|
};
|
83
90
|
|
84
91
|
struct CallRegistrationTable {
|
85
92
|
grpc_core::Mutex mu;
|
86
|
-
|
93
|
+
// The map key should be owned strings rather than unowned char*'s to
|
94
|
+
// guarantee that it outlives calls on the core channel (which may outlast the
|
95
|
+
// C++ or other wrapped language Channel that registered these calls).
|
96
|
+
std::map<std::pair<std::string, std::string>, RegisteredCall>
|
87
97
|
map /* GUARDED_BY(mu) */;
|
88
98
|
int method_registration_attempts /* GUARDED_BY(mu) */ = 0;
|
89
99
|
};
|
@@ -39,7 +39,6 @@
|
|
39
39
|
#include "src/core/lib/gpr/string.h"
|
40
40
|
#include "src/core/lib/gpr/tls.h"
|
41
41
|
#include "src/core/lib/gprpp/atomic.h"
|
42
|
-
#include "src/core/lib/iomgr/closure.h"
|
43
42
|
#include "src/core/lib/iomgr/executor.h"
|
44
43
|
#include "src/core/lib/iomgr/pollset.h"
|
45
44
|
#include "src/core/lib/iomgr/timer.h"
|
@@ -209,9 +208,6 @@ struct cq_vtable {
|
|
209
208
|
void* reserved);
|
210
209
|
grpc_event (*pluck)(grpc_completion_queue* cq, void* tag,
|
211
210
|
gpr_timespec deadline, void* reserved);
|
212
|
-
// TODO(vjpai): Remove proxy_pollset once callback_alternative no longer
|
213
|
-
// needed.
|
214
|
-
grpc_pollset* (*proxy_pollset)(grpc_completion_queue* cq);
|
215
211
|
};
|
216
212
|
|
217
213
|
namespace {
|
@@ -313,7 +309,7 @@ struct cq_pluck_data {
|
|
313
309
|
};
|
314
310
|
|
315
311
|
struct cq_callback_data {
|
316
|
-
|
312
|
+
cq_callback_data(
|
317
313
|
grpc_experimental_completion_queue_functor* shutdown_callback)
|
318
314
|
: shutdown_callback(shutdown_callback) {}
|
319
315
|
|
@@ -338,81 +334,6 @@ struct cq_callback_data {
|
|
338
334
|
grpc_experimental_completion_queue_functor* shutdown_callback;
|
339
335
|
};
|
340
336
|
|
341
|
-
// TODO(vjpai): Remove all callback_alternative variants when event manager is
|
342
|
-
// the only supported poller.
|
343
|
-
struct cq_callback_alternative_data {
|
344
|
-
explicit cq_callback_alternative_data(
|
345
|
-
grpc_experimental_completion_queue_functor* shutdown_callback)
|
346
|
-
: implementation(SharedNextableCQ()),
|
347
|
-
shutdown_callback(shutdown_callback) {}
|
348
|
-
|
349
|
-
/* This just points to a single shared nextable CQ */
|
350
|
-
grpc_completion_queue* const implementation;
|
351
|
-
|
352
|
-
/** Number of outstanding events (+1 if not shut down)
|
353
|
-
Initial count is dropped by grpc_completion_queue_shutdown */
|
354
|
-
grpc_core::Atomic<intptr_t> pending_events{1};
|
355
|
-
|
356
|
-
/** 0 initially. 1 once we initiated shutdown */
|
357
|
-
bool shutdown_called = false;
|
358
|
-
|
359
|
-
/** A callback that gets invoked when the CQ completes shutdown */
|
360
|
-
grpc_experimental_completion_queue_functor* shutdown_callback;
|
361
|
-
|
362
|
-
static grpc_completion_queue* SharedNextableCQ() {
|
363
|
-
grpc_core::MutexLock lock(&*shared_cq_next_mu);
|
364
|
-
|
365
|
-
if (shared_cq_next == nullptr) {
|
366
|
-
shared_cq_next = grpc_completion_queue_create_for_next(nullptr);
|
367
|
-
int num_nexting_threads = GPR_CLAMP(gpr_cpu_num_cores(), 1, 32);
|
368
|
-
threads_remaining.Store(num_nexting_threads,
|
369
|
-
grpc_core::MemoryOrder::RELEASE);
|
370
|
-
for (int i = 0; i < num_nexting_threads; i++) {
|
371
|
-
grpc_core::Executor::Run(
|
372
|
-
GRPC_CLOSURE_CREATE(
|
373
|
-
[](void* arg, grpc_error* /*error*/) {
|
374
|
-
grpc_completion_queue* cq =
|
375
|
-
static_cast<grpc_completion_queue*>(arg);
|
376
|
-
while (true) {
|
377
|
-
grpc_event event = grpc_completion_queue_next(
|
378
|
-
cq, gpr_inf_future(GPR_CLOCK_REALTIME), nullptr);
|
379
|
-
if (event.type == GRPC_QUEUE_SHUTDOWN) {
|
380
|
-
break;
|
381
|
-
}
|
382
|
-
GPR_DEBUG_ASSERT(event.type == GRPC_OP_COMPLETE);
|
383
|
-
// We can always execute the callback inline rather than
|
384
|
-
// pushing it to another Executor thread because this
|
385
|
-
// thread is definitely running on an executor, does not
|
386
|
-
// hold any application locks before executing the callback,
|
387
|
-
// and cannot be entered recursively.
|
388
|
-
auto* functor = static_cast<
|
389
|
-
grpc_experimental_completion_queue_functor*>(event.tag);
|
390
|
-
functor->functor_run(functor, event.success);
|
391
|
-
}
|
392
|
-
if (threads_remaining.FetchSub(
|
393
|
-
1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
|
394
|
-
grpc_completion_queue_destroy(cq);
|
395
|
-
}
|
396
|
-
},
|
397
|
-
shared_cq_next, nullptr),
|
398
|
-
GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
|
399
|
-
grpc_core::ExecutorJobType::LONG);
|
400
|
-
}
|
401
|
-
}
|
402
|
-
return shared_cq_next;
|
403
|
-
}
|
404
|
-
// Use manually-constructed Mutex to avoid static construction issues
|
405
|
-
static grpc_core::ManualConstructor<grpc_core::Mutex> shared_cq_next_mu;
|
406
|
-
static grpc_completion_queue*
|
407
|
-
shared_cq_next; // GUARDED_BY(shared_cq_next_mu)
|
408
|
-
static grpc_core::Atomic<int> threads_remaining;
|
409
|
-
};
|
410
|
-
|
411
|
-
grpc_core::ManualConstructor<grpc_core::Mutex>
|
412
|
-
cq_callback_alternative_data::shared_cq_next_mu;
|
413
|
-
grpc_completion_queue* cq_callback_alternative_data::shared_cq_next = nullptr;
|
414
|
-
grpc_core::Atomic<int> cq_callback_alternative_data::threads_remaining{0};
|
415
|
-
|
416
337
|
} // namespace
|
417
338
|
|
418
339
|
/* Completion queue structure */
|
@@ -425,12 +346,6 @@ struct grpc_completion_queue {
|
|
425
346
|
const cq_vtable* vtable;
|
426
347
|
const cq_poller_vtable* poller_vtable;
|
427
348
|
|
428
|
-
// The pollset entry is allowed to enable proxy CQs like the
|
429
|
-
// callback_alternative.
|
430
|
-
// TODO(vjpai): Consider removing pollset and reverting to previous
|
431
|
-
// calculation of pollset once callback_alternative is no longer needed.
|
432
|
-
grpc_pollset* pollset;
|
433
|
-
|
434
349
|
#ifndef NDEBUG
|
435
350
|
void** outstanding_tags;
|
436
351
|
size_t outstanding_tag_count;
|
@@ -445,17 +360,13 @@ struct grpc_completion_queue {
|
|
445
360
|
static void cq_finish_shutdown_next(grpc_completion_queue* cq);
|
446
361
|
static void cq_finish_shutdown_pluck(grpc_completion_queue* cq);
|
447
362
|
static void cq_finish_shutdown_callback(grpc_completion_queue* cq);
|
448
|
-
static void cq_finish_shutdown_callback_alternative(grpc_completion_queue* cq);
|
449
363
|
static void cq_shutdown_next(grpc_completion_queue* cq);
|
450
364
|
static void cq_shutdown_pluck(grpc_completion_queue* cq);
|
451
365
|
static void cq_shutdown_callback(grpc_completion_queue* cq);
|
452
|
-
static void cq_shutdown_callback_alternative(grpc_completion_queue* cq);
|
453
366
|
|
454
367
|
static bool cq_begin_op_for_next(grpc_completion_queue* cq, void* tag);
|
455
368
|
static bool cq_begin_op_for_pluck(grpc_completion_queue* cq, void* tag);
|
456
369
|
static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* tag);
|
457
|
-
static bool cq_begin_op_for_callback_alternative(grpc_completion_queue* cq,
|
458
|
-
void* tag);
|
459
370
|
|
460
371
|
// A cq_end_op function is called when an operation on a given CQ with
|
461
372
|
// a given tag has completed. The storage argument is a reference to the
|
@@ -478,20 +389,12 @@ static void cq_end_op_for_callback(
|
|
478
389
|
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
479
390
|
grpc_cq_completion* storage, bool internal);
|
480
391
|
|
481
|
-
static void cq_end_op_for_callback_alternative(
|
482
|
-
grpc_completion_queue* cq, void* tag, grpc_error* error,
|
483
|
-
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
484
|
-
grpc_cq_completion* storage, bool internal);
|
485
|
-
|
486
392
|
static grpc_event cq_next(grpc_completion_queue* cq, gpr_timespec deadline,
|
487
393
|
void* reserved);
|
488
394
|
|
489
395
|
static grpc_event cq_pluck(grpc_completion_queue* cq, void* tag,
|
490
396
|
gpr_timespec deadline, void* reserved);
|
491
397
|
|
492
|
-
static grpc_pollset* cq_proxy_pollset_for_callback_alternative(
|
493
|
-
grpc_completion_queue* cq);
|
494
|
-
|
495
398
|
// Note that cq_init_next and cq_init_pluck do not use the shutdown_callback
|
496
399
|
static void cq_init_next(
|
497
400
|
void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
|
@@ -499,39 +402,29 @@ static void cq_init_pluck(
|
|
499
402
|
void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
|
500
403
|
static void cq_init_callback(
|
501
404
|
void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
|
502
|
-
// poller becomes only option.
|
503
|
-
static void cq_init_callback_alternative(
|
504
|
-
void* data, grpc_experimental_completion_queue_functor* shutdown_callback);
|
505
405
|
static void cq_destroy_next(void* data);
|
506
406
|
static void cq_destroy_pluck(void* data);
|
507
407
|
static void cq_destroy_callback(void* data);
|
508
|
-
static void cq_destroy_callback_alternative(void* data);
|
509
408
|
|
510
409
|
/* Completion queue vtables based on the completion-type */
|
511
|
-
|
512
|
-
static cq_vtable g_polling_cq_vtable[] = {
|
410
|
+
static const cq_vtable g_cq_vtable[] = {
|
513
411
|
/* GRPC_CQ_NEXT */
|
514
412
|
{GRPC_CQ_NEXT, sizeof(cq_next_data), cq_init_next, cq_shutdown_next,
|
515
413
|
cq_destroy_next, cq_begin_op_for_next, cq_end_op_for_next, cq_next,
|
516
|
-
nullptr
|
414
|
+
nullptr},
|
517
415
|
/* GRPC_CQ_PLUCK */
|
518
416
|
{GRPC_CQ_PLUCK, sizeof(cq_pluck_data), cq_init_pluck, cq_shutdown_pluck,
|
519
417
|
cq_destroy_pluck, cq_begin_op_for_pluck, cq_end_op_for_pluck, nullptr,
|
520
|
-
cq_pluck
|
418
|
+
cq_pluck},
|
521
419
|
/* GRPC_CQ_CALLBACK */
|
522
420
|
{GRPC_CQ_CALLBACK, sizeof(cq_callback_data), cq_init_callback,
|
523
421
|
cq_shutdown_callback, cq_destroy_callback, cq_begin_op_for_callback,
|
524
|
-
cq_end_op_for_callback, nullptr, nullptr
|
422
|
+
cq_end_op_for_callback, nullptr, nullptr},
|
525
423
|
};
|
526
424
|
|
527
|
-
// Separate vtable for non-polling cqs, assign at init
|
528
|
-
static cq_vtable g_nonpolling_cq_vtable[sizeof(g_polling_cq_vtable) /
|
529
|
-
sizeof(g_polling_cq_vtable[0])];
|
530
|
-
|
531
425
|
#define DATA_FROM_CQ(cq) ((void*)(cq + 1))
|
532
|
-
#define
|
426
|
+
#define POLLSET_FROM_CQ(cq) \
|
533
427
|
((grpc_pollset*)(cq->vtable->data_size + (char*)DATA_FROM_CQ(cq)))
|
534
|
-
#define POLLSET_FROM_CQ(cq) (cq->pollset)
|
535
428
|
|
536
429
|
grpc_core::TraceFlag grpc_cq_pluck_trace(false, "queue_pluck");
|
537
430
|
|
@@ -550,46 +443,6 @@ static void on_pollset_shutdown_done(void* cq, grpc_error* error);
|
|
550
443
|
void grpc_cq_global_init() {
|
551
444
|
gpr_tls_init(&g_cached_event);
|
552
445
|
gpr_tls_init(&g_cached_cq);
|
553
|
-
g_nonpolling_cq_vtable[GRPC_CQ_NEXT] = g_polling_cq_vtable[GRPC_CQ_NEXT];
|
554
|
-
g_nonpolling_cq_vtable[GRPC_CQ_PLUCK] = g_polling_cq_vtable[GRPC_CQ_PLUCK];
|
555
|
-
g_nonpolling_cq_vtable[GRPC_CQ_CALLBACK] =
|
556
|
-
g_polling_cq_vtable[GRPC_CQ_CALLBACK];
|
557
|
-
}
|
558
|
-
|
559
|
-
// TODO(vjpai): Remove when callback_alternative is no longer needed
|
560
|
-
void grpc_cq_init() {
|
561
|
-
// If the iomgr runs in the background, we can use the preferred callback CQ.
|
562
|
-
// If the iomgr is non-polling, we cannot use the alternative callback CQ.
|
563
|
-
if (!grpc_iomgr_run_in_background() && !grpc_iomgr_non_polling()) {
|
564
|
-
cq_callback_alternative_data::shared_cq_next_mu.Init();
|
565
|
-
g_polling_cq_vtable[GRPC_CQ_CALLBACK] = {
|
566
|
-
GRPC_CQ_CALLBACK,
|
567
|
-
sizeof(cq_callback_alternative_data),
|
568
|
-
cq_init_callback_alternative,
|
569
|
-
cq_shutdown_callback_alternative,
|
570
|
-
cq_destroy_callback_alternative,
|
571
|
-
cq_begin_op_for_callback_alternative,
|
572
|
-
cq_end_op_for_callback_alternative,
|
573
|
-
nullptr,
|
574
|
-
nullptr,
|
575
|
-
cq_proxy_pollset_for_callback_alternative};
|
576
|
-
}
|
577
|
-
}
|
578
|
-
|
579
|
-
// TODO(vjpai): Remove when callback_alternative is no longer needed
|
580
|
-
void grpc_cq_shutdown() {
|
581
|
-
if (!grpc_iomgr_run_in_background() && !grpc_iomgr_non_polling()) {
|
582
|
-
{
|
583
|
-
grpc_core::MutexLock lock(
|
584
|
-
&*cq_callback_alternative_data::shared_cq_next_mu);
|
585
|
-
if (cq_callback_alternative_data::shared_cq_next != nullptr) {
|
586
|
-
grpc_completion_queue_shutdown(
|
587
|
-
cq_callback_alternative_data::shared_cq_next);
|
588
|
-
}
|
589
|
-
cq_callback_alternative_data::shared_cq_next = nullptr;
|
590
|
-
}
|
591
|
-
cq_callback_alternative_data::shared_cq_next_mu.Destroy();
|
592
|
-
}
|
593
446
|
}
|
594
447
|
|
595
448
|
void grpc_completion_queue_thread_local_cache_init(grpc_completion_queue* cq) {
|
@@ -668,9 +521,7 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
|
|
668
521
|
"polling_type=%d)",
|
669
522
|
2, (completion_type, polling_type));
|
670
523
|
|
671
|
-
const cq_vtable* vtable =
|
672
|
-
? &g_nonpolling_cq_vtable[completion_type]
|
673
|
-
: &g_polling_cq_vtable[completion_type];
|
524
|
+
const cq_vtable* vtable = &g_cq_vtable[completion_type];
|
674
525
|
const cq_poller_vtable* poller_vtable =
|
675
526
|
&g_poller_vtable_by_poller_type[polling_type];
|
676
527
|
|
@@ -687,18 +538,9 @@ grpc_completion_queue* grpc_completion_queue_create_internal(
|
|
687
538
|
/* One for destroy(), one for pollset_shutdown */
|
688
539
|
new (&cq->owning_refs) grpc_core::RefCount(2);
|
689
540
|
|
541
|
+
poller_vtable->init(POLLSET_FROM_CQ(cq), &cq->mu);
|
690
542
|
vtable->init(DATA_FROM_CQ(cq), shutdown_callback);
|
691
543
|
|
692
|
-
// TODO(vjpai): When callback_alternative is no longer needed, cq->pollset can
|
693
|
-
// be removed and the nullptr proxy_pollset value below can be the definition
|
694
|
-
// of POLLSET_FROM_CQ.
|
695
|
-
cq->pollset = cq->vtable->proxy_pollset == nullptr
|
696
|
-
? INLINE_POLLSET_FROM_CQ(cq)
|
697
|
-
: cq->vtable->proxy_pollset(cq);
|
698
|
-
// Init the inline pollset. If a proxy CQ is used, the proxy pollset will be
|
699
|
-
// init'ed in its CQ init.
|
700
|
-
cq->poller_vtable->init(INLINE_POLLSET_FROM_CQ(cq), &cq->mu);
|
701
|
-
|
702
544
|
GRPC_CLOSURE_INIT(&cq->pollset_shutdown_done, on_pollset_shutdown_done, cq,
|
703
545
|
grpc_schedule_on_exec_ctx);
|
704
546
|
return cq;
|
@@ -736,17 +578,6 @@ static void cq_destroy_callback(void* data) {
|
|
736
578
|
cqd->~cq_callback_data();
|
737
579
|
}
|
738
580
|
|
739
|
-
static void cq_init_callback_alternative(
|
740
|
-
void* data, grpc_experimental_completion_queue_functor* shutdown_callback) {
|
741
|
-
new (data) cq_callback_alternative_data(shutdown_callback);
|
742
|
-
}
|
743
|
-
|
744
|
-
static void cq_destroy_callback_alternative(void* data) {
|
745
|
-
cq_callback_alternative_data* cqd =
|
746
|
-
static_cast<cq_callback_alternative_data*>(data);
|
747
|
-
cqd->~cq_callback_alternative_data();
|
748
|
-
}
|
749
|
-
|
750
581
|
grpc_cq_completion_type grpc_get_cq_completion_type(grpc_completion_queue* cq) {
|
751
582
|
return cq->vtable->cq_completion_type;
|
752
583
|
}
|
@@ -787,9 +618,7 @@ void grpc_cq_internal_unref(grpc_completion_queue* cq) {
|
|
787
618
|
#endif
|
788
619
|
if (GPR_UNLIKELY(cq->owning_refs.Unref(debug_location, reason))) {
|
789
620
|
cq->vtable->destroy(DATA_FROM_CQ(cq));
|
790
|
-
|
791
|
-
// pollset will be destroyed by the proxy CQ.
|
792
|
-
cq->poller_vtable->destroy(INLINE_POLLSET_FROM_CQ(cq));
|
621
|
+
cq->poller_vtable->destroy(POLLSET_FROM_CQ(cq));
|
793
622
|
#ifndef NDEBUG
|
794
623
|
gpr_free(cq->outstanding_tags);
|
795
624
|
#endif
|
@@ -840,14 +669,6 @@ static bool cq_begin_op_for_callback(grpc_completion_queue* cq, void* /*tag*/) {
|
|
840
669
|
return cqd->pending_events.IncrementIfNonzero();
|
841
670
|
}
|
842
671
|
|
843
|
-
static bool cq_begin_op_for_callback_alternative(grpc_completion_queue* cq,
|
844
|
-
void* tag) {
|
845
|
-
cq_callback_alternative_data* cqd =
|
846
|
-
static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
|
847
|
-
return grpc_cq_begin_op(cqd->implementation, tag) &&
|
848
|
-
cqd->pending_events.IncrementIfNonzero();
|
849
|
-
}
|
850
|
-
|
851
672
|
bool grpc_cq_begin_op(grpc_completion_queue* cq, void* tag) {
|
852
673
|
#ifndef NDEBUG
|
853
674
|
gpr_mu_lock(cq->mu);
|
@@ -1011,7 +832,7 @@ static void cq_end_op_for_pluck(
|
|
1011
832
|
GRPC_ERROR_UNREF(error);
|
1012
833
|
}
|
1013
834
|
|
1014
|
-
void functor_callback(void* arg, grpc_error* error) {
|
835
|
+
static void functor_callback(void* arg, grpc_error* error) {
|
1015
836
|
auto* functor = static_cast<grpc_experimental_completion_queue_functor*>(arg);
|
1016
837
|
functor->functor_run(functor, error == GRPC_ERROR_NONE);
|
1017
838
|
}
|
@@ -1071,40 +892,6 @@ static void cq_end_op_for_callback(
|
|
1071
892
|
GRPC_CLOSURE_CREATE(functor_callback, functor, nullptr), error);
|
1072
893
|
}
|
1073
894
|
|
1074
|
-
static void cq_end_op_for_callback_alternative(
|
1075
|
-
grpc_completion_queue* cq, void* tag, grpc_error* error,
|
1076
|
-
void (*done)(void* done_arg, grpc_cq_completion* storage), void* done_arg,
|
1077
|
-
grpc_cq_completion* storage, bool internal) {
|
1078
|
-
GPR_TIMER_SCOPE("cq_end_op_for_callback_alternative", 0);
|
1079
|
-
|
1080
|
-
cq_callback_alternative_data* cqd =
|
1081
|
-
static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
|
1082
|
-
|
1083
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_api_trace) ||
|
1084
|
-
(GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
1085
|
-
error != GRPC_ERROR_NONE)) {
|
1086
|
-
const char* errmsg = grpc_error_string(error);
|
1087
|
-
GRPC_API_TRACE(
|
1088
|
-
"cq_end_op_for_callback_alternative(cq=%p, tag=%p, error=%s, "
|
1089
|
-
"done=%p, done_arg=%p, storage=%p)",
|
1090
|
-
6, (cq, tag, errmsg, done, done_arg, storage));
|
1091
|
-
if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_operation_failures) &&
|
1092
|
-
error != GRPC_ERROR_NONE) {
|
1093
|
-
gpr_log(GPR_ERROR, "Operation failed: tag=%p, error=%s", tag, errmsg);
|
1094
|
-
}
|
1095
|
-
}
|
1096
|
-
|
1097
|
-
// Pass through the actual work to the internal nextable CQ
|
1098
|
-
grpc_cq_end_op(cqd->implementation, tag, error, done, done_arg, storage,
|
1099
|
-
internal);
|
1100
|
-
|
1101
|
-
cq_check_tag(cq, tag, true); /* Used in debug builds only */
|
1102
|
-
|
1103
|
-
if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
|
1104
|
-
cq_finish_shutdown_callback_alternative(cq);
|
1105
|
-
}
|
1106
|
-
}
|
1107
|
-
|
1108
895
|
void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
|
1109
896
|
void (*done)(void* done_arg, grpc_cq_completion* storage),
|
1110
897
|
void* done_arg, grpc_cq_completion* storage,
|
@@ -1112,13 +899,6 @@ void grpc_cq_end_op(grpc_completion_queue* cq, void* tag, grpc_error* error,
|
|
1112
899
|
cq->vtable->end_op(cq, tag, error, done, done_arg, storage, internal);
|
1113
900
|
}
|
1114
901
|
|
1115
|
-
static grpc_pollset* cq_proxy_pollset_for_callback_alternative(
|
1116
|
-
grpc_completion_queue* cq) {
|
1117
|
-
cq_callback_alternative_data* cqd =
|
1118
|
-
static_cast<cq_callback_alternative_data*>(DATA_FROM_CQ(cq));
|
1119
|
-
return POLLSET_FROM_CQ(cqd->implementation);
|
1120
|
-
}
|
1121
|
-
|
1122
902
|
struct cq_is_finished_arg {
|
1123
903
|
gpr_atm last_seen_things_queued_ever;
|
1124
904
|
grpc_completion_queue* cq;
|
@@ -1599,21 +1379,6 @@ static void cq_finish_shutdown_callback(grpc_completion_queue* cq) {
|
|
1599
1379
|
GRPC_ERROR_NONE);
|
1600
1380
|
}
|
1601
1381
|
|
1602
|
-
static void cq_finish_shutdown_callback_alternative(grpc_completion_queue* cq) {
|
1603
|
-
cq_callback_alternative_data* cqd =
|
1604
|
-
static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
|
1605
|
-
auto* callback = cqd->shutdown_callback;
|
1606
|
-
|
1607
|
-
GPR_ASSERT(cqd->shutdown_called);
|
1608
|
-
|
1609
|
-
// Shutdown the non-proxy pollset
|
1610
|
-
cq->poller_vtable->shutdown(INLINE_POLLSET_FROM_CQ(cq),
|
1611
|
-
&cq->pollset_shutdown_done);
|
1612
|
-
grpc_core::Executor::Run(
|
1613
|
-
GRPC_CLOSURE_CREATE(functor_callback, callback, nullptr),
|
1614
|
-
GRPC_ERROR_NONE);
|
1615
|
-
}
|
1616
|
-
|
1617
1382
|
static void cq_shutdown_callback(grpc_completion_queue* cq) {
|
1618
1383
|
cq_callback_data* cqd = static_cast<cq_callback_data*> DATA_FROM_CQ(cq);
|
1619
1384
|
|
@@ -1640,33 +1405,6 @@ static void cq_shutdown_callback(grpc_completion_queue* cq) {
|
|
1640
1405
|
GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
|
1641
1406
|
}
|
1642
1407
|
|
1643
|
-
static void cq_shutdown_callback_alternative(grpc_completion_queue* cq) {
|
1644
|
-
cq_callback_alternative_data* cqd =
|
1645
|
-
static_cast<cq_callback_alternative_data*> DATA_FROM_CQ(cq);
|
1646
|
-
|
1647
|
-
/* Need an extra ref for cq here because:
|
1648
|
-
* We call cq_finish_shutdown_callback() below, which calls pollset shutdown.
|
1649
|
-
* Pollset shutdown decrements the cq ref count which can potentially destroy
|
1650
|
-
* the cq (if that happens to be the last ref).
|
1651
|
-
* Creating an extra ref here prevents the cq from getting destroyed while
|
1652
|
-
* this function is still active */
|
1653
|
-
GRPC_CQ_INTERNAL_REF(cq, "shutting_down (callback cq)");
|
1654
|
-
gpr_mu_lock(cq->mu);
|
1655
|
-
if (cqd->shutdown_called) {
|
1656
|
-
gpr_mu_unlock(cq->mu);
|
1657
|
-
GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
|
1658
|
-
return;
|
1659
|
-
}
|
1660
|
-
cqd->shutdown_called = true;
|
1661
|
-
if (cqd->pending_events.FetchSub(1, grpc_core::MemoryOrder::ACQ_REL) == 1) {
|
1662
|
-
gpr_mu_unlock(cq->mu);
|
1663
|
-
cq_finish_shutdown_callback_alternative(cq);
|
1664
|
-
} else {
|
1665
|
-
gpr_mu_unlock(cq->mu);
|
1666
|
-
}
|
1667
|
-
GRPC_CQ_INTERNAL_UNREF(cq, "shutting_down (callback cq)");
|
1668
|
-
}
|
1669
|
-
|
1670
1408
|
/* Shutdown simply drops a ref that we reserved at creation time; if we drop
|
1671
1409
|
to zero here, then enter shutdown mode and wake up any waiters */
|
1672
1410
|
void grpc_completion_queue_shutdown(grpc_completion_queue* cq) {
|