grpc 1.60.2 → 1.61.0.pre2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +208 -165
- data/include/grpc/event_engine/event_engine.h +59 -12
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +6 -0
- data/include/grpc/event_engine/internal/slice_cast.h +12 -0
- data/include/grpc/event_engine/memory_allocator.h +3 -1
- data/include/grpc/event_engine/slice.h +5 -0
- data/include/grpc/grpc_security.h +22 -1
- data/include/grpc/impl/call.h +29 -0
- data/include/grpc/impl/channel_arg_names.h +12 -1
- data/include/grpc/impl/slice_type.h +1 -1
- data/include/grpc/module.modulemap +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +54 -7
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +20 -6
- data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +10 -13
- data/src/core/ext/filters/channel_idle/channel_idle_filter.h +18 -10
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +326 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +143 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +32 -6
- data/src/core/ext/filters/client_channel/client_channel_internal.h +2 -0
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +54 -21
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.cc +12 -15
- data/src/core/ext/filters/client_channel/lb_policy/endpoint_list.h +8 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +139 -92
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +9 -4
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +9 -4
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +10 -11
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +94 -93
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +5 -3
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +12 -15
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +38 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +25 -28
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +10 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +37 -35
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +504 -461
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +232 -122
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +642 -251
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +2 -6
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +2 -1
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.cc +1031 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_dependency_manager.h +277 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +128 -270
- data/src/core/ext/filters/client_channel/resolver/xds/{xds_resolver.h → xds_resolver_attributes.h} +5 -4
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.cc +25 -0
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver_trace.h +30 -0
- data/src/core/ext/filters/client_channel/retry_filter.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +35 -17
- data/src/core/ext/filters/deadline/deadline_filter.cc +12 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +17 -13
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +13 -4
- data/src/core/ext/filters/http/client/http_client_filter.cc +23 -32
- data/src/core/ext/filters/http/client/http_client_filter.h +10 -5
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/client_authority_filter.h +12 -4
- data/src/core/ext/filters/http/http_filters_plugin.cc +42 -20
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +55 -80
- data/src/core/ext/filters/http/message_compress/compression_filter.h +54 -12
- data/src/core/ext/filters/http/message_compress/legacy_compression_filter.cc +325 -0
- data/src/core/ext/filters/http/message_compress/legacy_compression_filter.h +139 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +41 -41
- data/src/core/ext/filters/http/server/http_server_filter.h +11 -4
- data/src/core/ext/filters/message_size/message_size_filter.cc +56 -76
- data/src/core/ext/filters/message_size/message_size_filter.h +35 -23
- data/src/core/ext/filters/rbac/rbac_filter.cc +15 -11
- data/src/core/ext/filters/rbac/rbac_filter.h +11 -4
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +25 -13
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +47 -50
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +21 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -2
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +11 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +68 -145
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +21 -82
- data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -8
- data/src/core/ext/transport/chttp2/transport/frame.cc +506 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +214 -0
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +33 -79
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +4 -7
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +27 -36
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -2
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +122 -32
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +142 -37
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -22
- data/src/core/ext/transport/chttp2/transport/parsing.cc +23 -37
- data/src/core/ext/transport/chttp2/transport/writing.cc +26 -58
- data/src/core/ext/transport/inproc/inproc_transport.cc +172 -13
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +712 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +151 -0
- data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +33 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.c +133 -0
- data/src/core/ext/upbdefs-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upbdefs.h +50 -0
- data/src/core/ext/xds/certificate_provider_store.cc +2 -1
- data/src/core/ext/xds/certificate_provider_store.h +0 -5
- data/src/core/ext/xds/xds_api.cc +31 -18
- data/src/core/ext/xds/xds_api.h +2 -2
- data/src/core/ext/xds/xds_bootstrap.h +3 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +88 -287
- data/src/core/ext/xds/xds_certificate_provider.h +44 -111
- data/src/core/ext/xds/xds_client.cc +420 -414
- data/src/core/ext/xds/xds_client.h +31 -22
- data/src/core/ext/xds/xds_client_grpc.cc +3 -1
- data/src/core/ext/xds/xds_cluster.cc +104 -11
- data/src/core/ext/xds/xds_cluster.h +9 -1
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +9 -5
- data/src/core/ext/xds/xds_common_types.cc +14 -10
- data/src/core/ext/xds/xds_endpoint.cc +9 -4
- data/src/core/ext/xds/xds_endpoint.h +5 -1
- data/src/core/ext/xds/xds_health_status.cc +12 -2
- data/src/core/ext/xds/xds_health_status.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +5 -3
- data/src/core/ext/xds/xds_listener.cc +14 -8
- data/src/core/ext/xds/xds_resource_type_impl.h +6 -4
- data/src/core/ext/xds/xds_route_config.cc +34 -22
- data/src/core/ext/xds/xds_route_config.h +1 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +61 -57
- data/src/core/ext/xds/xds_transport.h +3 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +47 -50
- data/src/core/ext/xds/xds_transport_grpc.h +4 -0
- data/src/core/lib/channel/call_tracer.cc +12 -0
- data/src/core/lib/channel/call_tracer.h +17 -3
- data/src/core/lib/channel/channel_args.cc +24 -14
- data/src/core/lib/channel/channel_args.h +74 -13
- data/src/core/lib/channel/channel_stack.cc +27 -0
- data/src/core/lib/channel/channel_stack.h +10 -10
- data/src/core/lib/channel/connected_channel.cc +64 -18
- data/src/core/lib/channel/promise_based_filter.h +1041 -1
- data/src/core/lib/channel/server_call_tracer_filter.cc +43 -35
- data/src/core/lib/compression/compression_internal.cc +0 -3
- data/src/core/lib/event_engine/ares_resolver.cc +35 -14
- data/src/core/lib/event_engine/ares_resolver.h +9 -10
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +8 -1
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +132 -0
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h +61 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +52 -36
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +4 -9
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +11 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +9 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +7 -0
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +17 -27
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +0 -3
- data/src/core/lib/event_engine/ref_counted_dns_resolver_interface.h +55 -0
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +114 -0
- data/src/core/lib/event_engine/windows/native_windows_dns_resolver.h +51 -0
- data/src/core/lib/event_engine/windows/windows_engine.cc +7 -7
- data/src/core/lib/experiments/config.cc +13 -0
- data/src/core/lib/experiments/config.h +3 -0
- data/src/core/lib/experiments/experiments.cc +245 -366
- data/src/core/lib/experiments/experiments.h +50 -156
- data/src/core/lib/gprpp/debug_location.h +13 -0
- data/src/core/lib/gprpp/dual_ref_counted.h +36 -7
- data/src/core/lib/gprpp/orphanable.h +27 -0
- data/src/core/lib/gprpp/ref_counted.h +63 -22
- data/src/core/lib/gprpp/ref_counted_ptr.h +70 -27
- data/src/core/lib/gprpp/ref_counted_string.h +13 -0
- data/src/core/lib/gprpp/status_helper.cc +1 -2
- data/src/core/lib/iomgr/combiner.cc +15 -51
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +31 -0
- data/src/core/lib/iomgr/event_engine_shims/endpoint.h +16 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -3
- data/src/core/lib/load_balancing/lb_policy.h +1 -1
- data/src/core/lib/promise/activity.cc +17 -2
- data/src/core/lib/promise/activity.h +5 -4
- data/src/core/lib/promise/all_ok.h +80 -0
- data/src/core/lib/promise/detail/join_state.h +2077 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -0
- data/src/core/lib/promise/detail/promise_like.h +8 -1
- data/src/core/lib/promise/detail/seq_state.h +3458 -150
- data/src/core/lib/promise/detail/status.h +42 -5
- data/src/core/lib/promise/for_each.h +13 -1
- data/src/core/lib/promise/if.h +4 -0
- data/src/core/lib/promise/latch.h +6 -3
- data/src/core/lib/promise/party.cc +33 -31
- data/src/core/lib/promise/party.h +142 -6
- data/src/core/lib/promise/poll.h +39 -13
- data/src/core/lib/promise/promise.h +4 -0
- data/src/core/lib/promise/seq.h +107 -7
- data/src/core/lib/promise/status_flag.h +196 -0
- data/src/core/lib/promise/try_join.h +132 -0
- data/src/core/lib/promise/try_seq.h +132 -10
- data/src/core/lib/resolver/endpoint_addresses.cc +0 -1
- data/src/core/lib/resolver/endpoint_addresses.h +48 -0
- data/src/core/lib/resource_quota/arena.h +2 -2
- data/src/core/lib/resource_quota/memory_quota.cc +57 -8
- data/src/core/lib/resource_quota/memory_quota.h +6 -0
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +14 -11
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +14 -5
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +28 -20
- data/src/core/lib/security/credentials/external/external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +4 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +0 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +12 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +22 -5
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.h +1 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +21 -28
- data/src/core/lib/security/credentials/xds/xds_credentials.h +2 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +4 -3
- data/src/core/lib/security/transport/auth_filters.h +71 -4
- data/src/core/lib/security/transport/client_auth_filter.cc +2 -4
- data/src/core/lib/security/transport/legacy_server_auth_filter.cc +244 -0
- data/src/core/lib/security/transport/server_auth_filter.cc +70 -90
- data/src/core/lib/slice/slice_buffer.h +3 -0
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +683 -196
- data/src/core/lib/surface/call.h +26 -13
- data/src/core/lib/surface/call_trace.cc +42 -1
- data/src/core/lib/surface/channel.cc +0 -1
- data/src/core/lib/surface/channel.h +0 -6
- data/src/core/lib/surface/channel_init.h +26 -0
- data/src/core/lib/surface/init.cc +14 -8
- data/src/core/lib/surface/server.cc +256 -237
- data/src/core/lib/surface/server.h +26 -54
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/surface/wait_for_cq_end_op.h +94 -0
- data/src/core/lib/transport/call_final_info.cc +38 -0
- data/src/core/lib/transport/call_final_info.h +54 -0
- data/src/core/lib/transport/connectivity_state.cc +3 -2
- data/src/core/lib/transport/connectivity_state.h +4 -0
- data/src/core/lib/transport/metadata_batch.h +4 -4
- data/src/core/lib/transport/transport.cc +70 -19
- data/src/core/lib/transport/transport.h +395 -25
- data/src/core/plugin_registry/grpc_plugin_registry.cc +3 -0
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +65 -43
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc.c +0 -1
- data/src/ruby/ext/grpc/rb_grpc.h +0 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/upb/upb/reflection/def_pool.h +2 -2
- data/third_party/zlib/adler32.c +5 -27
- data/third_party/zlib/compress.c +5 -16
- data/third_party/zlib/crc32.c +86 -162
- data/third_party/zlib/deflate.c +233 -336
- data/third_party/zlib/deflate.h +8 -8
- data/third_party/zlib/gzguts.h +11 -12
- data/third_party/zlib/infback.c +7 -23
- data/third_party/zlib/inffast.c +1 -4
- data/third_party/zlib/inffast.h +1 -1
- data/third_party/zlib/inflate.c +30 -99
- data/third_party/zlib/inftrees.c +6 -11
- data/third_party/zlib/inftrees.h +3 -3
- data/third_party/zlib/trees.c +224 -302
- data/third_party/zlib/uncompr.c +4 -12
- data/third_party/zlib/zconf.h +6 -2
- data/third_party/zlib/zlib.h +191 -188
- data/third_party/zlib/zutil.c +16 -44
- data/third_party/zlib/zutil.h +10 -10
- metadata +35 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +0 -1173
- data/src/core/lib/event_engine/memory_allocator.cc +0 -74
- data/src/core/lib/transport/pid_controller.cc +0 -51
- data/src/core/lib/transport/pid_controller.h +0 -116
- data/third_party/upb/upb/collections/array.h +0 -17
- data/third_party/upb/upb/collections/map.h +0 -17
- data/third_party/upb/upb/upb.hpp +0 -18
data/src/core/lib/surface/call.h
CHANGED
@@ -77,34 +77,35 @@ typedef struct grpc_call_create_args {
|
|
77
77
|
} grpc_call_create_args;
|
78
78
|
|
79
79
|
namespace grpc_core {
|
80
|
-
class
|
80
|
+
class BasicPromiseBasedCall;
|
81
81
|
class ServerPromiseBasedCall;
|
82
82
|
|
83
83
|
class ServerCallContext {
|
84
84
|
public:
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
85
|
+
virtual void PublishInitialMetadata(
|
86
|
+
ClientMetadataHandle metadata,
|
87
|
+
grpc_metadata_array* publish_initial_metadata) = 0;
|
88
|
+
|
89
|
+
// Construct the top of the server call promise for the v2 filter stack.
|
90
|
+
// TODO(ctiller): delete when v3 is available.
|
91
|
+
virtual ArenaPromise<ServerMetadataHandle> MakeTopOfServerCallPromise(
|
89
92
|
CallArgs call_args, grpc_completion_queue* cq,
|
90
|
-
|
91
|
-
absl::FunctionRef<void(grpc_call* call)> publish);
|
93
|
+
absl::FunctionRef<void(grpc_call* call)> publish) = 0;
|
92
94
|
|
93
95
|
// Server stream data as supplied by the transport (so we can link the
|
94
96
|
// transport stream up with the call again).
|
95
97
|
// TODO(ctiller): legacy API - once we move transports to promises we'll
|
96
98
|
// create the promise directly and not need to pass around this token.
|
97
|
-
const void* server_stream_data()
|
99
|
+
virtual const void* server_stream_data() = 0;
|
98
100
|
|
99
|
-
|
100
|
-
|
101
|
-
const void* const server_stream_data_;
|
101
|
+
protected:
|
102
|
+
~ServerCallContext() = default;
|
102
103
|
};
|
103
104
|
|
104
105
|
// TODO(ctiller): move more call things into this type
|
105
106
|
class CallContext {
|
106
107
|
public:
|
107
|
-
explicit CallContext(
|
108
|
+
explicit CallContext(BasicPromiseBasedCall* call) : call_(call) {}
|
108
109
|
|
109
110
|
// Update the deadline (if deadline < the current deadline).
|
110
111
|
void UpdateDeadline(Timestamp deadline);
|
@@ -135,13 +136,21 @@ class CallContext {
|
|
135
136
|
void set_traced(bool traced) { traced_ = traced; }
|
136
137
|
bool traced() const { return traced_; }
|
137
138
|
|
139
|
+
// TEMPORARY HACK
|
140
|
+
// Create a call spine object for this call.
|
141
|
+
// Said object should only be created once.
|
142
|
+
// Allows interop between the v2 call stack and the v3 (which is required by
|
143
|
+
// transports).
|
144
|
+
RefCountedPtr<CallSpineInterface> MakeCallSpine(CallArgs call_args);
|
145
|
+
grpc_call* c_call();
|
146
|
+
|
138
147
|
private:
|
139
148
|
friend class PromiseBasedCall;
|
140
149
|
// Call final info.
|
141
150
|
grpc_call_stats call_stats_;
|
142
151
|
// TODO(ctiller): remove this once transport APIs are promise based and we
|
143
152
|
// don't need refcounting here.
|
144
|
-
|
153
|
+
BasicPromiseBasedCall* const call_;
|
145
154
|
gpr_cycle_counter start_time_ = gpr_get_cycle_counter();
|
146
155
|
// Is this call traced?
|
147
156
|
bool traced_ = false;
|
@@ -150,6 +159,10 @@ class CallContext {
|
|
150
159
|
template <>
|
151
160
|
struct ContextType<CallContext> {};
|
152
161
|
|
162
|
+
RefCountedPtr<CallSpineInterface> MakeServerCall(Server* server,
|
163
|
+
Channel* channel,
|
164
|
+
Arena* arena);
|
165
|
+
|
153
166
|
} // namespace grpc_core
|
154
167
|
|
155
168
|
// Create a new call based on \a args.
|
@@ -77,7 +77,48 @@ const grpc_channel_filter* PromiseTracingFilterFor(
|
|
77
77
|
return r;
|
78
78
|
};
|
79
79
|
},
|
80
|
-
|
80
|
+
/* init_call: */
|
81
|
+
[](grpc_channel_element* elem, CallSpineInterface* call) {
|
82
|
+
auto* source_filter =
|
83
|
+
static_cast<const DerivedFilter*>(elem->filter)->filter;
|
84
|
+
call->client_initial_metadata().receiver.InterceptAndMap(
|
85
|
+
[source_filter](ClientMetadataHandle md) {
|
86
|
+
gpr_log(GPR_DEBUG, "%s[%s] OnClientInitialMetadata: %s",
|
87
|
+
Activity::current()->DebugTag().c_str(),
|
88
|
+
source_filter->name, md->DebugString().c_str());
|
89
|
+
return md;
|
90
|
+
});
|
91
|
+
call->client_to_server_messages().receiver.InterceptAndMap(
|
92
|
+
[source_filter](MessageHandle msg) {
|
93
|
+
gpr_log(GPR_DEBUG, "%s[%s] OnClientToServerMessage: %s",
|
94
|
+
Activity::current()->DebugTag().c_str(),
|
95
|
+
source_filter->name, msg->DebugString().c_str());
|
96
|
+
return msg;
|
97
|
+
});
|
98
|
+
call->server_initial_metadata().sender.InterceptAndMap(
|
99
|
+
[source_filter](ServerMetadataHandle md) {
|
100
|
+
gpr_log(GPR_DEBUG, "%s[%s] OnServerInitialMetadata: %s",
|
101
|
+
Activity::current()->DebugTag().c_str(),
|
102
|
+
source_filter->name, md->DebugString().c_str());
|
103
|
+
return md;
|
104
|
+
});
|
105
|
+
call->server_to_client_messages().sender.InterceptAndMap(
|
106
|
+
[source_filter](MessageHandle msg) {
|
107
|
+
gpr_log(GPR_DEBUG, "%s[%s] OnServerToClientMessage: %s",
|
108
|
+
Activity::current()->DebugTag().c_str(),
|
109
|
+
source_filter->name, msg->DebugString().c_str());
|
110
|
+
return msg;
|
111
|
+
});
|
112
|
+
call->server_trailing_metadata().sender.InterceptAndMap(
|
113
|
+
[source_filter](ServerMetadataHandle md) {
|
114
|
+
gpr_log(GPR_DEBUG, "%s[%s] OnServerTrailingMetadata: %s",
|
115
|
+
Activity::current()->DebugTag().c_str(),
|
116
|
+
source_filter->name, md->DebugString().c_str());
|
117
|
+
return md;
|
118
|
+
});
|
119
|
+
},
|
120
|
+
grpc_channel_next_op,
|
121
|
+
/* sizeof_call_data: */ 0,
|
81
122
|
// init_call_elem:
|
82
123
|
[](grpc_call_element*, const grpc_call_element_args*) {
|
83
124
|
return absl::OkStatus();
|
@@ -376,7 +376,6 @@ namespace grpc_core {
|
|
376
376
|
|
377
377
|
RegisteredCall* Channel::RegisterCall(const char* method, const char* host) {
|
378
378
|
MutexLock lock(®istration_table_.mu);
|
379
|
-
registration_table_.method_registration_attempts++;
|
380
379
|
auto key = std::make_pair(std::string(host != nullptr ? host : ""),
|
381
380
|
std::string(method != nullptr ? method : ""));
|
382
381
|
auto rc_posn = registration_table_.map.find(key);
|
@@ -103,7 +103,6 @@ struct CallRegistrationTable {
|
|
103
103
|
// C++ or other wrapped language Channel that registered these calls).
|
104
104
|
std::map<std::pair<std::string, std::string>, RegisteredCall> map
|
105
105
|
ABSL_GUARDED_BY(mu);
|
106
|
-
int method_registration_attempts ABSL_GUARDED_BY(mu) = 0;
|
107
106
|
};
|
108
107
|
|
109
108
|
class Channel : public RefCounted<Channel>,
|
@@ -150,11 +149,6 @@ class Channel : public RefCounted<Channel>,
|
|
150
149
|
return registration_table_.map.size();
|
151
150
|
}
|
152
151
|
|
153
|
-
int TestOnlyRegistrationAttempts() {
|
154
|
-
MutexLock lock(®istration_table_.mu);
|
155
|
-
return registration_table_.method_registration_attempts;
|
156
|
-
}
|
157
|
-
|
158
152
|
grpc_event_engine::experimental::EventEngine* event_engine() const {
|
159
153
|
return channel_stack_->EventEngine();
|
160
154
|
}
|
@@ -87,11 +87,30 @@ class ChannelInit {
|
|
87
87
|
// Ensure that this filter is placed *after* the filters listed here.
|
88
88
|
// By Build() time all filters listed here must also be registered against
|
89
89
|
// the same channel stack type as this registration.
|
90
|
+
template <typename Filter>
|
91
|
+
FilterRegistration& After() {
|
92
|
+
return After({&Filter::kFilter});
|
93
|
+
}
|
94
|
+
// Ensure that this filter is placed *before* the filters listed here.
|
95
|
+
// By Build() time all filters listed here must also be registered against
|
96
|
+
// the same channel stack type as this registration.
|
97
|
+
template <typename Filter>
|
98
|
+
FilterRegistration& Before() {
|
99
|
+
return Before({&Filter::kFilter});
|
100
|
+
}
|
101
|
+
|
102
|
+
// Ensure that this filter is placed *after* the filters listed here.
|
103
|
+
// By Build() time all filters listed here must also be registered against
|
104
|
+
// the same channel stack type as this registration.
|
105
|
+
// TODO(ctiller): remove in favor of the version that does not mention
|
106
|
+
// grpc_channel_filter
|
90
107
|
FilterRegistration& After(
|
91
108
|
std::initializer_list<const grpc_channel_filter*> filters);
|
92
109
|
// Ensure that this filter is placed *before* the filters listed here.
|
93
110
|
// By Build() time all filters listed here must also be registered against
|
94
111
|
// the same channel stack type as this registration.
|
112
|
+
// TODO(ctiller): remove in favor of the version that does not mention
|
113
|
+
// grpc_channel_filter
|
95
114
|
FilterRegistration& Before(
|
96
115
|
std::initializer_list<const grpc_channel_filter*> filters);
|
97
116
|
// Add a predicate for this filters inclusion.
|
@@ -145,9 +164,16 @@ class ChannelInit {
|
|
145
164
|
// This occurs first during channel build time.
|
146
165
|
// The FilterRegistration methods can be called to declaratively define
|
147
166
|
// properties of the filter being registered.
|
167
|
+
// TODO(ctiller): remove in favor of the version that does not mention
|
168
|
+
// grpc_channel_filter
|
148
169
|
FilterRegistration& RegisterFilter(grpc_channel_stack_type type,
|
149
170
|
const grpc_channel_filter* filter,
|
150
171
|
SourceLocation registration_source = {});
|
172
|
+
template <typename Filter>
|
173
|
+
FilterRegistration& RegisterFilter(
|
174
|
+
grpc_channel_stack_type type, SourceLocation registration_source = {}) {
|
175
|
+
return RegisterFilter(type, &Filter::kFilter, registration_source);
|
176
|
+
}
|
151
177
|
|
152
178
|
// Register a post processor for the builder.
|
153
179
|
// These run after the main graph has been placed into the builder.
|
@@ -67,19 +67,25 @@ static bool g_shutting_down ABSL_GUARDED_BY(g_init_mu) = false;
|
|
67
67
|
namespace grpc_core {
|
68
68
|
void RegisterSecurityFilters(CoreConfiguration::Builder* builder) {
|
69
69
|
builder->channel_init()
|
70
|
-
->RegisterFilter(GRPC_CLIENT_SUBCHANNEL
|
70
|
+
->RegisterFilter<ClientAuthFilter>(GRPC_CLIENT_SUBCHANNEL)
|
71
71
|
.IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR);
|
72
72
|
builder->channel_init()
|
73
|
-
->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL
|
73
|
+
->RegisterFilter<ClientAuthFilter>(GRPC_CLIENT_DIRECT_CHANNEL)
|
74
74
|
.IfHasChannelArg(GRPC_ARG_SECURITY_CONNECTOR);
|
75
|
+
if (IsV3ServerAuthFilterEnabled()) {
|
76
|
+
builder->channel_init()
|
77
|
+
->RegisterFilter<ServerAuthFilter>(GRPC_SERVER_CHANNEL)
|
78
|
+
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
79
|
+
} else {
|
80
|
+
builder->channel_init()
|
81
|
+
->RegisterFilter<LegacyServerAuthFilter>(GRPC_SERVER_CHANNEL)
|
82
|
+
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
83
|
+
}
|
75
84
|
builder->channel_init()
|
76
|
-
->RegisterFilter(GRPC_SERVER_CHANNEL
|
77
|
-
.IfHasChannelArg(GRPC_SERVER_CREDENTIALS_ARG);
|
78
|
-
builder->channel_init()
|
79
|
-
->RegisterFilter(GRPC_SERVER_CHANNEL,
|
80
|
-
&GrpcServerAuthzFilter::kFilterVtable)
|
85
|
+
->RegisterFilter<GrpcServerAuthzFilter>(GRPC_SERVER_CHANNEL)
|
81
86
|
.IfHasChannelArg(GRPC_ARG_AUTHORIZATION_POLICY_PROVIDER)
|
82
|
-
.After(
|
87
|
+
.After<ServerAuthFilter>()
|
88
|
+
.After<LegacyServerAuthFilter>();
|
83
89
|
}
|
84
90
|
} // namespace grpc_core
|
85
91
|
|