diff --git a/BUILD b/BUILD
index 887a2c2a6c1..2df4affb927 100644
--- a/BUILD
+++ b/BUILD
@@ -1800,6 +1800,7 @@ grpc_cc_library(
"stats",
"//src/core:arena",
"//src/core:call_arena_allocator",
+ "//src/core:call_destination",
"//src/core:channel_args",
"//src/core:channel_stack_type",
"//src/core:compression",
@@ -1992,15 +1993,17 @@ grpc_cc_library(
"//src/core:lib/surface/call.cc",
"//src/core:lib/surface/call_details.cc",
"//src/core:lib/surface/call_log_batch.cc",
+ "//src/core:lib/surface/call_utils.cc",
+ "//src/core:lib/surface/client_call.cc",
"//src/core:lib/surface/completion_queue.cc",
"//src/core:lib/surface/completion_queue_factory.cc",
"//src/core:lib/surface/event_string.cc",
+ "//src/core:lib/surface/filter_stack_call.cc",
"//src/core:lib/surface/lame_client.cc",
"//src/core:lib/surface/metadata_array.cc",
+ "//src/core:lib/surface/server_call.cc",
"//src/core:lib/surface/validate_metadata.cc",
"//src/core:lib/surface/version.cc",
- "//src/core:lib/surface/wait_for_cq_end_op.cc",
- "//src/core:lib/transport/batch_builder.cc",
"//src/core:lib/transport/transport.cc",
"//src/core:lib/transport/transport_op_string.cc",
],
@@ -2013,14 +2016,16 @@ grpc_cc_library(
"//src/core:lib/compression/message_compress.h",
"//src/core:lib/surface/call.h",
"//src/core:lib/surface/call_test_only.h",
+ "//src/core:lib/surface/call_utils.h",
+ "//src/core:lib/surface/client_call.h",
"//src/core:lib/surface/completion_queue.h",
"//src/core:lib/surface/completion_queue_factory.h",
"//src/core:lib/surface/event_string.h",
+ "//src/core:lib/surface/filter_stack_call.h",
"//src/core:lib/surface/init.h",
"//src/core:lib/surface/lame_client.h",
+ "//src/core:lib/surface/server_call.h",
"//src/core:lib/surface/validate_metadata.h",
- "//src/core:lib/surface/wait_for_cq_end_op.h",
- "//src/core:lib/transport/batch_builder.h",
"//src/core:lib/transport/transport.h",
],
defines = select({
@@ -2033,8 +2038,8 @@ grpc_cc_library(
"absl/container:inlined_vector",
"absl/functional:any_invocable",
"absl/functional:function_ref",
+ "absl/log",
"absl/log:check",
- "absl/log:log",
"absl/meta:type_traits",
"absl/status",
"absl/status:statusor",
@@ -2065,6 +2070,7 @@ grpc_cc_library(
"debug_location",
"exec_ctx",
"gpr",
+ "grpc_core_credentials_header",
"grpc_public_hdrs",
"grpc_trace",
"iomgr",
@@ -2125,6 +2131,7 @@ grpc_cc_library(
"//src/core:ref_counted",
"//src/core:seq",
"//src/core:server_interface",
+ "//src/core:single_set_ptr",
"//src/core:slice",
"//src/core:slice_buffer",
"//src/core:slice_cast",
@@ -3713,8 +3720,8 @@ grpc_cc_library(
"absl/container:flat_hash_set",
"absl/container:inlined_vector",
"absl/functional:any_invocable",
+ "absl/log",
"absl/log:check",
- "absl/log:log",
"absl/status",
"absl/status:statusor",
"absl/strings",
@@ -3751,7 +3758,6 @@ grpc_cc_library(
"stats",
"uri_parser",
"work_serializer",
- "//src/core:activity",
"//src/core:arena",
"//src/core:arena_promise",
"//src/core:backend_metric_parser",
@@ -3811,7 +3817,6 @@ grpc_cc_library(
"//src/core:slice_buffer",
"//src/core:slice_refcount",
"//src/core:stats_data",
- "//src/core:status_flag",
"//src/core:status_helper",
"//src/core:subchannel_connector",
"//src/core:subchannel_interface",
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 22540a4b7c4..ae0d73b684f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -966,6 +966,7 @@ if(gRPC_BUILD_TESTS)
add_dependencies(buildtests_cxx call_finalization_test)
add_dependencies(buildtests_cxx call_host_override_test)
add_dependencies(buildtests_cxx call_tracer_test)
+ add_dependencies(buildtests_cxx call_utils_test)
add_dependencies(buildtests_cxx cancel_after_accept_test)
add_dependencies(buildtests_cxx cancel_after_client_done_test)
add_dependencies(buildtests_cxx cancel_after_invoke_test)
@@ -1000,6 +1001,9 @@ if(gRPC_BUILD_TESTS)
add_dependencies(buildtests_cxx cli_call_test)
add_dependencies(buildtests_cxx client_auth_filter_test)
add_dependencies(buildtests_cxx client_authority_filter_test)
+ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
+ add_dependencies(buildtests_cxx client_call_test)
+ endif()
add_dependencies(buildtests_cxx client_callback_end2end_test)
add_dependencies(buildtests_cxx client_channel_service_config_test)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
@@ -1382,6 +1386,9 @@ if(gRPC_BUILD_TESTS)
if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
add_dependencies(buildtests_cxx server_builder_with_socket_mutator_test)
endif()
+ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
+ add_dependencies(buildtests_cxx server_call_test)
+ endif()
add_dependencies(buildtests_cxx server_call_tracer_factory_test)
add_dependencies(buildtests_cxx server_chttp2_test)
add_dependencies(buildtests_cxx server_config_selector_test)
@@ -2475,22 +2482,24 @@ add_library(grpc
src/core/lib/surface/call.cc
src/core/lib/surface/call_details.cc
src/core/lib/surface/call_log_batch.cc
+ src/core/lib/surface/call_utils.cc
src/core/lib/surface/channel.cc
src/core/lib/surface/channel_create.cc
src/core/lib/surface/channel_init.cc
src/core/lib/surface/channel_stack_type.cc
+ src/core/lib/surface/client_call.cc
src/core/lib/surface/completion_queue.cc
src/core/lib/surface/completion_queue_factory.cc
src/core/lib/surface/event_string.cc
+ src/core/lib/surface/filter_stack_call.cc
src/core/lib/surface/init.cc
src/core/lib/surface/init_internally.cc
src/core/lib/surface/lame_client.cc
src/core/lib/surface/legacy_channel.cc
src/core/lib/surface/metadata_array.cc
+ src/core/lib/surface/server_call.cc
src/core/lib/surface/validate_metadata.cc
src/core/lib/surface/version.cc
- src/core/lib/surface/wait_for_cq_end_op.cc
- src/core/lib/transport/batch_builder.cc
src/core/lib/transport/bdp_estimator.cc
src/core/lib/transport/call_arena_allocator.cc
src/core/lib/transport/call_filters.cc
@@ -3234,22 +3243,24 @@ add_library(grpc_unsecure
src/core/lib/surface/call.cc
src/core/lib/surface/call_details.cc
src/core/lib/surface/call_log_batch.cc
+ src/core/lib/surface/call_utils.cc
src/core/lib/surface/channel.cc
src/core/lib/surface/channel_create.cc
src/core/lib/surface/channel_init.cc
src/core/lib/surface/channel_stack_type.cc
+ src/core/lib/surface/client_call.cc
src/core/lib/surface/completion_queue.cc
src/core/lib/surface/completion_queue_factory.cc
src/core/lib/surface/event_string.cc
+ src/core/lib/surface/filter_stack_call.cc
src/core/lib/surface/init.cc
src/core/lib/surface/init_internally.cc
src/core/lib/surface/lame_client.cc
src/core/lib/surface/legacy_channel.cc
src/core/lib/surface/metadata_array.cc
+ src/core/lib/surface/server_call.cc
src/core/lib/surface/validate_metadata.cc
src/core/lib/surface/version.cc
- src/core/lib/surface/wait_for_cq_end_op.cc
- src/core/lib/transport/batch_builder.cc
src/core/lib/transport/bdp_estimator.cc
src/core/lib/transport/call_arena_allocator.cc
src/core/lib/transport/call_filters.cc
@@ -5354,19 +5365,21 @@ add_library(grpc_authorization_provider
src/core/lib/surface/call.cc
src/core/lib/surface/call_details.cc
src/core/lib/surface/call_log_batch.cc
+ src/core/lib/surface/call_utils.cc
src/core/lib/surface/channel.cc
src/core/lib/surface/channel_init.cc
src/core/lib/surface/channel_stack_type.cc
+ src/core/lib/surface/client_call.cc
src/core/lib/surface/completion_queue.cc
src/core/lib/surface/completion_queue_factory.cc
src/core/lib/surface/event_string.cc
+ src/core/lib/surface/filter_stack_call.cc
src/core/lib/surface/init_internally.cc
src/core/lib/surface/lame_client.cc
src/core/lib/surface/metadata_array.cc
+ src/core/lib/surface/server_call.cc
src/core/lib/surface/validate_metadata.cc
src/core/lib/surface/version.cc
- src/core/lib/surface/wait_for_cq_end_op.cc
- src/core/lib/transport/batch_builder.cc
src/core/lib/transport/call_arena_allocator.cc
src/core/lib/transport/call_filters.cc
src/core/lib/transport/call_final_info.cc
@@ -7538,6 +7551,7 @@ add_executable(bad_ping_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8014,6 +8028,7 @@ add_executable(binary_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8456,6 +8471,7 @@ add_executable(call_creds_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8665,6 +8681,7 @@ add_executable(call_host_override_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8758,6 +8775,310 @@ target_link_libraries(call_tracer_test
)
+endif()
+if(gRPC_BUILD_TESTS)
+
+add_executable(call_utils_test
+ src/core/channelz/channel_trace.cc
+ src/core/channelz/channelz.cc
+ src/core/channelz/channelz_registry.cc
+ src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c
+ src/core/ext/upb-gen/google/rpc/status.upb_minitable.c
+ src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c
+ src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c
+ src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c
+ src/core/handshaker/handshaker_registry.cc
+ src/core/handshaker/proxy_mapper_registry.cc
+ src/core/lib/address_utils/parse_address.cc
+ src/core/lib/address_utils/sockaddr_utils.cc
+ src/core/lib/backoff/backoff.cc
+ src/core/lib/channel/channel_args.cc
+ src/core/lib/channel/channel_args_preconditioning.cc
+ src/core/lib/channel/channel_stack.cc
+ src/core/lib/channel/channel_stack_builder.cc
+ src/core/lib/channel/channel_stack_builder_impl.cc
+ src/core/lib/channel/channel_stack_trace.cc
+ src/core/lib/channel/connected_channel.cc
+ src/core/lib/channel/promise_based_filter.cc
+ src/core/lib/channel/status_util.cc
+ src/core/lib/compression/compression.cc
+ src/core/lib/compression/compression_internal.cc
+ src/core/lib/compression/message_compress.cc
+ src/core/lib/config/core_configuration.cc
+ src/core/lib/debug/event_log.cc
+ src/core/lib/debug/trace.cc
+ src/core/lib/event_engine/ares_resolver.cc
+ src/core/lib/event_engine/cf_engine/cf_engine.cc
+ src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc
+ src/core/lib/event_engine/cf_engine/dns_service_resolver.cc
+ src/core/lib/event_engine/channel_args_endpoint_config.cc
+ src/core/lib/event_engine/default_event_engine.cc
+ src/core/lib/event_engine/default_event_engine_factory.cc
+ src/core/lib/event_engine/event_engine.cc
+ src/core/lib/event_engine/forkable.cc
+ src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc
+ src/core/lib/event_engine/posix_engine/ev_poll_posix.cc
+ src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
+ src/core/lib/event_engine/posix_engine/internal_errqueue.cc
+ src/core/lib/event_engine/posix_engine/lockfree_event.cc
+ src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc
+ src/core/lib/event_engine/posix_engine/posix_endpoint.cc
+ src/core/lib/event_engine/posix_engine/posix_engine.cc
+ src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
+ src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc
+ src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc
+ src/core/lib/event_engine/posix_engine/timer.cc
+ src/core/lib/event_engine/posix_engine/timer_heap.cc
+ src/core/lib/event_engine/posix_engine/timer_manager.cc
+ src/core/lib/event_engine/posix_engine/traced_buffer_list.cc
+ src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc
+ src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc
+ src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc
+ src/core/lib/event_engine/resolved_address.cc
+ src/core/lib/event_engine/shim.cc
+ src/core/lib/event_engine/slice.cc
+ src/core/lib/event_engine/slice_buffer.cc
+ src/core/lib/event_engine/tcp_socket_utils.cc
+ src/core/lib/event_engine/thread_pool/thread_count.cc
+ src/core/lib/event_engine/thread_pool/thread_pool_factory.cc
+ src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc
+ src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc
+ src/core/lib/event_engine/time_util.cc
+ src/core/lib/event_engine/trace.cc
+ src/core/lib/event_engine/utils.cc
+ src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc
+ src/core/lib/event_engine/windows/iocp.cc
+ src/core/lib/event_engine/windows/native_windows_dns_resolver.cc
+ src/core/lib/event_engine/windows/win_socket.cc
+ src/core/lib/event_engine/windows/windows_endpoint.cc
+ src/core/lib/event_engine/windows/windows_engine.cc
+ src/core/lib/event_engine/windows/windows_listener.cc
+ src/core/lib/event_engine/work_queue/basic_work_queue.cc
+ src/core/lib/experiments/config.cc
+ src/core/lib/experiments/experiments.cc
+ src/core/lib/gprpp/dump_args.cc
+ src/core/lib/gprpp/load_file.cc
+ src/core/lib/gprpp/per_cpu.cc
+ src/core/lib/gprpp/ref_counted_string.cc
+ src/core/lib/gprpp/status_helper.cc
+ src/core/lib/gprpp/time.cc
+ src/core/lib/gprpp/time_averaged_stats.cc
+ src/core/lib/gprpp/validation_errors.cc
+ src/core/lib/gprpp/work_serializer.cc
+ src/core/lib/iomgr/buffer_list.cc
+ src/core/lib/iomgr/call_combiner.cc
+ src/core/lib/iomgr/cfstream_handle.cc
+ src/core/lib/iomgr/closure.cc
+ src/core/lib/iomgr/combiner.cc
+ src/core/lib/iomgr/dualstack_socket_posix.cc
+ src/core/lib/iomgr/endpoint.cc
+ src/core/lib/iomgr/endpoint_cfstream.cc
+ src/core/lib/iomgr/endpoint_pair_posix.cc
+ src/core/lib/iomgr/endpoint_pair_windows.cc
+ src/core/lib/iomgr/error.cc
+ src/core/lib/iomgr/error_cfstream.cc
+ src/core/lib/iomgr/ev_apple.cc
+ src/core/lib/iomgr/ev_epoll1_linux.cc
+ src/core/lib/iomgr/ev_poll_posix.cc
+ src/core/lib/iomgr/ev_posix.cc
+ src/core/lib/iomgr/ev_windows.cc
+ src/core/lib/iomgr/event_engine_shims/closure.cc
+ src/core/lib/iomgr/event_engine_shims/endpoint.cc
+ src/core/lib/iomgr/event_engine_shims/tcp_client.cc
+ src/core/lib/iomgr/exec_ctx.cc
+ src/core/lib/iomgr/executor.cc
+ src/core/lib/iomgr/fork_posix.cc
+ src/core/lib/iomgr/fork_windows.cc
+ src/core/lib/iomgr/gethostname_fallback.cc
+ src/core/lib/iomgr/gethostname_host_name_max.cc
+ src/core/lib/iomgr/gethostname_sysconf.cc
+ src/core/lib/iomgr/grpc_if_nametoindex_posix.cc
+ src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc
+ src/core/lib/iomgr/internal_errqueue.cc
+ src/core/lib/iomgr/iocp_windows.cc
+ src/core/lib/iomgr/iomgr.cc
+ src/core/lib/iomgr/iomgr_internal.cc
+ src/core/lib/iomgr/iomgr_posix.cc
+ src/core/lib/iomgr/iomgr_posix_cfstream.cc
+ src/core/lib/iomgr/iomgr_windows.cc
+ src/core/lib/iomgr/lockfree_event.cc
+ src/core/lib/iomgr/polling_entity.cc
+ src/core/lib/iomgr/pollset.cc
+ src/core/lib/iomgr/pollset_set.cc
+ src/core/lib/iomgr/pollset_set_windows.cc
+ src/core/lib/iomgr/pollset_windows.cc
+ src/core/lib/iomgr/resolve_address.cc
+ src/core/lib/iomgr/resolve_address_posix.cc
+ src/core/lib/iomgr/resolve_address_windows.cc
+ src/core/lib/iomgr/sockaddr_utils_posix.cc
+ src/core/lib/iomgr/socket_factory_posix.cc
+ src/core/lib/iomgr/socket_mutator.cc
+ src/core/lib/iomgr/socket_utils_common_posix.cc
+ src/core/lib/iomgr/socket_utils_linux.cc
+ src/core/lib/iomgr/socket_utils_posix.cc
+ src/core/lib/iomgr/socket_utils_windows.cc
+ src/core/lib/iomgr/socket_windows.cc
+ src/core/lib/iomgr/systemd_utils.cc
+ src/core/lib/iomgr/tcp_client.cc
+ src/core/lib/iomgr/tcp_client_cfstream.cc
+ src/core/lib/iomgr/tcp_client_posix.cc
+ src/core/lib/iomgr/tcp_client_windows.cc
+ src/core/lib/iomgr/tcp_posix.cc
+ src/core/lib/iomgr/tcp_server.cc
+ src/core/lib/iomgr/tcp_server_posix.cc
+ src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+ src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+ src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+ src/core/lib/iomgr/tcp_server_windows.cc
+ src/core/lib/iomgr/tcp_windows.cc
+ src/core/lib/iomgr/timer.cc
+ src/core/lib/iomgr/timer_generic.cc
+ src/core/lib/iomgr/timer_heap.cc
+ src/core/lib/iomgr/timer_manager.cc
+ src/core/lib/iomgr/unix_sockets_posix.cc
+ src/core/lib/iomgr/unix_sockets_posix_noop.cc
+ src/core/lib/iomgr/vsock.cc
+ src/core/lib/iomgr/wakeup_fd_eventfd.cc
+ src/core/lib/iomgr/wakeup_fd_nospecial.cc
+ src/core/lib/iomgr/wakeup_fd_pipe.cc
+ src/core/lib/iomgr/wakeup_fd_posix.cc
+ src/core/lib/promise/activity.cc
+ src/core/lib/promise/party.cc
+ src/core/lib/promise/trace.cc
+ src/core/lib/resource_quota/api.cc
+ src/core/lib/resource_quota/arena.cc
+ src/core/lib/resource_quota/connection_quota.cc
+ src/core/lib/resource_quota/memory_quota.cc
+ src/core/lib/resource_quota/periodic_update.cc
+ src/core/lib/resource_quota/resource_quota.cc
+ src/core/lib/resource_quota/thread_quota.cc
+ src/core/lib/resource_quota/trace.cc
+ src/core/lib/security/certificate_provider/certificate_provider_registry.cc
+ src/core/lib/security/credentials/alts/check_gcp_environment.cc
+ src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc
+ src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc
+ src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
+ src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc
+ src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc
+ src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc
+ src/core/lib/slice/percent_encoding.cc
+ src/core/lib/slice/slice.cc
+ src/core/lib/slice/slice_buffer.cc
+ src/core/lib/slice/slice_refcount.cc
+ src/core/lib/slice/slice_string_helpers.cc
+ src/core/lib/surface/api_trace.cc
+ src/core/lib/surface/byte_buffer.cc
+ src/core/lib/surface/byte_buffer_reader.cc
+ src/core/lib/surface/call.cc
+ src/core/lib/surface/call_details.cc
+ src/core/lib/surface/call_log_batch.cc
+ src/core/lib/surface/call_utils.cc
+ src/core/lib/surface/channel.cc
+ src/core/lib/surface/channel_init.cc
+ src/core/lib/surface/channel_stack_type.cc
+ src/core/lib/surface/client_call.cc
+ src/core/lib/surface/completion_queue.cc
+ src/core/lib/surface/completion_queue_factory.cc
+ src/core/lib/surface/event_string.cc
+ src/core/lib/surface/filter_stack_call.cc
+ src/core/lib/surface/init_internally.cc
+ src/core/lib/surface/lame_client.cc
+ src/core/lib/surface/metadata_array.cc
+ src/core/lib/surface/server_call.cc
+ src/core/lib/surface/validate_metadata.cc
+ src/core/lib/surface/version.cc
+ src/core/lib/transport/call_arena_allocator.cc
+ src/core/lib/transport/call_filters.cc
+ src/core/lib/transport/call_final_info.cc
+ src/core/lib/transport/call_spine.cc
+ src/core/lib/transport/connectivity_state.cc
+ src/core/lib/transport/error_utils.cc
+ src/core/lib/transport/interception_chain.cc
+ src/core/lib/transport/message.cc
+ src/core/lib/transport/metadata.cc
+ src/core/lib/transport/metadata_batch.cc
+ src/core/lib/transport/parsed_metadata.cc
+ src/core/lib/transport/status_conversion.cc
+ src/core/lib/transport/timeout_encoding.cc
+ src/core/lib/transport/transport.cc
+ src/core/lib/transport/transport_op_string.cc
+ src/core/lib/uri/uri_parser.cc
+ src/core/load_balancing/lb_policy.cc
+ src/core/load_balancing/lb_policy_registry.cc
+ src/core/resolver/endpoint_addresses.cc
+ src/core/resolver/resolver.cc
+ src/core/resolver/resolver_registry.cc
+ src/core/service_config/service_config_parser.cc
+ src/core/telemetry/call_tracer.cc
+ src/core/telemetry/histogram_view.cc
+ src/core/telemetry/metrics.cc
+ src/core/telemetry/stats.cc
+ src/core/telemetry/stats_data.cc
+ src/core/tsi/alts/handshaker/transport_security_common_api.cc
+ src/core/util/json/json_writer.cc
+ test/core/call/call_utils_test.cc
+ third_party/upb/upb/mini_descriptor/build_enum.c
+ third_party/upb/upb/mini_descriptor/decode.c
+ third_party/upb/upb/mini_descriptor/internal/base92.c
+ third_party/upb/upb/mini_descriptor/internal/encode.c
+ third_party/upb/upb/mini_descriptor/link.c
+ third_party/upb/upb/wire/decode.c
+ third_party/upb/upb/wire/encode.c
+ third_party/upb/upb/wire/eps_copy_input_stream.c
+ third_party/upb/upb/wire/internal/decode_fast.c
+ third_party/upb/upb/wire/reader.c
+)
+if(WIN32 AND MSVC)
+ if(BUILD_SHARED_LIBS)
+ target_compile_definitions(call_utils_test
+ PRIVATE
+ "GPR_DLL_IMPORTS"
+ )
+ endif()
+endif()
+target_compile_features(call_utils_test PUBLIC cxx_std_14)
+target_include_directories(call_utils_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_XXHASH_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+)
+
+target_link_libraries(call_utils_test
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gtest
+ utf8_range_lib
+ upb_message_lib
+ ${_gRPC_ZLIB_LIBRARIES}
+ absl::config
+ absl::no_destructor
+ absl::cleanup
+ absl::flat_hash_map
+ absl::inlined_vector
+ absl::function_ref
+ absl::hash
+ absl::type_traits
+ absl::statusor
+ absl::span
+ absl::utility
+ ${_gRPC_CARES_LIBRARIES}
+ gpr
+ ${_gRPC_ADDRESS_SORTING_LIBRARIES}
+)
+
+
endif()
if(gRPC_BUILD_TESTS)
@@ -8771,6 +9092,7 @@ add_executable(cancel_after_accept_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8834,6 +9156,7 @@ add_executable(cancel_after_client_done_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8897,6 +9220,7 @@ add_executable(cancel_after_invoke_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -8960,6 +9284,7 @@ add_executable(cancel_after_round_trip_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -9070,6 +9395,7 @@ add_executable(cancel_before_invoke_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -9217,6 +9543,7 @@ add_executable(cancel_in_a_vacuum_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -9280,6 +9607,7 @@ add_executable(cancel_with_status_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -10479,6 +10807,61 @@ target_link_libraries(client_authority_filter_test
)
+endif()
+if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
+
+ add_executable(client_call_test
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h
+ test/core/call/batch_builder.cc
+ test/core/call/client_call_test.cc
+ test/core/call/yodel/test_main.cc
+ test/core/call/yodel/yodel_test.cc
+ test/core/end2end/cq_verifier.cc
+ test/core/event_engine/event_engine_test_utils.cc
+ test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
+ )
+ if(WIN32 AND MSVC)
+ if(BUILD_SHARED_LIBS)
+ target_compile_definitions(client_call_test
+ PRIVATE
+ "GPR_DLL_IMPORTS"
+ "GRPC_DLL_IMPORTS"
+ )
+ endif()
+ endif()
+ target_compile_features(client_call_test PUBLIC cxx_std_14)
+ target_include_directories(client_call_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_XXHASH_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+ )
+
+ target_link_libraries(client_call_test
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gtest
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ grpc_test_util
+ )
+
+
+endif()
endif()
if(gRPC_BUILD_TESTS)
@@ -10594,6 +10977,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
test/core/call/yodel/test_main.cc
test/core/call/yodel/yodel_test.cc
test/core/client_channel/client_channel_test.cc
+ test/core/event_engine/event_engine_test_utils.cc
test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
)
if(WIN32 AND MSVC)
@@ -10935,6 +11319,7 @@ add_executable(client_streaming_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -11274,6 +11659,7 @@ add_executable(compressed_payload_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -11420,6 +11806,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
test/core/call/yodel/test_main.cc
test/core/call/yodel/yodel_test.cc
test/core/client_channel/connected_subchannel_test.cc
+ test/core/event_engine/event_engine_test_utils.cc
test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
)
if(WIN32 AND MSVC)
@@ -11611,6 +11998,7 @@ add_executable(connectivity_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -12040,6 +12428,7 @@ add_executable(default_host_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -12248,6 +12637,7 @@ add_executable(disappearing_server_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -12603,6 +12993,7 @@ add_executable(empty_batch_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -13983,6 +14374,7 @@ add_executable(filter_causes_close_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -14046,6 +14438,7 @@ add_executable(filter_init_fails_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -14159,6 +14552,7 @@ add_executable(filtered_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -14944,6 +15338,7 @@ add_executable(graceful_server_shutdown_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -15310,6 +15705,7 @@ add_executable(grpc_authz_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -16312,6 +16708,7 @@ endif()
if(gRPC_BUILD_TESTS)
add_executable(h2_ssl_cert_test
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/data/client_certs.cc
test/core/end2end/data/server1_cert.cc
@@ -16701,6 +17098,7 @@ add_executable(high_initial_seqno_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -17010,6 +17408,7 @@ add_executable(hpack_size_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -17166,6 +17565,7 @@ add_executable(http2_stats_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -17621,6 +18021,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h
test/core/call/yodel/test_main.cc
test/core/call/yodel/yodel_test.cc
+ test/core/event_engine/event_engine_test_utils.cc
test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
test/core/transport/test_suite/call_content.cc
test/core/transport/test_suite/call_shapes.cc
@@ -18005,19 +18406,21 @@ add_executable(interception_chain_test
src/core/lib/surface/call.cc
src/core/lib/surface/call_details.cc
src/core/lib/surface/call_log_batch.cc
+ src/core/lib/surface/call_utils.cc
src/core/lib/surface/channel.cc
src/core/lib/surface/channel_init.cc
src/core/lib/surface/channel_stack_type.cc
+ src/core/lib/surface/client_call.cc
src/core/lib/surface/completion_queue.cc
src/core/lib/surface/completion_queue_factory.cc
src/core/lib/surface/event_string.cc
+ src/core/lib/surface/filter_stack_call.cc
src/core/lib/surface/init_internally.cc
src/core/lib/surface/lame_client.cc
src/core/lib/surface/metadata_array.cc
+ src/core/lib/surface/server_call.cc
src/core/lib/surface/validate_metadata.cc
src/core/lib/surface/version.cc
- src/core/lib/surface/wait_for_cq_end_op.cc
- src/core/lib/transport/batch_builder.cc
src/core/lib/transport/call_arena_allocator.cc
src/core/lib/transport/call_filters.cc
src/core/lib/transport/call_final_info.cc
@@ -18359,6 +18762,7 @@ add_executable(invoke_large_request_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -18748,6 +19152,7 @@ add_executable(keepalive_timeout_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -18854,6 +19259,7 @@ add_executable(large_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -19055,6 +19461,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
test/core/call/yodel/test_main.cc
test/core/call/yodel/yodel_test.cc
test/core/client_channel/load_balanced_call_destination_test.cc
+ test/core/event_engine/event_engine_test_utils.cc
test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
)
if(WIN32 AND MSVC)
@@ -19577,6 +19984,7 @@ add_executable(max_concurrent_streams_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -19640,6 +20048,7 @@ add_executable(max_connection_age_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -19703,6 +20112,7 @@ add_executable(max_connection_idle_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -19766,6 +20176,7 @@ add_executable(max_message_length_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -20448,6 +20859,7 @@ add_executable(negative_deadline_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -20543,6 +20955,7 @@ add_executable(no_logging_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -20606,6 +21019,7 @@ add_executable(no_op_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -21535,6 +21949,7 @@ add_executable(payload_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -21908,6 +22323,7 @@ add_executable(ping_pong_streaming_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -22022,6 +22438,7 @@ add_executable(ping_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -23016,6 +23433,7 @@ add_executable(proxy_auth_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -23592,6 +24010,7 @@ add_executable(registered_call_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -23699,6 +24118,7 @@ add_executable(request_with_flags_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -23762,6 +24182,7 @@ add_executable(request_with_payload_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24096,6 +24517,7 @@ add_executable(resource_quota_server_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24201,6 +24623,7 @@ add_executable(retry_cancel_after_first_attempt_starts_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24264,6 +24687,7 @@ add_executable(retry_cancel_during_delay_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24327,6 +24751,7 @@ add_executable(retry_cancel_with_multiple_send_batches_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24390,6 +24815,7 @@ add_executable(retry_cancellation_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24453,6 +24879,7 @@ add_executable(retry_disabled_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24516,6 +24943,7 @@ add_executable(retry_exceeds_buffer_size_in_delay_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24579,6 +25007,7 @@ add_executable(retry_exceeds_buffer_size_in_initial_batch_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24642,6 +25071,7 @@ add_executable(retry_exceeds_buffer_size_in_subsequent_batch_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24705,6 +25135,7 @@ add_executable(retry_lb_drop_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24768,6 +25199,7 @@ add_executable(retry_lb_fail_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24831,6 +25263,7 @@ add_executable(retry_non_retriable_status_before_trailers_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24894,6 +25327,7 @@ add_executable(retry_non_retriable_status_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -24957,6 +25391,7 @@ add_executable(retry_per_attempt_recv_timeout_on_last_attempt_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25020,6 +25455,7 @@ add_executable(retry_per_attempt_recv_timeout_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25083,6 +25519,7 @@ add_executable(retry_recv_initial_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25146,6 +25583,7 @@ add_executable(retry_recv_message_replay_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25209,6 +25647,7 @@ add_executable(retry_recv_message_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25272,6 +25711,7 @@ add_executable(retry_recv_trailing_metadata_error_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25335,6 +25775,7 @@ add_executable(retry_send_initial_metadata_refs_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25398,6 +25839,7 @@ add_executable(retry_send_op_fails_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25461,6 +25903,7 @@ add_executable(retry_send_recv_batch_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25524,6 +25967,7 @@ add_executable(retry_server_pushback_delay_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25587,6 +26031,7 @@ add_executable(retry_server_pushback_disabled_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25692,6 +26137,7 @@ add_executable(retry_streaming_after_commit_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25755,6 +26201,7 @@ add_executable(retry_streaming_succeeds_before_replay_finished_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25818,6 +26265,7 @@ add_executable(retry_streaming_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25881,6 +26329,7 @@ add_executable(retry_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -25986,6 +26435,7 @@ add_executable(retry_throttled_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26049,6 +26499,7 @@ add_executable(retry_too_many_attempts_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26112,6 +26563,7 @@ add_executable(retry_transparent_goaway_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26175,6 +26627,7 @@ add_executable(retry_transparent_max_concurrent_streams_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26238,6 +26691,7 @@ add_executable(retry_transparent_not_sent_on_wire_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26301,6 +26755,7 @@ add_executable(retry_unref_before_finish_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -26364,6 +26819,7 @@ add_executable(retry_unref_before_recv_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -27108,6 +27564,61 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_MAC OR _gRPC_PLATFORM_POSIX)
)
+endif()
+endif()
+if(gRPC_BUILD_TESTS)
+if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
+
+ add_executable(server_call_test
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.cc
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.pb.h
+ ${_gRPC_PROTO_GENS_DIR}/test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.grpc.pb.h
+ test/core/call/batch_builder.cc
+ test/core/call/server_call_test.cc
+ test/core/call/yodel/test_main.cc
+ test/core/call/yodel/yodel_test.cc
+ test/core/end2end/cq_verifier.cc
+ test/core/event_engine/event_engine_test_utils.cc
+ test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
+ )
+ if(WIN32 AND MSVC)
+ if(BUILD_SHARED_LIBS)
+ target_compile_definitions(server_call_test
+ PRIVATE
+ "GPR_DLL_IMPORTS"
+ "GRPC_DLL_IMPORTS"
+ )
+ endif()
+ endif()
+ target_compile_features(server_call_test PUBLIC cxx_std_14)
+ target_include_directories(server_call_test
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${_gRPC_ADDRESS_SORTING_INCLUDE_DIR}
+ ${_gRPC_RE2_INCLUDE_DIR}
+ ${_gRPC_SSL_INCLUDE_DIR}
+ ${_gRPC_UPB_GENERATED_DIR}
+ ${_gRPC_UPB_GRPC_GENERATED_DIR}
+ ${_gRPC_UPB_INCLUDE_DIR}
+ ${_gRPC_XXHASH_INCLUDE_DIR}
+ ${_gRPC_ZLIB_INCLUDE_DIR}
+ third_party/googletest/googletest/include
+ third_party/googletest/googletest
+ third_party/googletest/googlemock/include
+ third_party/googletest/googlemock
+ ${_gRPC_PROTO_GENS_DIR}
+ )
+
+ target_link_libraries(server_call_test
+ ${_gRPC_ALLTARGETS_LIBRARIES}
+ gtest
+ ${_gRPC_PROTOBUF_LIBRARIES}
+ grpc_test_util
+ )
+
+
endif()
endif()
if(gRPC_BUILD_TESTS)
@@ -27350,6 +27861,7 @@ add_executable(server_finishes_request_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -27634,6 +28146,7 @@ add_executable(server_streaming_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -27896,6 +28409,7 @@ add_executable(shutdown_finishes_calls_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -27959,6 +28473,7 @@ add_executable(shutdown_finishes_tags_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -28085,6 +28600,7 @@ add_executable(simple_delayed_request_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -28148,6 +28664,7 @@ add_executable(simple_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -28255,6 +28772,7 @@ add_executable(simple_request_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -29181,6 +29699,7 @@ add_executable(streaming_error_response_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -29955,6 +30474,7 @@ add_executable(test_core_end2end_channelz_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -30448,6 +30968,7 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX)
src/core/lib/transport/promise_endpoint.cc
test/core/call/yodel/test_main.cc
test/core/call/yodel/yodel_test.cc
+ test/core/event_engine/event_engine_test_utils.cc
test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
test/core/transport/test_suite/call_content.cc
test/core/transport/test_suite/call_shapes.cc
@@ -31215,6 +31736,7 @@ add_executable(timeout_before_request_call_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -31719,6 +32241,7 @@ add_executable(trailing_metadata_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -32961,6 +33484,7 @@ add_executable(write_buffering_at_end_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
@@ -33024,6 +33548,7 @@ add_executable(write_buffering_test
src/core/ext/transport/chaotic_good/server_transport.cc
src/core/ext/transport/chaotic_good/settings_metadata.cc
src/core/lib/transport/promise_endpoint.cc
+ test/core/call/batch_builder.cc
test/core/end2end/cq_verifier.cc
test/core/end2end/end2end_test_main.cc
test/core/end2end/end2end_test_suites.cc
diff --git a/Makefile b/Makefile
index 273bbf87d17..27c9f67b979 100644
--- a/Makefile
+++ b/Makefile
@@ -1326,22 +1326,24 @@ LIBGRPC_SRC = \
src/core/lib/surface/call.cc \
src/core/lib/surface/call_details.cc \
src/core/lib/surface/call_log_batch.cc \
+ src/core/lib/surface/call_utils.cc \
src/core/lib/surface/channel.cc \
src/core/lib/surface/channel_create.cc \
src/core/lib/surface/channel_init.cc \
src/core/lib/surface/channel_stack_type.cc \
+ src/core/lib/surface/client_call.cc \
src/core/lib/surface/completion_queue.cc \
src/core/lib/surface/completion_queue_factory.cc \
src/core/lib/surface/event_string.cc \
+ src/core/lib/surface/filter_stack_call.cc \
src/core/lib/surface/init.cc \
src/core/lib/surface/init_internally.cc \
src/core/lib/surface/lame_client.cc \
src/core/lib/surface/legacy_channel.cc \
src/core/lib/surface/metadata_array.cc \
+ src/core/lib/surface/server_call.cc \
src/core/lib/surface/validate_metadata.cc \
src/core/lib/surface/version.cc \
- src/core/lib/surface/wait_for_cq_end_op.cc \
- src/core/lib/transport/batch_builder.cc \
src/core/lib/transport/bdp_estimator.cc \
src/core/lib/transport/call_arena_allocator.cc \
src/core/lib/transport/call_filters.cc \
diff --git a/Package.swift b/Package.swift
index ae298621153..333123a6fcd 100644
--- a/Package.swift
+++ b/Package.swift
@@ -1656,6 +1656,8 @@ let package = Package(
"src/core/lib/surface/call_log_batch.cc",
"src/core/lib/surface/call_test_only.h",
"src/core/lib/surface/call_trace.h",
+ "src/core/lib/surface/call_utils.cc",
+ "src/core/lib/surface/call_utils.h",
"src/core/lib/surface/channel.cc",
"src/core/lib/surface/channel.h",
"src/core/lib/surface/channel_create.cc",
@@ -1664,12 +1666,16 @@ let package = Package(
"src/core/lib/surface/channel_init.h",
"src/core/lib/surface/channel_stack_type.cc",
"src/core/lib/surface/channel_stack_type.h",
+ "src/core/lib/surface/client_call.cc",
+ "src/core/lib/surface/client_call.h",
"src/core/lib/surface/completion_queue.cc",
"src/core/lib/surface/completion_queue.h",
"src/core/lib/surface/completion_queue_factory.cc",
"src/core/lib/surface/completion_queue_factory.h",
"src/core/lib/surface/event_string.cc",
"src/core/lib/surface/event_string.h",
+ "src/core/lib/surface/filter_stack_call.cc",
+ "src/core/lib/surface/filter_stack_call.h",
"src/core/lib/surface/init.cc",
"src/core/lib/surface/init.h",
"src/core/lib/surface/init_internally.cc",
@@ -1679,13 +1685,11 @@ let package = Package(
"src/core/lib/surface/legacy_channel.cc",
"src/core/lib/surface/legacy_channel.h",
"src/core/lib/surface/metadata_array.cc",
+ "src/core/lib/surface/server_call.cc",
+ "src/core/lib/surface/server_call.h",
"src/core/lib/surface/validate_metadata.cc",
"src/core/lib/surface/validate_metadata.h",
"src/core/lib/surface/version.cc",
- "src/core/lib/surface/wait_for_cq_end_op.cc",
- "src/core/lib/surface/wait_for_cq_end_op.h",
- "src/core/lib/transport/batch_builder.cc",
- "src/core/lib/transport/batch_builder.h",
"src/core/lib/transport/bdp_estimator.cc",
"src/core/lib/transport/bdp_estimator.h",
"src/core/lib/transport/call_arena_allocator.cc",
diff --git a/bazel/experiments.bzl b/bazel/experiments.bzl
index 8dffc68bf21..ff0dc8cef75 100644
--- a/bazel/experiments.bzl
+++ b/bazel/experiments.bzl
@@ -32,9 +32,7 @@ EXPERIMENT_ENABLES = {
"multiping": "multiping",
"peer_state_based_framing": "peer_state_based_framing",
"pick_first_new": "pick_first_new",
- "promise_based_client_call": "event_engine_client,event_engine_listener,promise_based_client_call",
- "chaotic_good": "chaotic_good,event_engine_client,event_engine_listener,promise_based_client_call",
- "promise_based_inproc_transport": "event_engine_client,event_engine_listener,promise_based_client_call,promise_based_inproc_transport",
+ "promise_based_inproc_transport": "promise_based_inproc_transport",
"rstpit": "rstpit",
"schedule_cancellation_over_write": "schedule_cancellation_over_write",
"server_privacy": "server_privacy",
@@ -44,7 +42,6 @@ EXPERIMENT_ENABLES = {
"unconstrained_max_quota_buffer_size": "unconstrained_max_quota_buffer_size",
"work_serializer_clears_time_cache": "work_serializer_clears_time_cache",
"work_serializer_dispatch": "event_engine_client,work_serializer_dispatch",
- "call_v3": "call_v3,event_engine_client,event_engine_listener,work_serializer_dispatch",
}
EXPERIMENT_POLLERS = [
@@ -141,9 +138,7 @@ EXPERIMENTS = {
},
"off": {
"core_end2end_test": [
- "chaotic_good",
"event_engine_client",
- "promise_based_client_call",
],
"endpoint_test": [
"tcp_frame_size_tuning",
@@ -159,9 +154,6 @@ EXPERIMENTS = {
"tcp_frame_size_tuning",
"tcp_rcv_lowat",
],
- "lame_client_test": [
- "promise_based_client_call",
- ],
"resource_quota_test": [
"free_large_allocator",
"unconstrained_max_quota_buffer_size",
diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml
index 36fba504a47..792d48d015d 100644
--- a/build_autogenerated.yaml
+++ b/build_autogenerated.yaml
@@ -1078,20 +1078,22 @@ libs:
- src/core/lib/surface/call.h
- src/core/lib/surface/call_test_only.h
- src/core/lib/surface/call_trace.h
+ - src/core/lib/surface/call_utils.h
- src/core/lib/surface/channel.h
- src/core/lib/surface/channel_create.h
- src/core/lib/surface/channel_init.h
- src/core/lib/surface/channel_stack_type.h
+ - src/core/lib/surface/client_call.h
- src/core/lib/surface/completion_queue.h
- src/core/lib/surface/completion_queue_factory.h
- src/core/lib/surface/event_string.h
+ - src/core/lib/surface/filter_stack_call.h
- src/core/lib/surface/init.h
- src/core/lib/surface/init_internally.h
- src/core/lib/surface/lame_client.h
- src/core/lib/surface/legacy_channel.h
+ - src/core/lib/surface/server_call.h
- src/core/lib/surface/validate_metadata.h
- - src/core/lib/surface/wait_for_cq_end_op.h
- - src/core/lib/transport/batch_builder.h
- src/core/lib/transport/bdp_estimator.h
- src/core/lib/transport/call_arena_allocator.h
- src/core/lib/transport/call_destination.h
@@ -1891,22 +1893,24 @@ libs:
- src/core/lib/surface/call.cc
- src/core/lib/surface/call_details.cc
- src/core/lib/surface/call_log_batch.cc
+ - src/core/lib/surface/call_utils.cc
- src/core/lib/surface/channel.cc
- src/core/lib/surface/channel_create.cc
- src/core/lib/surface/channel_init.cc
- src/core/lib/surface/channel_stack_type.cc
+ - src/core/lib/surface/client_call.cc
- src/core/lib/surface/completion_queue.cc
- src/core/lib/surface/completion_queue_factory.cc
- src/core/lib/surface/event_string.cc
+ - src/core/lib/surface/filter_stack_call.cc
- src/core/lib/surface/init.cc
- src/core/lib/surface/init_internally.cc
- src/core/lib/surface/lame_client.cc
- src/core/lib/surface/legacy_channel.cc
- src/core/lib/surface/metadata_array.cc
+ - src/core/lib/surface/server_call.cc
- src/core/lib/surface/validate_metadata.cc
- src/core/lib/surface/version.cc
- - src/core/lib/surface/wait_for_cq_end_op.cc
- - src/core/lib/transport/batch_builder.cc
- src/core/lib/transport/bdp_estimator.cc
- src/core/lib/transport/call_arena_allocator.cc
- src/core/lib/transport/call_filters.cc
@@ -2588,20 +2592,22 @@ libs:
- src/core/lib/surface/call.h
- src/core/lib/surface/call_test_only.h
- src/core/lib/surface/call_trace.h
+ - src/core/lib/surface/call_utils.h
- src/core/lib/surface/channel.h
- src/core/lib/surface/channel_create.h
- src/core/lib/surface/channel_init.h
- src/core/lib/surface/channel_stack_type.h
+ - src/core/lib/surface/client_call.h
- src/core/lib/surface/completion_queue.h
- src/core/lib/surface/completion_queue_factory.h
- src/core/lib/surface/event_string.h
+ - src/core/lib/surface/filter_stack_call.h
- src/core/lib/surface/init.h
- src/core/lib/surface/init_internally.h
- src/core/lib/surface/lame_client.h
- src/core/lib/surface/legacy_channel.h
+ - src/core/lib/surface/server_call.h
- src/core/lib/surface/validate_metadata.h
- - src/core/lib/surface/wait_for_cq_end_op.h
- - src/core/lib/transport/batch_builder.h
- src/core/lib/transport/bdp_estimator.h
- src/core/lib/transport/call_arena_allocator.h
- src/core/lib/transport/call_destination.h
@@ -3013,22 +3019,24 @@ libs:
- src/core/lib/surface/call.cc
- src/core/lib/surface/call_details.cc
- src/core/lib/surface/call_log_batch.cc
+ - src/core/lib/surface/call_utils.cc
- src/core/lib/surface/channel.cc
- src/core/lib/surface/channel_create.cc
- src/core/lib/surface/channel_init.cc
- src/core/lib/surface/channel_stack_type.cc
+ - src/core/lib/surface/client_call.cc
- src/core/lib/surface/completion_queue.cc
- src/core/lib/surface/completion_queue_factory.cc
- src/core/lib/surface/event_string.cc
+ - src/core/lib/surface/filter_stack_call.cc
- src/core/lib/surface/init.cc
- src/core/lib/surface/init_internally.cc
- src/core/lib/surface/lame_client.cc
- src/core/lib/surface/legacy_channel.cc
- src/core/lib/surface/metadata_array.cc
+ - src/core/lib/surface/server_call.cc
- src/core/lib/surface/validate_metadata.cc
- src/core/lib/surface/version.cc
- - src/core/lib/surface/wait_for_cq_end_op.cc
- - src/core/lib/transport/batch_builder.cc
- src/core/lib/transport/bdp_estimator.cc
- src/core/lib/transport/call_arena_allocator.cc
- src/core/lib/transport/call_filters.cc
@@ -4532,6 +4540,7 @@ libs:
- src/core/lib/gprpp/ref_counted.h
- src/core/lib/gprpp/ref_counted_ptr.h
- src/core/lib/gprpp/ref_counted_string.h
+ - src/core/lib/gprpp/single_set_ptr.h
- src/core/lib/gprpp/sorted_pack.h
- src/core/lib/gprpp/status_helper.h
- src/core/lib/gprpp/table.h
@@ -4680,18 +4689,20 @@ libs:
- src/core/lib/surface/call.h
- src/core/lib/surface/call_test_only.h
- src/core/lib/surface/call_trace.h
+ - src/core/lib/surface/call_utils.h
- src/core/lib/surface/channel.h
- src/core/lib/surface/channel_init.h
- src/core/lib/surface/channel_stack_type.h
+ - src/core/lib/surface/client_call.h
- src/core/lib/surface/completion_queue.h
- src/core/lib/surface/completion_queue_factory.h
- src/core/lib/surface/event_string.h
+ - src/core/lib/surface/filter_stack_call.h
- src/core/lib/surface/init.h
- src/core/lib/surface/init_internally.h
- src/core/lib/surface/lame_client.h
+ - src/core/lib/surface/server_call.h
- src/core/lib/surface/validate_metadata.h
- - src/core/lib/surface/wait_for_cq_end_op.h
- - src/core/lib/transport/batch_builder.h
- src/core/lib/transport/call_arena_allocator.h
- src/core/lib/transport/call_destination.h
- src/core/lib/transport/call_filters.h
@@ -4983,19 +4994,21 @@ libs:
- src/core/lib/surface/call.cc
- src/core/lib/surface/call_details.cc
- src/core/lib/surface/call_log_batch.cc
+ - src/core/lib/surface/call_utils.cc
- src/core/lib/surface/channel.cc
- src/core/lib/surface/channel_init.cc
- src/core/lib/surface/channel_stack_type.cc
+ - src/core/lib/surface/client_call.cc
- src/core/lib/surface/completion_queue.cc
- src/core/lib/surface/completion_queue_factory.cc
- src/core/lib/surface/event_string.cc
+ - src/core/lib/surface/filter_stack_call.cc
- src/core/lib/surface/init_internally.cc
- src/core/lib/surface/lame_client.cc
- src/core/lib/surface/metadata_array.cc
+ - src/core/lib/surface/server_call.cc
- src/core/lib/surface/validate_metadata.cc
- src/core/lib/surface/version.cc
- - src/core/lib/surface/wait_for_cq_end_op.cc
- - src/core/lib/transport/batch_builder.cc
- src/core/lib/transport/call_arena_allocator.cc
- src/core/lib/transport/call_filters.cc
- src/core/lib/transport/call_final_info.cc
@@ -5837,6 +5850,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -5863,6 +5877,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6063,6 +6078,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6089,6 +6105,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6326,6 +6343,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6352,6 +6370,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6519,7 +6538,691 @@ targets:
- src/core/lib/transport/parsed_metadata.cc
- src/core/lib/transport/status_conversion.cc
- src/core/lib/transport/timeout_encoding.cc
- - test/core/transport/call_filters_test.cc
+ - test/core/transport/call_filters_test.cc
+ - third_party/upb/upb/mini_descriptor/build_enum.c
+ - third_party/upb/upb/mini_descriptor/decode.c
+ - third_party/upb/upb/mini_descriptor/internal/base92.c
+ - third_party/upb/upb/mini_descriptor/internal/encode.c
+ - third_party/upb/upb/mini_descriptor/link.c
+ - third_party/upb/upb/wire/decode.c
+ - third_party/upb/upb/wire/encode.c
+ - third_party/upb/upb/wire/eps_copy_input_stream.c
+ - third_party/upb/upb/wire/internal/decode_fast.c
+ - third_party/upb/upb/wire/reader.c
+ deps:
+ - gtest
+ - utf8_range_lib
+ - upb_message_lib
+ - absl/base:config
+ - absl/base:no_destructor
+ - absl/container:inlined_vector
+ - absl/functional:function_ref
+ - absl/hash:hash
+ - absl/meta:type_traits
+ - absl/status:statusor
+ - absl/utility:utility
+ - gpr
+ uses_polling: false
+- name: call_finalization_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - test/core/promise/test_context.h
+ src:
+ - test/core/channel/call_finalization_test.cc
+ deps:
+ - gtest
+ - grpc_test_util
+- name: call_host_override_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - src/core/ext/transport/chaotic_good/chaotic_good_transport.h
+ - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h
+ - src/core/ext/transport/chaotic_good/client_transport.h
+ - src/core/ext/transport/chaotic_good/frame.h
+ - src/core/ext/transport/chaotic_good/frame_header.h
+ - src/core/ext/transport/chaotic_good/server/chaotic_good_server.h
+ - src/core/ext/transport/chaotic_good/server_transport.h
+ - src/core/ext/transport/chaotic_good/settings_metadata.h
+ - src/core/lib/promise/event_engine_wakeup_scheduler.h
+ - src/core/lib/promise/inter_activity_latch.h
+ - src/core/lib/promise/inter_activity_pipe.h
+ - src/core/lib/promise/mpsc.h
+ - src/core/lib/promise/switch.h
+ - src/core/lib/promise/wait_for_callback.h
+ - src/core/lib/promise/wait_set.h
+ - src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
+ - test/core/end2end/cq_verifier.h
+ - test/core/end2end/end2end_tests.h
+ - test/core/end2end/fixtures/h2_oauth2_common.h
+ - test/core/end2end/fixtures/h2_ssl_cred_reload_fixture.h
+ - test/core/end2end/fixtures/h2_ssl_tls_common.h
+ - test/core/end2end/fixtures/h2_tls_common.h
+ - test/core/end2end/fixtures/http_proxy_fixture.h
+ - test/core/end2end/fixtures/inproc_fixture.h
+ - test/core/end2end/fixtures/local_util.h
+ - test/core/end2end/fixtures/proxy.h
+ - test/core/end2end/fixtures/secure_fixture.h
+ - test/core/end2end/fixtures/sockpair_fixture.h
+ - test/core/end2end/tests/cancel_test_helpers.h
+ - test/core/event_engine/event_engine_test_utils.h
+ - test/core/test_util/fake_stats_plugin.h
+ - test/core/test_util/test_lb_policies.h
+ src:
+ - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc
+ - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc
+ - src/core/ext/transport/chaotic_good/client_transport.cc
+ - src/core/ext/transport/chaotic_good/frame.cc
+ - src/core/ext/transport/chaotic_good/frame_header.cc
+ - src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc
+ - src/core/ext/transport/chaotic_good/server_transport.cc
+ - src/core/ext/transport/chaotic_good/settings_metadata.cc
+ - src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
+ - test/core/end2end/cq_verifier.cc
+ - test/core/end2end/end2end_test_main.cc
+ - test/core/end2end/end2end_test_suites.cc
+ - test/core/end2end/end2end_tests.cc
+ - test/core/end2end/fixtures/http_proxy_fixture.cc
+ - test/core/end2end/fixtures/local_util.cc
+ - test/core/end2end/fixtures/proxy.cc
+ - test/core/end2end/tests/call_host_override.cc
+ - test/core/event_engine/event_engine_test_utils.cc
+ - test/core/test_util/fake_stats_plugin.cc
+ - test/core/test_util/test_lb_policies.cc
+ deps:
+ - gtest
+ - grpc_authorization_provider
+ - grpc_unsecure
+ - grpc_test_util
+- name: call_tracer_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - test/core/test_util/fake_stats_plugin.h
+ src:
+ - test/core/telemetry/call_tracer_test.cc
+ - test/core/test_util/fake_stats_plugin.cc
+ deps:
+ - gtest
+ - grpc_test_util
+ uses_polling: false
+- name: call_utils_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - src/core/channelz/channel_trace.h
+ - src/core/channelz/channelz.h
+ - src/core/channelz/channelz_registry.h
+ - src/core/ext/upb-gen/google/protobuf/any.upb.h
+ - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h
+ - src/core/ext/upb-gen/google/rpc/status.upb.h
+ - src/core/ext/upb-gen/google/rpc/status.upb_minitable.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h
+ - src/core/handshaker/handshaker_factory.h
+ - src/core/handshaker/handshaker_registry.h
+ - src/core/handshaker/proxy_mapper.h
+ - src/core/handshaker/proxy_mapper_registry.h
+ - src/core/lib/address_utils/parse_address.h
+ - src/core/lib/address_utils/sockaddr_utils.h
+ - src/core/lib/avl/avl.h
+ - src/core/lib/backoff/backoff.h
+ - src/core/lib/channel/call_finalization.h
+ - src/core/lib/channel/channel_args.h
+ - src/core/lib/channel/channel_args_preconditioning.h
+ - src/core/lib/channel/channel_fwd.h
+ - src/core/lib/channel/channel_stack.h
+ - src/core/lib/channel/channel_stack_builder.h
+ - src/core/lib/channel/channel_stack_builder_impl.h
+ - src/core/lib/channel/channel_stack_trace.h
+ - src/core/lib/channel/connected_channel.h
+ - src/core/lib/channel/promise_based_filter.h
+ - src/core/lib/channel/status_util.h
+ - src/core/lib/compression/compression_internal.h
+ - src/core/lib/compression/message_compress.h
+ - src/core/lib/config/core_configuration.h
+ - src/core/lib/debug/event_log.h
+ - src/core/lib/debug/trace.h
+ - src/core/lib/event_engine/ares_resolver.h
+ - src/core/lib/event_engine/cf_engine/cf_engine.h
+ - src/core/lib/event_engine/cf_engine/cfstream_endpoint.h
+ - src/core/lib/event_engine/cf_engine/cftype_unique_ref.h
+ - src/core/lib/event_engine/cf_engine/dns_service_resolver.h
+ - src/core/lib/event_engine/channel_args_endpoint_config.h
+ - src/core/lib/event_engine/common_closures.h
+ - src/core/lib/event_engine/default_event_engine.h
+ - src/core/lib/event_engine/default_event_engine_factory.h
+ - src/core/lib/event_engine/event_engine_context.h
+ - src/core/lib/event_engine/extensions/can_track_errors.h
+ - src/core/lib/event_engine/extensions/chaotic_good_extension.h
+ - src/core/lib/event_engine/extensions/supports_fd.h
+ - src/core/lib/event_engine/extensions/tcp_trace.h
+ - src/core/lib/event_engine/forkable.h
+ - src/core/lib/event_engine/grpc_polled_fd.h
+ - src/core/lib/event_engine/handle_containers.h
+ - src/core/lib/event_engine/memory_allocator_factory.h
+ - src/core/lib/event_engine/nameser.h
+ - src/core/lib/event_engine/poller.h
+ - src/core/lib/event_engine/posix.h
+ - src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h
+ - src/core/lib/event_engine/posix_engine/ev_poll_posix.h
+ - src/core/lib/event_engine/posix_engine/event_poller.h
+ - src/core/lib/event_engine/posix_engine/event_poller_posix_default.h
+ - src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h
+ - src/core/lib/event_engine/posix_engine/internal_errqueue.h
+ - src/core/lib/event_engine/posix_engine/lockfree_event.h
+ - src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.h
+ - src/core/lib/event_engine/posix_engine/posix_endpoint.h
+ - src/core/lib/event_engine/posix_engine/posix_engine.h
+ - src/core/lib/event_engine/posix_engine/posix_engine_closure.h
+ - src/core/lib/event_engine/posix_engine/posix_engine_listener.h
+ - src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h
+ - src/core/lib/event_engine/posix_engine/tcp_socket_utils.h
+ - src/core/lib/event_engine/posix_engine/timer.h
+ - src/core/lib/event_engine/posix_engine/timer_heap.h
+ - src/core/lib/event_engine/posix_engine/timer_manager.h
+ - src/core/lib/event_engine/posix_engine/traced_buffer_list.h
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h
+ - src/core/lib/event_engine/query_extensions.h
+ - src/core/lib/event_engine/ref_counted_dns_resolver_interface.h
+ - src/core/lib/event_engine/resolved_address_internal.h
+ - src/core/lib/event_engine/shim.h
+ - src/core/lib/event_engine/tcp_socket_utils.h
+ - src/core/lib/event_engine/thread_pool/thread_count.h
+ - src/core/lib/event_engine/thread_pool/thread_pool.h
+ - src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h
+ - src/core/lib/event_engine/thready_event_engine/thready_event_engine.h
+ - src/core/lib/event_engine/time_util.h
+ - src/core/lib/event_engine/trace.h
+ - src/core/lib/event_engine/utils.h
+ - src/core/lib/event_engine/windows/grpc_polled_fd_windows.h
+ - src/core/lib/event_engine/windows/iocp.h
+ - src/core/lib/event_engine/windows/native_windows_dns_resolver.h
+ - src/core/lib/event_engine/windows/win_socket.h
+ - src/core/lib/event_engine/windows/windows_endpoint.h
+ - src/core/lib/event_engine/windows/windows_engine.h
+ - src/core/lib/event_engine/windows/windows_listener.h
+ - src/core/lib/event_engine/work_queue/basic_work_queue.h
+ - src/core/lib/event_engine/work_queue/work_queue.h
+ - src/core/lib/experiments/config.h
+ - src/core/lib/experiments/experiments.h
+ - src/core/lib/gprpp/atomic_utils.h
+ - src/core/lib/gprpp/bitset.h
+ - src/core/lib/gprpp/chunked_vector.h
+ - src/core/lib/gprpp/cpp_impl_of.h
+ - src/core/lib/gprpp/down_cast.h
+ - src/core/lib/gprpp/dual_ref_counted.h
+ - src/core/lib/gprpp/dump_args.h
+ - src/core/lib/gprpp/if_list.h
+ - src/core/lib/gprpp/load_file.h
+ - src/core/lib/gprpp/manual_constructor.h
+ - src/core/lib/gprpp/match.h
+ - src/core/lib/gprpp/notification.h
+ - src/core/lib/gprpp/orphanable.h
+ - src/core/lib/gprpp/overload.h
+ - src/core/lib/gprpp/packed_table.h
+ - src/core/lib/gprpp/per_cpu.h
+ - src/core/lib/gprpp/ref_counted.h
+ - src/core/lib/gprpp/ref_counted_ptr.h
+ - src/core/lib/gprpp/ref_counted_string.h
+ - src/core/lib/gprpp/single_set_ptr.h
+ - src/core/lib/gprpp/sorted_pack.h
+ - src/core/lib/gprpp/status_helper.h
+ - src/core/lib/gprpp/table.h
+ - src/core/lib/gprpp/time.h
+ - src/core/lib/gprpp/time_averaged_stats.h
+ - src/core/lib/gprpp/type_list.h
+ - src/core/lib/gprpp/unique_type_name.h
+ - src/core/lib/gprpp/validation_errors.h
+ - src/core/lib/gprpp/work_serializer.h
+ - src/core/lib/iomgr/block_annotate.h
+ - src/core/lib/iomgr/buffer_list.h
+ - src/core/lib/iomgr/call_combiner.h
+ - src/core/lib/iomgr/cfstream_handle.h
+ - src/core/lib/iomgr/closure.h
+ - src/core/lib/iomgr/combiner.h
+ - src/core/lib/iomgr/dynamic_annotations.h
+ - src/core/lib/iomgr/endpoint.h
+ - src/core/lib/iomgr/endpoint_cfstream.h
+ - src/core/lib/iomgr/endpoint_pair.h
+ - src/core/lib/iomgr/error.h
+ - src/core/lib/iomgr/error_cfstream.h
+ - src/core/lib/iomgr/ev_apple.h
+ - src/core/lib/iomgr/ev_epoll1_linux.h
+ - src/core/lib/iomgr/ev_poll_posix.h
+ - src/core/lib/iomgr/ev_posix.h
+ - src/core/lib/iomgr/event_engine_shims/closure.h
+ - src/core/lib/iomgr/event_engine_shims/endpoint.h
+ - src/core/lib/iomgr/event_engine_shims/tcp_client.h
+ - src/core/lib/iomgr/exec_ctx.h
+ - src/core/lib/iomgr/executor.h
+ - src/core/lib/iomgr/gethostname.h
+ - src/core/lib/iomgr/grpc_if_nametoindex.h
+ - src/core/lib/iomgr/internal_errqueue.h
+ - src/core/lib/iomgr/iocp_windows.h
+ - src/core/lib/iomgr/iomgr.h
+ - src/core/lib/iomgr/iomgr_fwd.h
+ - src/core/lib/iomgr/iomgr_internal.h
+ - src/core/lib/iomgr/lockfree_event.h
+ - src/core/lib/iomgr/nameser.h
+ - src/core/lib/iomgr/polling_entity.h
+ - src/core/lib/iomgr/pollset.h
+ - src/core/lib/iomgr/pollset_set.h
+ - src/core/lib/iomgr/pollset_set_windows.h
+ - src/core/lib/iomgr/pollset_windows.h
+ - src/core/lib/iomgr/port.h
+ - src/core/lib/iomgr/python_util.h
+ - src/core/lib/iomgr/resolve_address.h
+ - src/core/lib/iomgr/resolve_address_impl.h
+ - src/core/lib/iomgr/resolve_address_posix.h
+ - src/core/lib/iomgr/resolve_address_windows.h
+ - src/core/lib/iomgr/resolved_address.h
+ - src/core/lib/iomgr/sockaddr.h
+ - src/core/lib/iomgr/sockaddr_posix.h
+ - src/core/lib/iomgr/sockaddr_windows.h
+ - src/core/lib/iomgr/socket_factory_posix.h
+ - src/core/lib/iomgr/socket_mutator.h
+ - src/core/lib/iomgr/socket_utils.h
+ - src/core/lib/iomgr/socket_utils_posix.h
+ - src/core/lib/iomgr/socket_windows.h
+ - src/core/lib/iomgr/systemd_utils.h
+ - src/core/lib/iomgr/tcp_client.h
+ - src/core/lib/iomgr/tcp_client_posix.h
+ - src/core/lib/iomgr/tcp_posix.h
+ - src/core/lib/iomgr/tcp_server.h
+ - src/core/lib/iomgr/tcp_server_utils_posix.h
+ - src/core/lib/iomgr/tcp_windows.h
+ - src/core/lib/iomgr/timer.h
+ - src/core/lib/iomgr/timer_generic.h
+ - src/core/lib/iomgr/timer_heap.h
+ - src/core/lib/iomgr/timer_manager.h
+ - src/core/lib/iomgr/unix_sockets_posix.h
+ - src/core/lib/iomgr/vsock.h
+ - src/core/lib/iomgr/wakeup_fd_pipe.h
+ - src/core/lib/iomgr/wakeup_fd_posix.h
+ - src/core/lib/promise/activity.h
+ - src/core/lib/promise/all_ok.h
+ - src/core/lib/promise/arena_promise.h
+ - src/core/lib/promise/cancel_callback.h
+ - src/core/lib/promise/context.h
+ - src/core/lib/promise/detail/basic_seq.h
+ - src/core/lib/promise/detail/join_state.h
+ - src/core/lib/promise/detail/promise_factory.h
+ - src/core/lib/promise/detail/promise_like.h
+ - src/core/lib/promise/detail/seq_state.h
+ - src/core/lib/promise/detail/status.h
+ - src/core/lib/promise/exec_ctx_wakeup_scheduler.h
+ - src/core/lib/promise/for_each.h
+ - src/core/lib/promise/if.h
+ - src/core/lib/promise/interceptor_list.h
+ - src/core/lib/promise/latch.h
+ - src/core/lib/promise/loop.h
+ - src/core/lib/promise/map.h
+ - src/core/lib/promise/party.h
+ - src/core/lib/promise/pipe.h
+ - src/core/lib/promise/poll.h
+ - src/core/lib/promise/prioritized_race.h
+ - src/core/lib/promise/promise.h
+ - src/core/lib/promise/race.h
+ - src/core/lib/promise/seq.h
+ - src/core/lib/promise/status_flag.h
+ - src/core/lib/promise/trace.h
+ - src/core/lib/promise/try_seq.h
+ - src/core/lib/resource_quota/api.h
+ - src/core/lib/resource_quota/arena.h
+ - src/core/lib/resource_quota/connection_quota.h
+ - src/core/lib/resource_quota/memory_quota.h
+ - src/core/lib/resource_quota/periodic_update.h
+ - src/core/lib/resource_quota/resource_quota.h
+ - src/core/lib/resource_quota/thread_quota.h
+ - src/core/lib/resource_quota/trace.h
+ - src/core/lib/security/certificate_provider/certificate_provider_factory.h
+ - src/core/lib/security/certificate_provider/certificate_provider_registry.h
+ - src/core/lib/security/credentials/alts/check_gcp_environment.h
+ - src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h
+ - src/core/lib/security/credentials/channel_creds_registry.h
+ - src/core/lib/slice/percent_encoding.h
+ - src/core/lib/slice/slice.h
+ - src/core/lib/slice/slice_buffer.h
+ - src/core/lib/slice/slice_internal.h
+ - src/core/lib/slice/slice_refcount.h
+ - src/core/lib/slice/slice_string_helpers.h
+ - src/core/lib/surface/api_trace.h
+ - src/core/lib/surface/call.h
+ - src/core/lib/surface/call_test_only.h
+ - src/core/lib/surface/call_trace.h
+ - src/core/lib/surface/call_utils.h
+ - src/core/lib/surface/channel.h
+ - src/core/lib/surface/channel_init.h
+ - src/core/lib/surface/channel_stack_type.h
+ - src/core/lib/surface/client_call.h
+ - src/core/lib/surface/completion_queue.h
+ - src/core/lib/surface/completion_queue_factory.h
+ - src/core/lib/surface/event_string.h
+ - src/core/lib/surface/filter_stack_call.h
+ - src/core/lib/surface/init.h
+ - src/core/lib/surface/init_internally.h
+ - src/core/lib/surface/lame_client.h
+ - src/core/lib/surface/server_call.h
+ - src/core/lib/surface/validate_metadata.h
+ - src/core/lib/transport/call_arena_allocator.h
+ - src/core/lib/transport/call_destination.h
+ - src/core/lib/transport/call_filters.h
+ - src/core/lib/transport/call_final_info.h
+ - src/core/lib/transport/call_spine.h
+ - src/core/lib/transport/connectivity_state.h
+ - src/core/lib/transport/custom_metadata.h
+ - src/core/lib/transport/error_utils.h
+ - src/core/lib/transport/http2_errors.h
+ - src/core/lib/transport/interception_chain.h
+ - src/core/lib/transport/message.h
+ - src/core/lib/transport/metadata.h
+ - src/core/lib/transport/metadata_batch.h
+ - src/core/lib/transport/metadata_compression_traits.h
+ - src/core/lib/transport/parsed_metadata.h
+ - src/core/lib/transport/simple_slice_based_metadata.h
+ - src/core/lib/transport/status_conversion.h
+ - src/core/lib/transport/timeout_encoding.h
+ - src/core/lib/transport/transport.h
+ - src/core/lib/transport/transport_fwd.h
+ - src/core/lib/uri/uri_parser.h
+ - src/core/load_balancing/backend_metric_data.h
+ - src/core/load_balancing/lb_policy.h
+ - src/core/load_balancing/lb_policy_factory.h
+ - src/core/load_balancing/lb_policy_registry.h
+ - src/core/load_balancing/subchannel_interface.h
+ - src/core/resolver/endpoint_addresses.h
+ - src/core/resolver/resolver.h
+ - src/core/resolver/resolver_factory.h
+ - src/core/resolver/resolver_registry.h
+ - src/core/resolver/server_address.h
+ - src/core/server/server_interface.h
+ - src/core/service_config/service_config.h
+ - src/core/service_config/service_config_call_data.h
+ - src/core/service_config/service_config_parser.h
+ - src/core/telemetry/call_tracer.h
+ - src/core/telemetry/histogram_view.h
+ - src/core/telemetry/metrics.h
+ - src/core/telemetry/stats.h
+ - src/core/telemetry/stats_data.h
+ - src/core/telemetry/tcp_tracer.h
+ - src/core/tsi/alts/handshaker/transport_security_common_api.h
+ - src/core/util/json/json.h
+ - src/core/util/json/json_args.h
+ - src/core/util/json/json_writer.h
+ - src/core/util/spinlock.h
+ - third_party/upb/upb/generated_code_support.h
+ - third_party/upb/upb/mini_descriptor/build_enum.h
+ - third_party/upb/upb/mini_descriptor/decode.h
+ - third_party/upb/upb/mini_descriptor/internal/base92.h
+ - third_party/upb/upb/mini_descriptor/internal/decoder.h
+ - third_party/upb/upb/mini_descriptor/internal/encode.h
+ - third_party/upb/upb/mini_descriptor/internal/encode.hpp
+ - third_party/upb/upb/mini_descriptor/internal/modifiers.h
+ - third_party/upb/upb/mini_descriptor/internal/wire_constants.h
+ - third_party/upb/upb/mini_descriptor/link.h
+ - third_party/upb/upb/wire/decode.h
+ - third_party/upb/upb/wire/encode.h
+ - third_party/upb/upb/wire/eps_copy_input_stream.h
+ - third_party/upb/upb/wire/internal/constants.h
+ - third_party/upb/upb/wire/internal/decode_fast.h
+ - third_party/upb/upb/wire/internal/decoder.h
+ - third_party/upb/upb/wire/internal/reader.h
+ - third_party/upb/upb/wire/reader.h
+ - third_party/upb/upb/wire/types.h
+ src:
+ - src/core/channelz/channel_trace.cc
+ - src/core/channelz/channelz.cc
+ - src/core/channelz/channelz_registry.cc
+ - src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c
+ - src/core/ext/upb-gen/google/rpc/status.upb_minitable.c
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c
+ - src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c
+ - src/core/handshaker/handshaker_registry.cc
+ - src/core/handshaker/proxy_mapper_registry.cc
+ - src/core/lib/address_utils/parse_address.cc
+ - src/core/lib/address_utils/sockaddr_utils.cc
+ - src/core/lib/backoff/backoff.cc
+ - src/core/lib/channel/channel_args.cc
+ - src/core/lib/channel/channel_args_preconditioning.cc
+ - src/core/lib/channel/channel_stack.cc
+ - src/core/lib/channel/channel_stack_builder.cc
+ - src/core/lib/channel/channel_stack_builder_impl.cc
+ - src/core/lib/channel/channel_stack_trace.cc
+ - src/core/lib/channel/connected_channel.cc
+ - src/core/lib/channel/promise_based_filter.cc
+ - src/core/lib/channel/status_util.cc
+ - src/core/lib/compression/compression.cc
+ - src/core/lib/compression/compression_internal.cc
+ - src/core/lib/compression/message_compress.cc
+ - src/core/lib/config/core_configuration.cc
+ - src/core/lib/debug/event_log.cc
+ - src/core/lib/debug/trace.cc
+ - src/core/lib/event_engine/ares_resolver.cc
+ - src/core/lib/event_engine/cf_engine/cf_engine.cc
+ - src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc
+ - src/core/lib/event_engine/cf_engine/dns_service_resolver.cc
+ - src/core/lib/event_engine/channel_args_endpoint_config.cc
+ - src/core/lib/event_engine/default_event_engine.cc
+ - src/core/lib/event_engine/default_event_engine_factory.cc
+ - src/core/lib/event_engine/event_engine.cc
+ - src/core/lib/event_engine/forkable.cc
+ - src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc
+ - src/core/lib/event_engine/posix_engine/ev_poll_posix.cc
+ - src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc
+ - src/core/lib/event_engine/posix_engine/internal_errqueue.cc
+ - src/core/lib/event_engine/posix_engine/lockfree_event.cc
+ - src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc
+ - src/core/lib/event_engine/posix_engine/posix_endpoint.cc
+ - src/core/lib/event_engine/posix_engine/posix_engine.cc
+ - src/core/lib/event_engine/posix_engine/posix_engine_listener.cc
+ - src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc
+ - src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc
+ - src/core/lib/event_engine/posix_engine/timer.cc
+ - src/core/lib/event_engine/posix_engine/timer_heap.cc
+ - src/core/lib/event_engine/posix_engine/timer_manager.cc
+ - src/core/lib/event_engine/posix_engine/traced_buffer_list.cc
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc
+ - src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc
+ - src/core/lib/event_engine/resolved_address.cc
+ - src/core/lib/event_engine/shim.cc
+ - src/core/lib/event_engine/slice.cc
+ - src/core/lib/event_engine/slice_buffer.cc
+ - src/core/lib/event_engine/tcp_socket_utils.cc
+ - src/core/lib/event_engine/thread_pool/thread_count.cc
+ - src/core/lib/event_engine/thread_pool/thread_pool_factory.cc
+ - src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc
+ - src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc
+ - src/core/lib/event_engine/time_util.cc
+ - src/core/lib/event_engine/trace.cc
+ - src/core/lib/event_engine/utils.cc
+ - src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc
+ - src/core/lib/event_engine/windows/iocp.cc
+ - src/core/lib/event_engine/windows/native_windows_dns_resolver.cc
+ - src/core/lib/event_engine/windows/win_socket.cc
+ - src/core/lib/event_engine/windows/windows_endpoint.cc
+ - src/core/lib/event_engine/windows/windows_engine.cc
+ - src/core/lib/event_engine/windows/windows_listener.cc
+ - src/core/lib/event_engine/work_queue/basic_work_queue.cc
+ - src/core/lib/experiments/config.cc
+ - src/core/lib/experiments/experiments.cc
+ - src/core/lib/gprpp/dump_args.cc
+ - src/core/lib/gprpp/load_file.cc
+ - src/core/lib/gprpp/per_cpu.cc
+ - src/core/lib/gprpp/ref_counted_string.cc
+ - src/core/lib/gprpp/status_helper.cc
+ - src/core/lib/gprpp/time.cc
+ - src/core/lib/gprpp/time_averaged_stats.cc
+ - src/core/lib/gprpp/validation_errors.cc
+ - src/core/lib/gprpp/work_serializer.cc
+ - src/core/lib/iomgr/buffer_list.cc
+ - src/core/lib/iomgr/call_combiner.cc
+ - src/core/lib/iomgr/cfstream_handle.cc
+ - src/core/lib/iomgr/closure.cc
+ - src/core/lib/iomgr/combiner.cc
+ - src/core/lib/iomgr/dualstack_socket_posix.cc
+ - src/core/lib/iomgr/endpoint.cc
+ - src/core/lib/iomgr/endpoint_cfstream.cc
+ - src/core/lib/iomgr/endpoint_pair_posix.cc
+ - src/core/lib/iomgr/endpoint_pair_windows.cc
+ - src/core/lib/iomgr/error.cc
+ - src/core/lib/iomgr/error_cfstream.cc
+ - src/core/lib/iomgr/ev_apple.cc
+ - src/core/lib/iomgr/ev_epoll1_linux.cc
+ - src/core/lib/iomgr/ev_poll_posix.cc
+ - src/core/lib/iomgr/ev_posix.cc
+ - src/core/lib/iomgr/ev_windows.cc
+ - src/core/lib/iomgr/event_engine_shims/closure.cc
+ - src/core/lib/iomgr/event_engine_shims/endpoint.cc
+ - src/core/lib/iomgr/event_engine_shims/tcp_client.cc
+ - src/core/lib/iomgr/exec_ctx.cc
+ - src/core/lib/iomgr/executor.cc
+ - src/core/lib/iomgr/fork_posix.cc
+ - src/core/lib/iomgr/fork_windows.cc
+ - src/core/lib/iomgr/gethostname_fallback.cc
+ - src/core/lib/iomgr/gethostname_host_name_max.cc
+ - src/core/lib/iomgr/gethostname_sysconf.cc
+ - src/core/lib/iomgr/grpc_if_nametoindex_posix.cc
+ - src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc
+ - src/core/lib/iomgr/internal_errqueue.cc
+ - src/core/lib/iomgr/iocp_windows.cc
+ - src/core/lib/iomgr/iomgr.cc
+ - src/core/lib/iomgr/iomgr_internal.cc
+ - src/core/lib/iomgr/iomgr_posix.cc
+ - src/core/lib/iomgr/iomgr_posix_cfstream.cc
+ - src/core/lib/iomgr/iomgr_windows.cc
+ - src/core/lib/iomgr/lockfree_event.cc
+ - src/core/lib/iomgr/polling_entity.cc
+ - src/core/lib/iomgr/pollset.cc
+ - src/core/lib/iomgr/pollset_set.cc
+ - src/core/lib/iomgr/pollset_set_windows.cc
+ - src/core/lib/iomgr/pollset_windows.cc
+ - src/core/lib/iomgr/resolve_address.cc
+ - src/core/lib/iomgr/resolve_address_posix.cc
+ - src/core/lib/iomgr/resolve_address_windows.cc
+ - src/core/lib/iomgr/sockaddr_utils_posix.cc
+ - src/core/lib/iomgr/socket_factory_posix.cc
+ - src/core/lib/iomgr/socket_mutator.cc
+ - src/core/lib/iomgr/socket_utils_common_posix.cc
+ - src/core/lib/iomgr/socket_utils_linux.cc
+ - src/core/lib/iomgr/socket_utils_posix.cc
+ - src/core/lib/iomgr/socket_utils_windows.cc
+ - src/core/lib/iomgr/socket_windows.cc
+ - src/core/lib/iomgr/systemd_utils.cc
+ - src/core/lib/iomgr/tcp_client.cc
+ - src/core/lib/iomgr/tcp_client_cfstream.cc
+ - src/core/lib/iomgr/tcp_client_posix.cc
+ - src/core/lib/iomgr/tcp_client_windows.cc
+ - src/core/lib/iomgr/tcp_posix.cc
+ - src/core/lib/iomgr/tcp_server.cc
+ - src/core/lib/iomgr/tcp_server_posix.cc
+ - src/core/lib/iomgr/tcp_server_utils_posix_common.cc
+ - src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
+ - src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc
+ - src/core/lib/iomgr/tcp_server_windows.cc
+ - src/core/lib/iomgr/tcp_windows.cc
+ - src/core/lib/iomgr/timer.cc
+ - src/core/lib/iomgr/timer_generic.cc
+ - src/core/lib/iomgr/timer_heap.cc
+ - src/core/lib/iomgr/timer_manager.cc
+ - src/core/lib/iomgr/unix_sockets_posix.cc
+ - src/core/lib/iomgr/unix_sockets_posix_noop.cc
+ - src/core/lib/iomgr/vsock.cc
+ - src/core/lib/iomgr/wakeup_fd_eventfd.cc
+ - src/core/lib/iomgr/wakeup_fd_nospecial.cc
+ - src/core/lib/iomgr/wakeup_fd_pipe.cc
+ - src/core/lib/iomgr/wakeup_fd_posix.cc
+ - src/core/lib/promise/activity.cc
+ - src/core/lib/promise/party.cc
+ - src/core/lib/promise/trace.cc
+ - src/core/lib/resource_quota/api.cc
+ - src/core/lib/resource_quota/arena.cc
+ - src/core/lib/resource_quota/connection_quota.cc
+ - src/core/lib/resource_quota/memory_quota.cc
+ - src/core/lib/resource_quota/periodic_update.cc
+ - src/core/lib/resource_quota/resource_quota.cc
+ - src/core/lib/resource_quota/thread_quota.cc
+ - src/core/lib/resource_quota/trace.cc
+ - src/core/lib/security/certificate_provider/certificate_provider_registry.cc
+ - src/core/lib/security/credentials/alts/check_gcp_environment.cc
+ - src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc
+ - src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc
+ - src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc
+ - src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc
+ - src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc
+ - src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc
+ - src/core/lib/slice/percent_encoding.cc
+ - src/core/lib/slice/slice.cc
+ - src/core/lib/slice/slice_buffer.cc
+ - src/core/lib/slice/slice_refcount.cc
+ - src/core/lib/slice/slice_string_helpers.cc
+ - src/core/lib/surface/api_trace.cc
+ - src/core/lib/surface/byte_buffer.cc
+ - src/core/lib/surface/byte_buffer_reader.cc
+ - src/core/lib/surface/call.cc
+ - src/core/lib/surface/call_details.cc
+ - src/core/lib/surface/call_log_batch.cc
+ - src/core/lib/surface/call_utils.cc
+ - src/core/lib/surface/channel.cc
+ - src/core/lib/surface/channel_init.cc
+ - src/core/lib/surface/channel_stack_type.cc
+ - src/core/lib/surface/client_call.cc
+ - src/core/lib/surface/completion_queue.cc
+ - src/core/lib/surface/completion_queue_factory.cc
+ - src/core/lib/surface/event_string.cc
+ - src/core/lib/surface/filter_stack_call.cc
+ - src/core/lib/surface/init_internally.cc
+ - src/core/lib/surface/lame_client.cc
+ - src/core/lib/surface/metadata_array.cc
+ - src/core/lib/surface/server_call.cc
+ - src/core/lib/surface/validate_metadata.cc
+ - src/core/lib/surface/version.cc
+ - src/core/lib/transport/call_arena_allocator.cc
+ - src/core/lib/transport/call_filters.cc
+ - src/core/lib/transport/call_final_info.cc
+ - src/core/lib/transport/call_spine.cc
+ - src/core/lib/transport/connectivity_state.cc
+ - src/core/lib/transport/error_utils.cc
+ - src/core/lib/transport/interception_chain.cc
+ - src/core/lib/transport/message.cc
+ - src/core/lib/transport/metadata.cc
+ - src/core/lib/transport/metadata_batch.cc
+ - src/core/lib/transport/parsed_metadata.cc
+ - src/core/lib/transport/status_conversion.cc
+ - src/core/lib/transport/timeout_encoding.cc
+ - src/core/lib/transport/transport.cc
+ - src/core/lib/transport/transport_op_string.cc
+ - src/core/lib/uri/uri_parser.cc
+ - src/core/load_balancing/lb_policy.cc
+ - src/core/load_balancing/lb_policy_registry.cc
+ - src/core/resolver/endpoint_addresses.cc
+ - src/core/resolver/resolver.cc
+ - src/core/resolver/resolver_registry.cc
+ - src/core/service_config/service_config_parser.cc
+ - src/core/telemetry/call_tracer.cc
+ - src/core/telemetry/histogram_view.cc
+ - src/core/telemetry/metrics.cc
+ - src/core/telemetry/stats.cc
+ - src/core/telemetry/stats_data.cc
+ - src/core/tsi/alts/handshaker/transport_security_common_api.cc
+ - src/core/util/json/json_writer.cc
+ - test/core/call/call_utils_test.cc
- third_party/upb/upb/mini_descriptor/build_enum.c
- third_party/upb/upb/mini_descriptor/decode.c
- third_party/upb/upb/mini_descriptor/internal/base92.c
@@ -6534,103 +7237,21 @@ targets:
- gtest
- utf8_range_lib
- upb_message_lib
+ - z
- absl/base:config
- absl/base:no_destructor
+ - absl/cleanup:cleanup
+ - absl/container:flat_hash_map
- absl/container:inlined_vector
- absl/functional:function_ref
- absl/hash:hash
- absl/meta:type_traits
- absl/status:statusor
+ - absl/types:span
- absl/utility:utility
+ - cares
- gpr
- uses_polling: false
-- name: call_finalization_test
- gtest: true
- build: test
- language: c++
- headers:
- - test/core/promise/test_context.h
- src:
- - test/core/channel/call_finalization_test.cc
- deps:
- - gtest
- - grpc_test_util
-- name: call_host_override_test
- gtest: true
- build: test
- language: c++
- headers:
- - src/core/ext/transport/chaotic_good/chaotic_good_transport.h
- - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h
- - src/core/ext/transport/chaotic_good/client_transport.h
- - src/core/ext/transport/chaotic_good/frame.h
- - src/core/ext/transport/chaotic_good/frame_header.h
- - src/core/ext/transport/chaotic_good/server/chaotic_good_server.h
- - src/core/ext/transport/chaotic_good/server_transport.h
- - src/core/ext/transport/chaotic_good/settings_metadata.h
- - src/core/lib/promise/event_engine_wakeup_scheduler.h
- - src/core/lib/promise/inter_activity_latch.h
- - src/core/lib/promise/inter_activity_pipe.h
- - src/core/lib/promise/mpsc.h
- - src/core/lib/promise/switch.h
- - src/core/lib/promise/wait_for_callback.h
- - src/core/lib/promise/wait_set.h
- - src/core/lib/transport/promise_endpoint.h
- - test/core/end2end/cq_verifier.h
- - test/core/end2end/end2end_tests.h
- - test/core/end2end/fixtures/h2_oauth2_common.h
- - test/core/end2end/fixtures/h2_ssl_cred_reload_fixture.h
- - test/core/end2end/fixtures/h2_ssl_tls_common.h
- - test/core/end2end/fixtures/h2_tls_common.h
- - test/core/end2end/fixtures/http_proxy_fixture.h
- - test/core/end2end/fixtures/inproc_fixture.h
- - test/core/end2end/fixtures/local_util.h
- - test/core/end2end/fixtures/proxy.h
- - test/core/end2end/fixtures/secure_fixture.h
- - test/core/end2end/fixtures/sockpair_fixture.h
- - test/core/end2end/tests/cancel_test_helpers.h
- - test/core/event_engine/event_engine_test_utils.h
- - test/core/test_util/fake_stats_plugin.h
- - test/core/test_util/test_lb_policies.h
- src:
- - src/core/ext/transport/chaotic_good/chaotic_good_transport.cc
- - src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc
- - src/core/ext/transport/chaotic_good/client_transport.cc
- - src/core/ext/transport/chaotic_good/frame.cc
- - src/core/ext/transport/chaotic_good/frame_header.cc
- - src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc
- - src/core/ext/transport/chaotic_good/server_transport.cc
- - src/core/ext/transport/chaotic_good/settings_metadata.cc
- - src/core/lib/transport/promise_endpoint.cc
- - test/core/end2end/cq_verifier.cc
- - test/core/end2end/end2end_test_main.cc
- - test/core/end2end/end2end_test_suites.cc
- - test/core/end2end/end2end_tests.cc
- - test/core/end2end/fixtures/http_proxy_fixture.cc
- - test/core/end2end/fixtures/local_util.cc
- - test/core/end2end/fixtures/proxy.cc
- - test/core/end2end/tests/call_host_override.cc
- - test/core/event_engine/event_engine_test_utils.cc
- - test/core/test_util/fake_stats_plugin.cc
- - test/core/test_util/test_lb_policies.cc
- deps:
- - gtest
- - grpc_authorization_provider
- - grpc_unsecure
- - grpc_test_util
-- name: call_tracer_test
- gtest: true
- build: test
- language: c++
- headers:
- - test/core/test_util/fake_stats_plugin.h
- src:
- - test/core/telemetry/call_tracer_test.cc
- - test/core/test_util/fake_stats_plugin.cc
- deps:
- - gtest
- - grpc_test_util
- uses_polling: false
+ - address_sorting
- name: cancel_after_accept_test
gtest: true
build: test
@@ -6652,6 +7273,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6678,6 +7300,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6715,6 +7338,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6741,6 +7365,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6778,6 +7403,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6804,6 +7430,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6841,6 +7468,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6867,6 +7495,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -6921,6 +7550,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -6947,6 +7577,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -7109,6 +7740,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -7135,6 +7767,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -7172,6 +7805,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -7198,6 +7832,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -7966,6 +8601,33 @@ targets:
- protobuf
- grpc_test_util
uses_polling: false
+- name: client_call_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - test/core/call/batch_builder.h
+ - test/core/call/yodel/yodel_test.h
+ - test/core/end2end/cq_verifier.h
+ - test/core/event_engine/event_engine_test_utils.h
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
+ src:
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
+ - test/core/call/batch_builder.cc
+ - test/core/call/client_call_test.cc
+ - test/core/call/yodel/test_main.cc
+ - test/core/call/yodel/yodel_test.cc
+ - test/core/end2end/cq_verifier.cc
+ - test/core/event_engine/event_engine_test_utils.cc
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
+ deps:
+ - gtest
+ - protobuf
+ - grpc_test_util
+ platforms:
+ - linux
+ - posix
+ uses_polling: false
- name: client_callback_end2end_test
gtest: true
build: test
@@ -8001,12 +8663,14 @@ targets:
language: c++
headers:
- test/core/call/yodel/yodel_test.h
+ - test/core/event_engine/event_engine_test_utils.h
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
src:
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
- test/core/call/yodel/test_main.cc
- test/core/call/yodel/yodel_test.cc
- test/core/client_channel/client_channel_test.cc
+ - test/core/event_engine/event_engine_test_utils.cc
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
deps:
- gtest
@@ -8128,6 +8792,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8154,6 +8819,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -8302,6 +8968,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8328,6 +8995,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -8371,12 +9039,14 @@ targets:
language: c++
headers:
- test/core/call/yodel/yodel_test.h
+ - test/core/event_engine/event_engine_test_utils.h
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
src:
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
- test/core/call/yodel/test_main.cc
- test/core/call/yodel/yodel_test.cc
- test/core/client_channel/connected_subchannel_test.cc
+ - test/core/event_engine/event_engine_test_utils.cc
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
deps:
- gtest
@@ -8462,6 +9132,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8488,6 +9159,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -8631,6 +9303,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8657,6 +9330,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -8731,6 +9405,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8757,6 +9432,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -8881,6 +9557,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -8907,6 +9584,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -9664,6 +10342,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -9690,6 +10369,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -9727,6 +10407,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -9753,6 +10434,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -9808,6 +10490,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -9834,6 +10517,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -10341,6 +11025,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -10367,6 +11052,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -10536,6 +11222,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -10562,6 +11249,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -10947,6 +11635,7 @@ targets:
build: test
language: c++
headers:
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/data/ssl_test_data.h
- test/core/end2end/end2end_tests.h
@@ -10961,6 +11650,7 @@ targets:
- test/core/end2end/tests/cancel_test_helpers.h
- test/core/event_engine/event_engine_test_utils.h
src:
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/data/client_certs.cc
- test/core/end2end/data/server1_cert.cc
@@ -11093,6 +11783,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -11119,6 +11810,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -11287,6 +11979,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -11313,6 +12006,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -11374,6 +12068,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -11400,6 +12095,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -11552,12 +12248,14 @@ targets:
language: c++
headers:
- test/core/call/yodel/yodel_test.h
+ - test/core/event_engine/event_engine_test_utils.h
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
- test/core/transport/test_suite/transport_test.h
src:
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
- test/core/call/yodel/test_main.cc
- test/core/call/yodel/yodel_test.cc
+ - test/core/event_engine/event_engine_test_utils.cc
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
- test/core/transport/test_suite/call_content.cc
- test/core/transport/test_suite/call_shapes.cc
@@ -11780,6 +12478,7 @@ targets:
- src/core/lib/gprpp/ref_counted.h
- src/core/lib/gprpp/ref_counted_ptr.h
- src/core/lib/gprpp/ref_counted_string.h
+ - src/core/lib/gprpp/single_set_ptr.h
- src/core/lib/gprpp/sorted_pack.h
- src/core/lib/gprpp/status_helper.h
- src/core/lib/gprpp/table.h
@@ -11905,18 +12604,20 @@ targets:
- src/core/lib/surface/call.h
- src/core/lib/surface/call_test_only.h
- src/core/lib/surface/call_trace.h
+ - src/core/lib/surface/call_utils.h
- src/core/lib/surface/channel.h
- src/core/lib/surface/channel_init.h
- src/core/lib/surface/channel_stack_type.h
+ - src/core/lib/surface/client_call.h
- src/core/lib/surface/completion_queue.h
- src/core/lib/surface/completion_queue_factory.h
- src/core/lib/surface/event_string.h
+ - src/core/lib/surface/filter_stack_call.h
- src/core/lib/surface/init.h
- src/core/lib/surface/init_internally.h
- src/core/lib/surface/lame_client.h
+ - src/core/lib/surface/server_call.h
- src/core/lib/surface/validate_metadata.h
- - src/core/lib/surface/wait_for_cq_end_op.h
- - src/core/lib/transport/batch_builder.h
- src/core/lib/transport/call_arena_allocator.h
- src/core/lib/transport/call_destination.h
- src/core/lib/transport/call_filters.h
@@ -12177,19 +12878,21 @@ targets:
- src/core/lib/surface/call.cc
- src/core/lib/surface/call_details.cc
- src/core/lib/surface/call_log_batch.cc
+ - src/core/lib/surface/call_utils.cc
- src/core/lib/surface/channel.cc
- src/core/lib/surface/channel_init.cc
- src/core/lib/surface/channel_stack_type.cc
+ - src/core/lib/surface/client_call.cc
- src/core/lib/surface/completion_queue.cc
- src/core/lib/surface/completion_queue_factory.cc
- src/core/lib/surface/event_string.cc
+ - src/core/lib/surface/filter_stack_call.cc
- src/core/lib/surface/init_internally.cc
- src/core/lib/surface/lame_client.cc
- src/core/lib/surface/metadata_array.cc
+ - src/core/lib/surface/server_call.cc
- src/core/lib/surface/validate_metadata.cc
- src/core/lib/surface/version.cc
- - src/core/lib/surface/wait_for_cq_end_op.cc
- - src/core/lib/transport/batch_builder.cc
- src/core/lib/transport/call_arena_allocator.cc
- src/core/lib/transport/call_filters.cc
- src/core/lib/transport/call_final_info.cc
@@ -12447,6 +13150,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -12473,6 +13177,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -12647,6 +13352,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -12673,6 +13379,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -12722,6 +13429,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -12748,6 +13456,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -12840,12 +13549,14 @@ targets:
language: c++
headers:
- test/core/call/yodel/yodel_test.h
+ - test/core/event_engine/event_engine_test_utils.h
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
src:
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
- test/core/call/yodel/test_main.cc
- test/core/call/yodel/yodel_test.cc
- test/core/client_channel/load_balanced_call_destination_test.cc
+ - test/core/event_engine/event_engine_test_utils.cc
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
deps:
- gtest
@@ -13152,6 +13863,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13178,6 +13890,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13215,6 +13928,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13241,6 +13955,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13278,6 +13993,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13304,6 +14020,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13341,6 +14058,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13367,6 +14085,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13624,6 +14343,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13650,6 +14370,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13699,6 +14420,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13725,6 +14447,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -13762,6 +14485,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -13788,6 +14512,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -14132,6 +14857,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -14158,6 +14884,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -14387,6 +15114,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -14413,6 +15141,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -14480,6 +15209,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -14506,6 +15236,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -14900,6 +15631,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -14926,6 +15658,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15157,6 +15890,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15183,6 +15917,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15234,6 +15969,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15260,6 +15996,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15297,6 +16034,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15323,6 +16061,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15508,6 +16247,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15534,6 +16274,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15582,6 +16323,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15608,6 +16350,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15645,6 +16388,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15671,6 +16415,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15708,6 +16453,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15734,6 +16480,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15771,6 +16518,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15797,6 +16545,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15834,6 +16583,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15860,6 +16610,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15897,6 +16648,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15923,6 +16675,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -15960,6 +16713,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -15986,6 +16740,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16023,6 +16778,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16049,6 +16805,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16086,6 +16843,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16112,6 +16870,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16149,6 +16908,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16175,6 +16935,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16212,6 +16973,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16238,6 +17000,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16275,6 +17038,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16301,6 +17065,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16338,6 +17103,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16364,6 +17130,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16401,6 +17168,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16427,6 +17195,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16464,6 +17233,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16490,6 +17260,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16527,6 +17298,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16553,6 +17325,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16590,6 +17363,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16616,6 +17390,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16653,6 +17428,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16679,6 +17455,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16716,6 +17493,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16742,6 +17520,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16779,6 +17558,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16805,6 +17585,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16842,6 +17623,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16868,6 +17650,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16905,6 +17688,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16931,6 +17715,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -16968,6 +17753,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -16994,6 +17780,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17042,6 +17829,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17068,6 +17856,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17105,6 +17894,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17131,6 +17921,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17168,6 +17959,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17194,6 +17986,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17231,6 +18024,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17257,6 +18051,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17305,6 +18100,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17331,6 +18127,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17368,6 +18165,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17394,6 +18192,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17431,6 +18230,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17457,6 +18257,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17494,6 +18295,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17520,6 +18322,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17557,6 +18360,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17583,6 +18387,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17620,6 +18425,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17646,6 +18452,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -17683,6 +18490,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -17709,6 +18517,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18010,6 +18819,33 @@ targets:
- linux
- posix
- mac
+- name: server_call_test
+ gtest: true
+ build: test
+ language: c++
+ headers:
+ - test/core/call/batch_builder.h
+ - test/core/call/yodel/yodel_test.h
+ - test/core/end2end/cq_verifier.h
+ - test/core/event_engine/event_engine_test_utils.h
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
+ src:
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto
+ - test/core/call/batch_builder.cc
+ - test/core/call/server_call_test.cc
+ - test/core/call/yodel/test_main.cc
+ - test/core/call/yodel/yodel_test.cc
+ - test/core/end2end/cq_verifier.cc
+ - test/core/event_engine/event_engine_test_utils.cc
+ - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
+ deps:
+ - gtest
+ - protobuf
+ - grpc_test_util
+ platforms:
+ - linux
+ - posix
+ uses_polling: false
- name: server_call_tracer_factory_test
gtest: true
build: test
@@ -18087,6 +18923,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18113,6 +18950,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18236,6 +19074,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18262,6 +19101,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18365,6 +19205,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18391,6 +19232,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18428,6 +19270,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18454,6 +19297,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18506,6 +19350,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18532,6 +19377,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18569,6 +19415,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18595,6 +19442,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -18646,6 +19494,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -18672,6 +19521,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -19001,6 +19851,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -19027,6 +19878,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -19363,6 +20215,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -19389,6 +20242,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -19623,6 +20477,7 @@ targets:
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
- test/core/call/yodel/yodel_test.h
+ - test/core/event_engine/event_engine_test_utils.h
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.h
- test/core/transport/test_suite/transport_test.h
src:
@@ -19635,6 +20490,7 @@ targets:
- src/core/lib/transport/promise_endpoint.cc
- test/core/call/yodel/test_main.cc
- test/core/call/yodel/yodel_test.cc
+ - test/core/event_engine/event_engine_test_utils.cc
- test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.cc
- test/core/transport/test_suite/call_content.cc
- test/core/transport/test_suite/call_shapes.cc
@@ -19908,6 +20764,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -19934,6 +20791,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -20125,6 +20983,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -20151,6 +21010,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -20819,6 +21679,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -20845,6 +21706,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
@@ -20882,6 +21744,7 @@ targets:
- src/core/lib/promise/wait_for_callback.h
- src/core/lib/promise/wait_set.h
- src/core/lib/transport/promise_endpoint.h
+ - test/core/call/batch_builder.h
- test/core/end2end/cq_verifier.h
- test/core/end2end/end2end_tests.h
- test/core/end2end/fixtures/h2_oauth2_common.h
@@ -20908,6 +21771,7 @@ targets:
- src/core/ext/transport/chaotic_good/server_transport.cc
- src/core/ext/transport/chaotic_good/settings_metadata.cc
- src/core/lib/transport/promise_endpoint.cc
+ - test/core/call/batch_builder.cc
- test/core/end2end/cq_verifier.cc
- test/core/end2end/end2end_test_main.cc
- test/core/end2end/end2end_test_suites.cc
diff --git a/config.m4 b/config.m4
index 42a31912190..2b0ac51b569 100644
--- a/config.m4
+++ b/config.m4
@@ -701,22 +701,24 @@ if test "$PHP_GRPC" != "no"; then
src/core/lib/surface/call.cc \
src/core/lib/surface/call_details.cc \
src/core/lib/surface/call_log_batch.cc \
+ src/core/lib/surface/call_utils.cc \
src/core/lib/surface/channel.cc \
src/core/lib/surface/channel_create.cc \
src/core/lib/surface/channel_init.cc \
src/core/lib/surface/channel_stack_type.cc \
+ src/core/lib/surface/client_call.cc \
src/core/lib/surface/completion_queue.cc \
src/core/lib/surface/completion_queue_factory.cc \
src/core/lib/surface/event_string.cc \
+ src/core/lib/surface/filter_stack_call.cc \
src/core/lib/surface/init.cc \
src/core/lib/surface/init_internally.cc \
src/core/lib/surface/lame_client.cc \
src/core/lib/surface/legacy_channel.cc \
src/core/lib/surface/metadata_array.cc \
+ src/core/lib/surface/server_call.cc \
src/core/lib/surface/validate_metadata.cc \
src/core/lib/surface/version.cc \
- src/core/lib/surface/wait_for_cq_end_op.cc \
- src/core/lib/transport/batch_builder.cc \
src/core/lib/transport/bdp_estimator.cc \
src/core/lib/transport/call_arena_allocator.cc \
src/core/lib/transport/call_filters.cc \
diff --git a/config.w32 b/config.w32
index 6007bd959b0..86e7fb6ddba 100644
--- a/config.w32
+++ b/config.w32
@@ -666,22 +666,24 @@ if (PHP_GRPC != "no") {
"src\\core\\lib\\surface\\call.cc " +
"src\\core\\lib\\surface\\call_details.cc " +
"src\\core\\lib\\surface\\call_log_batch.cc " +
+ "src\\core\\lib\\surface\\call_utils.cc " +
"src\\core\\lib\\surface\\channel.cc " +
"src\\core\\lib\\surface\\channel_create.cc " +
"src\\core\\lib\\surface\\channel_init.cc " +
"src\\core\\lib\\surface\\channel_stack_type.cc " +
+ "src\\core\\lib\\surface\\client_call.cc " +
"src\\core\\lib\\surface\\completion_queue.cc " +
"src\\core\\lib\\surface\\completion_queue_factory.cc " +
"src\\core\\lib\\surface\\event_string.cc " +
+ "src\\core\\lib\\surface\\filter_stack_call.cc " +
"src\\core\\lib\\surface\\init.cc " +
"src\\core\\lib\\surface\\init_internally.cc " +
"src\\core\\lib\\surface\\lame_client.cc " +
"src\\core\\lib\\surface\\legacy_channel.cc " +
"src\\core\\lib\\surface\\metadata_array.cc " +
+ "src\\core\\lib\\surface\\server_call.cc " +
"src\\core\\lib\\surface\\validate_metadata.cc " +
"src\\core\\lib\\surface\\version.cc " +
- "src\\core\\lib\\surface\\wait_for_cq_end_op.cc " +
- "src\\core\\lib\\transport\\batch_builder.cc " +
"src\\core\\lib\\transport\\bdp_estimator.cc " +
"src\\core\\lib\\transport\\call_arena_allocator.cc " +
"src\\core\\lib\\transport\\call_filters.cc " +
diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec
index be82baae8c5..5a3f0443b4b 100644
--- a/gRPC-C++.podspec
+++ b/gRPC-C++.podspec
@@ -1176,20 +1176,22 @@ Pod::Spec.new do |s|
'src/core/lib/surface/call.h',
'src/core/lib/surface/call_test_only.h',
'src/core/lib/surface/call_trace.h',
+ 'src/core/lib/surface/call_utils.h',
'src/core/lib/surface/channel.h',
'src/core/lib/surface/channel_create.h',
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.h',
+ 'src/core/lib/surface/client_call.h',
'src/core/lib/surface/completion_queue.h',
'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.h',
+ 'src/core/lib/surface/filter_stack_call.h',
'src/core/lib/surface/init.h',
'src/core/lib/surface/init_internally.h',
'src/core/lib/surface/lame_client.h',
'src/core/lib/surface/legacy_channel.h',
+ 'src/core/lib/surface/server_call.h',
'src/core/lib/surface/validate_metadata.h',
- 'src/core/lib/surface/wait_for_cq_end_op.h',
- 'src/core/lib/transport/batch_builder.h',
'src/core/lib/transport/bdp_estimator.h',
'src/core/lib/transport/call_arena_allocator.h',
'src/core/lib/transport/call_destination.h',
@@ -2450,20 +2452,22 @@ Pod::Spec.new do |s|
'src/core/lib/surface/call.h',
'src/core/lib/surface/call_test_only.h',
'src/core/lib/surface/call_trace.h',
+ 'src/core/lib/surface/call_utils.h',
'src/core/lib/surface/channel.h',
'src/core/lib/surface/channel_create.h',
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.h',
+ 'src/core/lib/surface/client_call.h',
'src/core/lib/surface/completion_queue.h',
'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.h',
+ 'src/core/lib/surface/filter_stack_call.h',
'src/core/lib/surface/init.h',
'src/core/lib/surface/init_internally.h',
'src/core/lib/surface/lame_client.h',
'src/core/lib/surface/legacy_channel.h',
+ 'src/core/lib/surface/server_call.h',
'src/core/lib/surface/validate_metadata.h',
- 'src/core/lib/surface/wait_for_cq_end_op.h',
- 'src/core/lib/transport/batch_builder.h',
'src/core/lib/transport/bdp_estimator.h',
'src/core/lib/transport/call_arena_allocator.h',
'src/core/lib/transport/call_destination.h',
diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec
index 274bcb13549..6e6c7a57244 100644
--- a/gRPC-Core.podspec
+++ b/gRPC-Core.podspec
@@ -1771,6 +1771,8 @@ Pod::Spec.new do |s|
'src/core/lib/surface/call_log_batch.cc',
'src/core/lib/surface/call_test_only.h',
'src/core/lib/surface/call_trace.h',
+ 'src/core/lib/surface/call_utils.cc',
+ 'src/core/lib/surface/call_utils.h',
'src/core/lib/surface/channel.cc',
'src/core/lib/surface/channel.h',
'src/core/lib/surface/channel_create.cc',
@@ -1779,12 +1781,16 @@ Pod::Spec.new do |s|
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.cc',
'src/core/lib/surface/channel_stack_type.h',
+ 'src/core/lib/surface/client_call.cc',
+ 'src/core/lib/surface/client_call.h',
'src/core/lib/surface/completion_queue.cc',
'src/core/lib/surface/completion_queue.h',
'src/core/lib/surface/completion_queue_factory.cc',
'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.cc',
'src/core/lib/surface/event_string.h',
+ 'src/core/lib/surface/filter_stack_call.cc',
+ 'src/core/lib/surface/filter_stack_call.h',
'src/core/lib/surface/init.cc',
'src/core/lib/surface/init.h',
'src/core/lib/surface/init_internally.cc',
@@ -1794,13 +1800,11 @@ Pod::Spec.new do |s|
'src/core/lib/surface/legacy_channel.cc',
'src/core/lib/surface/legacy_channel.h',
'src/core/lib/surface/metadata_array.cc',
+ 'src/core/lib/surface/server_call.cc',
+ 'src/core/lib/surface/server_call.h',
'src/core/lib/surface/validate_metadata.cc',
'src/core/lib/surface/validate_metadata.h',
'src/core/lib/surface/version.cc',
- 'src/core/lib/surface/wait_for_cq_end_op.cc',
- 'src/core/lib/surface/wait_for_cq_end_op.h',
- 'src/core/lib/transport/batch_builder.cc',
- 'src/core/lib/transport/batch_builder.h',
'src/core/lib/transport/bdp_estimator.cc',
'src/core/lib/transport/bdp_estimator.h',
'src/core/lib/transport/call_arena_allocator.cc',
@@ -3232,20 +3236,22 @@ Pod::Spec.new do |s|
'src/core/lib/surface/call.h',
'src/core/lib/surface/call_test_only.h',
'src/core/lib/surface/call_trace.h',
+ 'src/core/lib/surface/call_utils.h',
'src/core/lib/surface/channel.h',
'src/core/lib/surface/channel_create.h',
'src/core/lib/surface/channel_init.h',
'src/core/lib/surface/channel_stack_type.h',
+ 'src/core/lib/surface/client_call.h',
'src/core/lib/surface/completion_queue.h',
'src/core/lib/surface/completion_queue_factory.h',
'src/core/lib/surface/event_string.h',
+ 'src/core/lib/surface/filter_stack_call.h',
'src/core/lib/surface/init.h',
'src/core/lib/surface/init_internally.h',
'src/core/lib/surface/lame_client.h',
'src/core/lib/surface/legacy_channel.h',
+ 'src/core/lib/surface/server_call.h',
'src/core/lib/surface/validate_metadata.h',
- 'src/core/lib/surface/wait_for_cq_end_op.h',
- 'src/core/lib/transport/batch_builder.h',
'src/core/lib/transport/bdp_estimator.h',
'src/core/lib/transport/call_arena_allocator.h',
'src/core/lib/transport/call_destination.h',
diff --git a/grpc.gemspec b/grpc.gemspec
index 8fcf9cb1dd8..e5921c9ca75 100644
--- a/grpc.gemspec
+++ b/grpc.gemspec
@@ -1658,6 +1658,8 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/surface/call_log_batch.cc )
s.files += %w( src/core/lib/surface/call_test_only.h )
s.files += %w( src/core/lib/surface/call_trace.h )
+ s.files += %w( src/core/lib/surface/call_utils.cc )
+ s.files += %w( src/core/lib/surface/call_utils.h )
s.files += %w( src/core/lib/surface/channel.cc )
s.files += %w( src/core/lib/surface/channel.h )
s.files += %w( src/core/lib/surface/channel_create.cc )
@@ -1666,12 +1668,16 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/surface/channel_init.h )
s.files += %w( src/core/lib/surface/channel_stack_type.cc )
s.files += %w( src/core/lib/surface/channel_stack_type.h )
+ s.files += %w( src/core/lib/surface/client_call.cc )
+ s.files += %w( src/core/lib/surface/client_call.h )
s.files += %w( src/core/lib/surface/completion_queue.cc )
s.files += %w( src/core/lib/surface/completion_queue.h )
s.files += %w( src/core/lib/surface/completion_queue_factory.cc )
s.files += %w( src/core/lib/surface/completion_queue_factory.h )
s.files += %w( src/core/lib/surface/event_string.cc )
s.files += %w( src/core/lib/surface/event_string.h )
+ s.files += %w( src/core/lib/surface/filter_stack_call.cc )
+ s.files += %w( src/core/lib/surface/filter_stack_call.h )
s.files += %w( src/core/lib/surface/init.cc )
s.files += %w( src/core/lib/surface/init.h )
s.files += %w( src/core/lib/surface/init_internally.cc )
@@ -1681,13 +1687,11 @@ Gem::Specification.new do |s|
s.files += %w( src/core/lib/surface/legacy_channel.cc )
s.files += %w( src/core/lib/surface/legacy_channel.h )
s.files += %w( src/core/lib/surface/metadata_array.cc )
+ s.files += %w( src/core/lib/surface/server_call.cc )
+ s.files += %w( src/core/lib/surface/server_call.h )
s.files += %w( src/core/lib/surface/validate_metadata.cc )
s.files += %w( src/core/lib/surface/validate_metadata.h )
s.files += %w( src/core/lib/surface/version.cc )
- s.files += %w( src/core/lib/surface/wait_for_cq_end_op.cc )
- s.files += %w( src/core/lib/surface/wait_for_cq_end_op.h )
- s.files += %w( src/core/lib/transport/batch_builder.cc )
- s.files += %w( src/core/lib/transport/batch_builder.h )
s.files += %w( src/core/lib/transport/bdp_estimator.cc )
s.files += %w( src/core/lib/transport/bdp_estimator.h )
s.files += %w( src/core/lib/transport/call_arena_allocator.cc )
diff --git a/package.xml b/package.xml
index 67b371367cd..00ea6281269 100644
--- a/package.xml
+++ b/package.xml
@@ -1640,6 +1640,8 @@
+
+
@@ -1648,12 +1650,16 @@
+
+
+
+
@@ -1663,13 +1669,11 @@
+
+
-
-
-
-
diff --git a/src/core/client_channel/client_channel.cc b/src/core/client_channel/client_channel.cc
index 2fe8524c40e..1fadc90c226 100644
--- a/src/core/client_channel/client_channel.cc
+++ b/src/core/client_channel/client_channel.cc
@@ -48,64 +48,47 @@
#include
#include
-#include "src/core/client_channel/backup_poller.h"
#include "src/core/client_channel/client_channel_internal.h"
#include "src/core/client_channel/client_channel_service_config.h"
#include "src/core/client_channel/config_selector.h"
#include "src/core/client_channel/dynamic_filters.h"
#include "src/core/client_channel/global_subchannel_pool.h"
#include "src/core/client_channel/local_subchannel_pool.h"
-#include "src/core/client_channel/retry_filter.h"
#include "src/core/client_channel/subchannel.h"
#include "src/core/client_channel/subchannel_interface_internal.h"
#include "src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h"
#include "src/core/lib/channel/channel_args.h"
-#include "src/core/lib/channel/channel_stack.h"
-#include "src/core/lib/channel/promise_based_filter.h"
#include "src/core/lib/channel/status_util.h"
#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/debug/trace.h"
-#include "src/core/lib/experiments/experiments.h"
#include "src/core/lib/gprpp/crash.h"
#include "src/core/lib/gprpp/debug_location.h"
-#include "src/core/lib/gprpp/manual_constructor.h"
-#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/gprpp/sync.h"
-#include "src/core/lib/gprpp/unique_type_name.h"
#include "src/core/lib/gprpp/work_serializer.h"
-#include "src/core/lib/iomgr/exec_ctx.h"
#include "src/core/lib/iomgr/resolved_address.h"
-#include "src/core/lib/promise/cancel_callback.h"
#include "src/core/lib/promise/context.h"
#include "src/core/lib/promise/exec_ctx_wakeup_scheduler.h"
-#include "src/core/lib/promise/latch.h"
#include "src/core/lib/promise/loop.h"
#include "src/core/lib/promise/map.h"
-#include "src/core/lib/promise/pipe.h"
#include "src/core/lib/promise/poll.h"
-#include "src/core/lib/promise/promise.h"
#include "src/core/lib/promise/sleep.h"
-#include "src/core/lib/promise/status_flag.h"
#include "src/core/lib/promise/try_seq.h"
-#include "src/core/lib/resource_quota/resource_quota.h"
#include "src/core/lib/security/credentials/credentials.h"
#include "src/core/lib/slice/slice.h"
#include "src/core/lib/slice/slice_internal.h"
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/channel.h"
+#include "src/core/lib/surface/client_call.h"
#include "src/core/lib/surface/completion_queue.h"
#include "src/core/lib/transport/call_spine.h"
#include "src/core/lib/transport/connectivity_state.h"
-#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/metadata_batch.h"
-#include "src/core/load_balancing/backend_metric_parser.h"
#include "src/core/load_balancing/child_policy_handler.h"
#include "src/core/load_balancing/lb_policy.h"
#include "src/core/load_balancing/lb_policy_registry.h"
#include "src/core/load_balancing/subchannel_interface.h"
#include "src/core/resolver/endpoint_addresses.h"
#include "src/core/resolver/resolver_registry.h"
-#include "src/core/service_config/service_config_call_data.h"
#include "src/core/service_config/service_config_impl.h"
#include "src/core/telemetry/metrics.h"
#include "src/core/util/json/json.h"
@@ -129,7 +112,8 @@ extern TraceFlag grpc_client_channel_lb_call_trace;
class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
public:
- explicit ResolverResultHandler(RefCountedPtr client_channel)
+ explicit ResolverResultHandler(
+ WeakRefCountedPtr client_channel)
: client_channel_(std::move(client_channel)) {}
~ResolverResultHandler() override {
@@ -145,7 +129,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
}
private:
- RefCountedPtr client_channel_;
+ WeakRefCountedPtr client_channel_;
};
//
@@ -163,7 +147,7 @@ class ClientChannel::ResolverResultHandler : public Resolver::ResultHandler {
class ClientChannel::SubchannelWrapper
: public SubchannelInterfaceWithCallDestination {
public:
- SubchannelWrapper(RefCountedPtr client_channel,
+ SubchannelWrapper(WeakRefCountedPtr client_channel,
RefCountedPtr subchannel);
~SubchannelWrapper() override;
@@ -210,7 +194,7 @@ class ClientChannel::SubchannelWrapper
}
};
- RefCountedPtr client_channel_;
+ WeakRefCountedPtr client_channel_;
RefCountedPtr subchannel_;
// Maps from the address of the watcher passed to us by the LB policy
// to the address of the WrapperWatcher that we passed to the underlying
@@ -333,7 +317,7 @@ class ClientChannel::SubchannelWrapper::WatcherWrapper
};
ClientChannel::SubchannelWrapper::SubchannelWrapper(
- RefCountedPtr client_channel,
+ WeakRefCountedPtr client_channel,
RefCountedPtr subchannel)
: SubchannelInterfaceWithCallDestination(
GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)
@@ -450,7 +434,7 @@ class ClientChannel::ClientChannelControlHelper
: public LoadBalancingPolicy::ChannelControlHelper {
public:
explicit ClientChannelControlHelper(
- RefCountedPtr client_channel)
+ WeakRefCountedPtr client_channel)
: client_channel_(std::move(client_channel)) {}
~ClientChannelControlHelper() override {
@@ -552,7 +536,7 @@ class ClientChannel::ClientChannelControlHelper
return channelz::ChannelTrace::Error;
}
- RefCountedPtr client_channel_;
+ WeakRefCountedPtr client_channel_;
};
//
@@ -571,9 +555,8 @@ RefCountedPtr GetSubchannelPool(
} // namespace
-absl::StatusOr> ClientChannel::Create(
+absl::StatusOr> ClientChannel::Create(
std::string target, ChannelArgs channel_args) {
- gpr_log(GPR_ERROR, "ARGS: %s", channel_args.ToString().c_str());
// Get URI to resolve, using proxy mapper if needed.
if (target.empty()) {
return absl::InternalError("target URI is empty in client channel");
@@ -617,7 +600,7 @@ absl::StatusOr> ClientChannel::Create(
"Missing event engine in args for client channel");
}
// Success. Construct channel.
- return MakeOrphanable(
+ return MakeRefCounted(
std::move(target), std::move(channel_args), std::move(uri_to_resolve),
std::move(*default_service_config), client_channel_factory,
call_destination_factory);
@@ -684,11 +667,14 @@ ClientChannel::~ClientChannel() {
}
}
-void ClientChannel::Orphan() {
+void ClientChannel::Orphaned() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "client_channel=%p: shutting down", this);
}
- auto self = RefAsSubclass();
+ // Weird capture then copy needed to satisfy thread safety analysis,
+ // otherwise it seems to fail to recognize the correct lock is taken in the
+ // lambda.
+ auto self = WeakRefAsSubclass();
work_serializer_->Run(
[self]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*self->work_serializer_) {
self->DestroyResolverAndLbPolicyLocked();
@@ -698,7 +684,6 @@ void ClientChannel::Orphan() {
// timer from being reset by other threads.
idle_state_.IncreaseCallCount();
idle_activity_.Reset();
- Unref();
}
grpc_connectivity_state ClientChannel::CheckConnectivityState(
@@ -710,7 +695,7 @@ grpc_connectivity_state ClientChannel::CheckConnectivityState(
grpc_connectivity_state state =
ABSL_TS_UNCHECKED_READ(state_tracker_).state();
if (state == GRPC_CHANNEL_IDLE && try_to_connect) {
- auto self = RefAsSubclass(); // Held by callback.
+ auto self = WeakRefAsSubclass(); // Held by callback.
work_serializer_->Run(
[self]() ABSL_EXCLUSIVE_LOCKS_REQUIRED(*self->work_serializer_) {
self->TryToConnectLocked();
@@ -801,34 +786,26 @@ void ClientChannel::Ping(grpc_completion_queue*, void*) {
Crash("not implemented");
}
-grpc_call* ClientChannel::CreateCall(grpc_call*, uint32_t,
- grpc_completion_queue*, grpc_pollset_set*,
- Slice, absl::optional, Timestamp,
- bool) {
- // TODO(ctiller): code to convert from C-core batch API to v3 call, then
- // invoke CreateCall(client_initial_metadata, arena)
- // TODO(ctiller): make sure call holds a ref to ClientChannel for its entire
- // lifetime
- Crash("not implemented");
- return nullptr;
+grpc_call* ClientChannel::CreateCall(
+ grpc_call* parent_call, uint32_t propagation_mask,
+ grpc_completion_queue* cq, grpc_pollset_set* /*pollset_set_alternative*/,
+ Slice path, absl::optional authority, Timestamp deadline, bool) {
+ return MakeClientCall(parent_call, propagation_mask, cq, std::move(path),
+ std::move(authority), false, deadline,
+ compression_options(), event_engine_.get(),
+ call_arena_allocator()->MakeArena(), Ref());
}
-CallInitiator ClientChannel::CreateCall(
- ClientMetadataHandle client_initial_metadata) {
+void ClientChannel::StartCall(UnstartedCallHandler unstarted_handler) {
// Increment call count.
if (idle_timeout_ != Duration::Zero()) idle_state_.IncreaseCallCount();
// Exit IDLE if needed.
CheckConnectivityState(/*try_to_connect=*/true);
- // Create an initiator/unstarted-handler pair.
- auto call =
- MakeCallPair(std::move(client_initial_metadata), event_engine_.get(),
- call_arena_allocator()->MakeArena());
// Spawn a promise to wait for the resolver result.
// This will eventually start the call.
- call.initiator.SpawnGuardedUntilCallCompletes(
+ unstarted_handler.SpawnGuardedUntilCallCompletes(
"wait-for-name-resolution",
- [self = RefAsSubclass(),
- unstarted_handler = std::move(call.handler)]() mutable {
+ [self = RefAsSubclass(), unstarted_handler]() mutable {
const bool wait_for_ready =
unstarted_handler.UnprocessedClientInitialMetadata()
.GetOrCreatePointer(WaitForReady())
@@ -878,8 +855,6 @@ CallInitiator ClientChannel::CreateCall(
return absl::OkStatus();
});
});
- // Return the initiator.
- return std::move(call.initiator);
}
void ClientChannel::CreateResolverLocked() {
@@ -889,7 +864,8 @@ void ClientChannel::CreateResolverLocked() {
}
resolver_ = CoreConfiguration::Get().resolver_registry().CreateResolver(
uri_to_resolve_, channel_args_, nullptr, work_serializer_,
- std::make_unique(RefAsSubclass()));
+ std::make_unique(
+ WeakRefAsSubclass()));
// Since the validity of the args was checked when the channel was created,
// CreateResolver() must return a non-null result.
CHECK(resolver_ != nullptr);
@@ -919,7 +895,8 @@ void ClientChannel::DestroyResolverAndLbPolicyLocked() {
lb_policy_.get());
}
lb_policy_.reset();
- picker_.Set(nullptr);
+ picker_.Set(MakeRefCounted(
+ absl::UnavailableError("Channel shutdown")));
}
}
}
@@ -1165,8 +1142,8 @@ absl::Status ClientChannel::CreateOrUpdateLbPolicyLocked(
update_args.config = std::move(lb_policy_config);
update_args.resolution_note = std::move(result.resolution_note);
// Remove the config selector from channel args so that we're not holding
- // unnecessary refs that cause it to be destroyed somewhere other than in the
- // WorkSerializer.
+ // unnecessary refs that cause it to be destroyed somewhere other than in
+ // the WorkSerializer.
update_args.args = result.args.Remove(GRPC_ARG_CONFIG_SELECTOR);
// Add health check service name to channel args.
if (health_check_service_name.has_value()) {
@@ -1200,7 +1177,7 @@ OrphanablePtr ClientChannel::CreateLbPolicyLocked(
lb_policy_args.work_serializer = work_serializer_;
lb_policy_args.channel_control_helper =
std::make_unique(
- RefAsSubclass());
+ WeakRefAsSubclass());
lb_policy_args.args = args;
OrphanablePtr lb_policy =
MakeOrphanable(std::move(lb_policy_args),
@@ -1305,7 +1282,7 @@ void ClientChannel::StartIdleTimer() {
if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_trace)) {
gpr_log(GPR_INFO, "client_channel=%p: idle timer started", this);
}
- auto self = RefAsSubclass();
+ auto self = WeakRefAsSubclass();
auto promise = Loop([self]() {
return TrySeq(Sleep(Timestamp::Now() + self->idle_timeout_),
[self]() -> Poll> {
@@ -1359,7 +1336,7 @@ absl::Status ClientChannel::ApplyServiceConfigToCall(
return MaybeRewriteIllegalStatusCode(call_config_status, "ConfigSelector");
}
// Apply our own method params to the call.
- auto* method_params = static_cast(
+ auto* method_params = DownCast(
service_config_call_data->GetMethodParsedConfig(
service_config_parser_index_));
if (method_params != nullptr) {
diff --git a/src/core/client_channel/client_channel.h b/src/core/client_channel/client_channel.h
index abe53bbf689..13809c04471 100644
--- a/src/core/client_channel/client_channel.h
+++ b/src/core/client_channel/client_channel.h
@@ -57,7 +57,7 @@ class ClientChannel : public Channel {
~CallDestinationFactory() = default;
};
- static absl::StatusOr> Create(
+ static absl::StatusOr> Create(
std::string target, ChannelArgs channel_args);
// Do not instantiate directly -- use Create() instead.
@@ -69,7 +69,7 @@ class ClientChannel : public Channel {
~ClientChannel() override;
- void Orphan() override;
+ void Orphaned() override;
grpc_call* CreateCall(grpc_call* parent_call, uint32_t propagation_mask,
grpc_completion_queue* cq,
@@ -77,7 +77,7 @@ class ClientChannel : public Channel {
Slice path, absl::optional authority,
Timestamp deadline, bool registered_method) override;
- CallInitiator CreateCall(ClientMetadataHandle client_initial_metadata);
+ void StartCall(UnstartedCallHandler unstarted_handler) override;
grpc_event_engine::experimental::EventEngine* event_engine() const override {
return event_engine_.get();
diff --git a/src/core/client_channel/client_channel_filter.cc b/src/core/client_channel/client_channel_filter.cc
index e6564a61440..c9ada909d07 100644
--- a/src/core/client_channel/client_channel_filter.cc
+++ b/src/core/client_channel/client_channel_filter.cc
@@ -304,119 +304,12 @@ class ClientChannelFilter::FilterBasedCallData final
grpc_error_handle cancel_error_;
};
-class ClientChannelFilter::PromiseBasedCallData final
- : public ClientChannelFilter::CallData {
- public:
- explicit PromiseBasedCallData(ClientChannelFilter* chand) : chand_(chand) {}
-
- ~PromiseBasedCallData() override {
- if (was_queued_ && client_initial_metadata_ != nullptr) {
- MutexLock lock(&chand_->resolution_mu_);
- RemoveCallFromResolverQueuedCallsLocked();
- chand_->resolver_queued_calls_.erase(this);
- }
- }
-
- ArenaPromise> MakeNameResolutionPromise(
- CallArgs call_args) {
- pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value();
- client_initial_metadata_ = std::move(call_args.client_initial_metadata);
- // If we're still in IDLE, we need to start resolving.
- if (GPR_UNLIKELY(chand_->CheckConnectivityState(false) ==
- GRPC_CHANNEL_IDLE)) {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
- gpr_log(GPR_INFO, "chand=%p calld=%p: %striggering exit idle", chand_,
- this, GetContext()->DebugTag().c_str());
- }
- // Bounce into the control plane work serializer to start resolving.
- GRPC_CHANNEL_STACK_REF(chand_->owning_stack_, "ExitIdle");
- chand_->work_serializer_->Run(
- [chand = chand_]()
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(*chand_->work_serializer_) {
- chand->CheckConnectivityState(/*try_to_connect=*/true);
- GRPC_CHANNEL_STACK_UNREF(chand->owning_stack_, "ExitIdle");
- },
- DEBUG_LOCATION);
- }
- return [this, call_args = std::move(
- call_args)]() mutable -> Poll> {
- auto result = CheckResolution(was_queued_);
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
- gpr_log(GPR_INFO, "chand=%p calld=%p: %sCheckResolution returns %s",
- chand_, this, GetContext()->DebugTag().c_str(),
- result.has_value() ? result->ToString().c_str() : "Pending");
- }
- if (!result.has_value()) return Pending{};
- if (!result->ok()) return *result;
- call_args.client_initial_metadata = std::move(client_initial_metadata_);
- return std::move(call_args);
- };
- }
-
- private:
- ClientChannelFilter* chand() const override { return chand_; }
- Arena* arena() const override { return GetContext(); }
- grpc_polling_entity* pollent() override { return &pollent_; }
- grpc_metadata_batch* send_initial_metadata() override {
- return client_initial_metadata_.get();
- }
-
- void OnAddToQueueLocked() override
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::resolution_mu_) {
- waker_ = GetContext()->MakeNonOwningWaker();
- was_queued_ = true;
- }
-
- void RetryCheckResolutionLocked() ABSL_EXCLUSIVE_LOCKS_REQUIRED(
- &ClientChannelFilter::resolution_mu_) override {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_call_trace)) {
- gpr_log(GPR_INFO, "chand=%p calld=%p: RetryCheckResolutionLocked(): %s",
- chand_, this, waker_.ActivityDebugTag().c_str());
- }
- waker_.WakeupAsync();
- }
-
- void ResetDeadline(Duration timeout) override {
- Call* call = GetContext();
- CallContext* call_context = GetContext();
- const Timestamp per_method_deadline =
- Timestamp::FromCycleCounterRoundUp(call_context->call_start_time()) +
- timeout;
- call->UpdateDeadline(per_method_deadline);
- }
-
- ClientChannelFilter* chand_;
- grpc_polling_entity pollent_;
- ClientMetadataHandle client_initial_metadata_;
- bool was_queued_ = false;
- Waker waker_ ABSL_GUARDED_BY(&ClientChannelFilter::resolution_mu_);
-};
-
//
// Filter vtable
//
-const grpc_channel_filter ClientChannelFilter::kFilterVtableWithPromises = {
+const grpc_channel_filter ClientChannelFilter::kFilter = {
ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch,
- ClientChannelFilter::MakeCallPromise,
- /* init_call: */ nullptr,
- ClientChannelFilter::StartTransportOp,
- sizeof(ClientChannelFilter::FilterBasedCallData),
- ClientChannelFilter::FilterBasedCallData::Init,
- ClientChannelFilter::FilterBasedCallData::SetPollent,
- ClientChannelFilter::FilterBasedCallData::Destroy,
- sizeof(ClientChannelFilter),
- ClientChannelFilter::Init,
- grpc_channel_stack_no_post_init,
- ClientChannelFilter::Destroy,
- ClientChannelFilter::GetChannelInfo,
- "client-channel",
-};
-
-const grpc_channel_filter ClientChannelFilter::kFilterVtableWithoutPromises = {
- ClientChannelFilter::FilterBasedCallData::StartTransportStreamOpBatch,
- nullptr,
- /* init_call: */ nullptr,
ClientChannelFilter::StartTransportOp,
sizeof(ClientChannelFilter::FilterBasedCallData),
ClientChannelFilter::FilterBasedCallData::Init,
@@ -466,19 +359,6 @@ class DynamicTerminationFilter final {
static void GetChannelInfo(grpc_channel_element* /*elem*/,
const grpc_channel_info* /*info*/) {}
- static ArenaPromise MakeCallPromise(
- grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory) {
- auto* chand = static_cast(elem->channel_data);
- return chand->chand_->CreateLoadBalancedCallPromise(
- std::move(call_args),
- []() {
- auto* service_config_call_data =
- GetServiceConfigCallData(GetContext());
- service_config_call_data->Commit();
- },
- /*is_transparent_retry=*/false);
- }
-
private:
explicit DynamicTerminationFilter(const ChannelArgs& args)
: chand_(args.GetObject()) {}
@@ -559,8 +439,6 @@ class DynamicTerminationFilter::CallData final {
const grpc_channel_filter DynamicTerminationFilter::kFilterVtable = {
DynamicTerminationFilter::CallData::StartTransportStreamOpBatch,
- DynamicTerminationFilter::MakeCallPromise,
- /* init_call: */ nullptr,
DynamicTerminationFilter::StartTransportOp,
sizeof(DynamicTerminationFilter::CallData),
DynamicTerminationFilter::CallData::Init,
@@ -1190,8 +1068,7 @@ class ClientChannelFilter::ClientChannelControlHelper final
grpc_error_handle ClientChannelFilter::Init(grpc_channel_element* elem,
grpc_channel_element_args* args) {
CHECK(args->is_last);
- CHECK(elem->filter == &kFilterVtableWithPromises ||
- elem->filter == &kFilterVtableWithoutPromises);
+ CHECK(elem->filter == &kFilter);
grpc_error_handle error;
new (elem->channel_data) ClientChannelFilter(args, &error);
return error;
@@ -1308,21 +1185,6 @@ ClientChannelFilter::~ClientChannelFilter() {
grpc_pollset_set_destroy(interested_parties_);
}
-ArenaPromise ClientChannelFilter::MakeCallPromise(
- grpc_channel_element* elem, CallArgs call_args, NextPromiseFactory) {
- auto* chand = static_cast(elem->channel_data);
- // TODO(roth): Is this the right lifetime story for calld?
- auto* calld = GetContext()->ManagedNew(chand);
- return TrySeq(
- // Name resolution.
- calld->MakeNameResolutionPromise(std::move(call_args)),
- // Dynamic filter stack.
- [calld](CallArgs call_args) mutable {
- return calld->dynamic_filters()->channel_stack()->MakeClientCallPromise(
- std::move(call_args));
- });
-}
-
OrphanablePtr
ClientChannelFilter::CreateLoadBalancedCall(
const grpc_call_element_args& args, grpc_polling_entity* pollent,
@@ -1335,17 +1197,6 @@ ClientChannelFilter::CreateLoadBalancedCall(
std::move(on_commit), is_transparent_retry));
}
-ArenaPromise
-ClientChannelFilter::CreateLoadBalancedCallPromise(
- CallArgs call_args, absl::AnyInvocable on_commit,
- bool is_transparent_retry) {
- OrphanablePtr lb_call(
- GetContext()->New(
- this, std::move(on_commit), is_transparent_retry));
- auto* call_ptr = lb_call.get();
- return call_ptr->MakeCallPromise(std::move(call_args), std::move(lb_call));
-}
-
void ClientChannelFilter::ReprocessQueuedResolverCalls() {
for (CallData* calld : resolver_queued_calls_) {
calld->RemoveCallFromResolverQueuedCallsLocked();
@@ -3443,7 +3294,7 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
connected_subchannel()->Ref(), pollent_, path->Ref(), /*start_time=*/0,
arena()->GetContext()->deadline(),
// TODO(roth): When we implement hedging support, we will probably
- // need to use a separate arena for each subchannel call.
+ // need to use a separate call arena for each subchannel call.
arena(), call_combiner_};
grpc_error_handle error;
subchannel_call_ = SubchannelCall::Create(std::move(call_args), &error);
@@ -3463,146 +3314,4 @@ void ClientChannelFilter::FilterBasedLoadBalancedCall::CreateSubchannelCall() {
}
}
-//
-// ClientChannelFilter::PromiseBasedLoadBalancedCall
-//
-
-ClientChannelFilter::PromiseBasedLoadBalancedCall::PromiseBasedLoadBalancedCall(
- ClientChannelFilter* chand, absl::AnyInvocable on_commit,
- bool is_transparent_retry)
- : LoadBalancedCall(chand, GetContext(), std::move(on_commit),
- is_transparent_retry) {}
-
-ArenaPromise
-ClientChannelFilter::PromiseBasedLoadBalancedCall::MakeCallPromise(
- CallArgs call_args, OrphanablePtr lb_call) {
- pollent_ = NowOrNever(call_args.polling_entity->WaitAndCopy()).value();
- // Record ops in tracer.
- if (call_attempt_tracer() != nullptr) {
- call_attempt_tracer()->RecordSendInitialMetadata(
- call_args.client_initial_metadata.get());
- // TODO(ctiller): Find a way to do this without registering a no-op mapper.
- call_args.client_to_server_messages->InterceptAndMapWithHalfClose(
- [](MessageHandle message) { return message; }, // No-op.
- [this]() {
- // TODO(roth): Change CallTracer API to not pass metadata
- // batch to this method, since the batch is always empty.
- grpc_metadata_batch metadata;
- call_attempt_tracer()->RecordSendTrailingMetadata(&metadata);
- });
- }
- // Extract peer name from server initial metadata.
- call_args.server_initial_metadata->InterceptAndMap(
- [self = lb_call->RefAsSubclass()](
- ServerMetadataHandle metadata) {
- if (self->call_attempt_tracer() != nullptr) {
- self->call_attempt_tracer()->RecordReceivedInitialMetadata(
- metadata.get());
- }
- Slice* peer_string = metadata->get_pointer(PeerString());
- if (peer_string != nullptr) self->peer_string_ = peer_string->Ref();
- return metadata;
- });
- client_initial_metadata_ = std::move(call_args.client_initial_metadata);
- return OnCancel(
- Map(TrySeq(
- // LB pick.
- [this]() -> Poll {
- auto result = PickSubchannel(was_queued_);
- if (GRPC_TRACE_FLAG_ENABLED(
- grpc_client_channel_lb_call_trace)) {
- gpr_log(GPR_INFO,
- "chand=%p lb_call=%p: %sPickSubchannel() returns %s",
- chand(), this,
- GetContext()->DebugTag().c_str(),
- result.has_value() ? result->ToString().c_str()
- : "Pending");
- }
- if (result == absl::nullopt) return Pending{};
- return std::move(*result);
- },
- [this, call_args = std::move(call_args)]() mutable
- -> ArenaPromise {
- call_args.client_initial_metadata =
- std::move(client_initial_metadata_);
- return connected_subchannel()->MakeCallPromise(
- std::move(call_args));
- }),
- // Record call completion.
- [this](ServerMetadataHandle metadata) {
- if (call_attempt_tracer() != nullptr ||
- lb_subchannel_call_tracker() != nullptr) {
- absl::Status status;
- grpc_status_code code = metadata->get(GrpcStatusMetadata())
- .value_or(GRPC_STATUS_UNKNOWN);
- if (code != GRPC_STATUS_OK) {
- absl::string_view message;
- if (const auto* grpc_message =
- metadata->get_pointer(GrpcMessageMetadata())) {
- message = grpc_message->as_string_view();
- }
- status =
- absl::Status(static_cast(code), message);
- }
- RecordCallCompletion(status, metadata.get(),
- &GetContext()
- ->call_stats()
- ->transport_stream_stats,
- peer_string_.as_string_view());
- }
- RecordLatency();
- return metadata;
- }),
- [lb_call = std::move(lb_call)]() {
- // If the waker is pending, then we need to remove ourself from
- // the list of queued LB calls.
- if (!lb_call->waker_.is_unwakeable()) {
- MutexLock lock(&lb_call->chand()->lb_mu_);
- lb_call->Commit();
- // Remove pick from list of queued picks.
- lb_call->RemoveCallFromLbQueuedCallsLocked();
- // Remove from queued picks list.
- lb_call->chand()->lb_queued_calls_.erase(lb_call.get());
- }
- // TODO(ctiller): We don't have access to the call's actual status
- // here, so we just assume CANCELLED. We could change this to use
- // CallFinalization instead of OnCancel() so that we can get the
- // actual status. But we should also have access to the trailing
- // metadata, which we don't have in either case. Ultimately, we
- // need a better story for code that needs to run at the end of a
- // call in both cancellation and non-cancellation cases that needs
- // access to server trailing metadata and the call's real status.
- if (lb_call->call_attempt_tracer() != nullptr) {
- lb_call->call_attempt_tracer()->RecordCancel(
- absl::CancelledError("call cancelled"));
- }
- if (lb_call->call_attempt_tracer() != nullptr ||
- lb_call->lb_subchannel_call_tracker() != nullptr) {
- // If we were cancelled without recording call completion, then
- // record call completion here, as best we can. We assume status
- // CANCELLED in this case.
- lb_call->RecordCallCompletion(absl::CancelledError("call cancelled"),
- nullptr, nullptr, "");
- }
- });
-}
-
-grpc_metadata_batch*
-ClientChannelFilter::PromiseBasedLoadBalancedCall::send_initial_metadata()
- const {
- return client_initial_metadata_.get();
-}
-
-void ClientChannelFilter::PromiseBasedLoadBalancedCall::OnAddToQueueLocked() {
- waker_ = GetContext()->MakeNonOwningWaker();
- was_queued_ = true;
-}
-
-void ClientChannelFilter::PromiseBasedLoadBalancedCall::RetryPickLocked() {
- if (GRPC_TRACE_FLAG_ENABLED(grpc_client_channel_lb_call_trace)) {
- gpr_log(GPR_INFO, "chand=%p lb_call=%p: RetryPickLocked()", chand(), this);
- }
- waker_.WakeupAsync();
-}
-
} // namespace grpc_core
diff --git a/src/core/client_channel/client_channel_filter.h b/src/core/client_channel/client_channel_filter.h
index 602339074fd..9b119b4e021 100644
--- a/src/core/client_channel/client_channel_filter.h
+++ b/src/core/client_channel/client_channel_filter.h
@@ -57,8 +57,6 @@
#include "src/core/lib/iomgr/error.h"
#include "src/core/lib/iomgr/iomgr_fwd.h"
#include "src/core/lib/iomgr/polling_entity.h"
-#include "src/core/lib/promise/activity.h"
-#include "src/core/lib/promise/arena_promise.h"
#include "src/core/lib/resource_quota/arena.h"
#include "src/core/lib/slice/slice.h"
#include "src/core/lib/transport/connectivity_state.h"
@@ -99,12 +97,10 @@ namespace grpc_core {
class ClientChannelFilter final {
public:
- static const grpc_channel_filter kFilterVtableWithPromises;
- static const grpc_channel_filter kFilterVtableWithoutPromises;
+ static const grpc_channel_filter kFilter;
class LoadBalancedCall;
class FilterBasedLoadBalancedCall;
- class PromiseBasedLoadBalancedCall;
// Flag that this object gets stored in channel args as a raw pointer.
struct RawPointerChannelArgTag {};
@@ -112,10 +108,6 @@ class ClientChannelFilter final {
return "grpc.internal.client_channel_filter";
}
- static ArenaPromise MakeCallPromise(
- grpc_channel_element* elem, CallArgs call_args,
- NextPromiseFactory next_promise_factory);
-
grpc_connectivity_state CheckConnectivityState(bool try_to_connect);
// Starts a one-time connectivity state watch. When the channel's state
@@ -160,14 +152,9 @@ class ClientChannelFilter final {
grpc_closure* on_call_destruction_complete,
absl::AnyInvocable on_commit, bool is_transparent_retry);
- ArenaPromise CreateLoadBalancedCallPromise(
- CallArgs call_args, absl::AnyInvocable on_commit,
- bool is_transparent_retry);
-
private:
class CallData;
class FilterBasedCallData;
- class PromiseBasedCallData;
class ResolverResultHandler;
class SubchannelWrapper;
class ClientChannelControlHelper;
@@ -581,32 +568,6 @@ class ClientChannelFilter::FilterBasedLoadBalancedCall final
grpc_transport_stream_op_batch* pending_batches_[MAX_PENDING_BATCHES] = {};
};
-class ClientChannelFilter::PromiseBasedLoadBalancedCall final
- : public ClientChannelFilter::LoadBalancedCall {
- public:
- PromiseBasedLoadBalancedCall(ClientChannelFilter* chand,
- absl::AnyInvocable on_commit,
- bool is_transparent_retry);
-
- ArenaPromise MakeCallPromise(
- CallArgs call_args, OrphanablePtr lb_call);
-
- private:
- grpc_polling_entity* pollent() override { return &pollent_; }
- grpc_metadata_batch* send_initial_metadata() const override;
-
- void RetryPickLocked() override;
-
- void OnAddToQueueLocked() override
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ClientChannelFilter::lb_mu_);
-
- grpc_polling_entity pollent_;
- ClientMetadataHandle client_initial_metadata_;
- Waker waker_;
- bool was_queued_ = false;
- Slice peer_string_;
-};
-
} // namespace grpc_core
#endif // GRPC_SRC_CORE_CLIENT_CHANNEL_CLIENT_CHANNEL_FILTER_H
diff --git a/src/core/client_channel/client_channel_plugin.cc b/src/core/client_channel/client_channel_plugin.cc
index 2aa115f579c..ccec049b6eb 100644
--- a/src/core/client_channel/client_channel_plugin.cc
+++ b/src/core/client_channel/client_channel_plugin.cc
@@ -31,24 +31,11 @@
namespace grpc_core {
-namespace {
-bool IsEverythingBelowClientChannelPromiseSafe(const ChannelArgs& args) {
- return !args.GetBool(GRPC_ARG_ENABLE_RETRIES).value_or(true);
-}
-} // namespace
-
void BuildClientChannelConfiguration(CoreConfiguration::Builder* builder) {
internal::ClientChannelServiceConfigParser::Register(builder);
internal::RetryServiceConfigParser::Register(builder);
builder->channel_init()
- ->RegisterFilter(GRPC_CLIENT_CHANNEL,
- &ClientChannelFilter::kFilterVtableWithPromises)
- .If(IsEverythingBelowClientChannelPromiseSafe)
- .Terminal();
- builder->channel_init()
- ->RegisterFilter(GRPC_CLIENT_CHANNEL,
- &ClientChannelFilter::kFilterVtableWithoutPromises)
- .IfNot(IsEverythingBelowClientChannelPromiseSafe)
+ ->RegisterV2Filter(GRPC_CLIENT_CHANNEL)
.Terminal();
}
diff --git a/src/core/client_channel/load_balanced_call_destination.cc b/src/core/client_channel/load_balanced_call_destination.cc
index 002a778e142..dfa2d62108b 100644
--- a/src/core/client_channel/load_balanced_call_destination.cc
+++ b/src/core/client_channel/load_balanced_call_destination.cc
@@ -18,6 +18,7 @@
#include "src/core/client_channel/client_channel_internal.h"
#include "src/core/client_channel/subchannel.h"
#include "src/core/lib/channel/status_util.h"
+#include "src/core/lib/config/core_configuration.h"
#include "src/core/lib/promise/loop.h"
#include "src/core/telemetry/call_tracer.h"
@@ -289,6 +290,7 @@ void LoadBalancedCallDestination::StartCall(
[unstarted_handler, &last_picker](
RefCountedPtr
picker) mutable {
+ CHECK_NE(picker.get(), nullptr);
last_picker = std::move(picker);
// Returns 3 possible things:
// - Continue to queue the pick
@@ -330,4 +332,20 @@ void LoadBalancedCallDestination::StartCall(
});
}
-} // namespace grpc_core
\ No newline at end of file
+void RegisterLoadBalancedCallDestination(CoreConfiguration::Builder* builder) {
+ class LoadBalancedCallDestinationFactory final
+ : public ClientChannel::CallDestinationFactory {
+ public:
+ RefCountedPtr CreateCallDestination(
+ ClientChannel::PickerObservable picker) override {
+ return MakeRefCounted(std::move(picker));
+ }
+ };
+
+ builder->channel_args_preconditioning()->RegisterStage([](ChannelArgs args) {
+ return args.SetObject(
+ NoDestructSingleton::Get());
+ });
+}
+
+} // namespace grpc_core
diff --git a/src/core/client_channel/retry_filter.cc b/src/core/client_channel/retry_filter.cc
index 1833ffa80d6..3a93872282c 100644
--- a/src/core/client_channel/retry_filter.cc
+++ b/src/core/client_channel/retry_filter.cc
@@ -139,8 +139,6 @@ const RetryMethodConfig* RetryFilter::GetRetryPolicy(Arena* arena) {
const grpc_channel_filter RetryFilter::kVtable = {
RetryFilter::LegacyCallData::StartTransportStreamOpBatch,
- nullptr,
- /* init_call: */ nullptr,
RetryFilter::StartTransportOp,
sizeof(RetryFilter::LegacyCallData),
RetryFilter::LegacyCallData::Init,
diff --git a/src/core/client_channel/subchannel.cc b/src/core/client_channel/subchannel.cc
index 5c7fb150fca..82d97c56f47 100644
--- a/src/core/client_channel/subchannel.cc
+++ b/src/core/client_channel/subchannel.cc
@@ -157,36 +157,6 @@ class LegacyConnectedSubchannel : public ConnectedSubchannel {
channel_stack_->call_stack_size;
}
- ArenaPromise MakeCallPromise(
- CallArgs call_args) override {
- // If not using channelz, we just need to call the channel stack.
- if (channelz_subchannel() == nullptr) {
- return channel_stack_->MakeClientCallPromise(std::move(call_args));
- }
- // Otherwise, we need to wrap the channel stack promise with code that
- // handles the channelz updates.
- return OnCancel(
- Seq(channel_stack_->MakeClientCallPromise(std::move(call_args)),
- [self = Ref()](ServerMetadataHandle metadata) {
- channelz::SubchannelNode* channelz_subchannel =
- self->channelz_subchannel();
- CHECK(channelz_subchannel != nullptr);
- if (metadata->get(GrpcStatusMetadata())
- .value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) {
- channelz_subchannel->RecordCallFailed();
- } else {
- channelz_subchannel->RecordCallSucceeded();
- }
- return metadata;
- }),
- [self = Ref()]() {
- channelz::SubchannelNode* channelz_subchannel =
- self->channelz_subchannel();
- CHECK(channelz_subchannel != nullptr);
- channelz_subchannel->RecordCallFailed();
- });
- }
-
void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) override {
grpc_transport_op* op = grpc_make_transport_op(nullptr);
op->send_ping.on_initiate = on_initiate;
@@ -252,10 +222,6 @@ class NewConnectedSubchannel : public ConnectedSubchannel {
size_t GetInitialCallSizeEstimate() const override { return 0; }
- ArenaPromise MakeCallPromise(CallArgs) override {
- Crash("legacy MakeCallPromise() method called in call v3 impl");
- }
-
void Ping(grpc_closure*, grpc_closure*) override {
Crash("legacy ping method called in call v3 impl");
}
@@ -869,8 +835,7 @@ void Subchannel::OnConnectingFinishedLocked(grpc_error_handle error) {
bool Subchannel::PublishTransportLocked() {
auto socket_node = std::move(connecting_result_.socket_node);
- if (connecting_result_.transport->filter_stack_transport() != nullptr ||
- IsChaoticGoodEnabled()) {
+ if (connecting_result_.transport->filter_stack_transport() != nullptr) {
// Construct channel stack.
// Builder takes ownership of transport.
ChannelStackBuilderImpl builder(
diff --git a/src/core/client_channel/subchannel.h b/src/core/client_channel/subchannel.h
index cb54070a794..78c78958686 100644
--- a/src/core/client_channel/subchannel.h
+++ b/src/core/client_channel/subchannel.h
@@ -82,8 +82,6 @@ class ConnectedSubchannel : public RefCounted {
// Methods for legacy stack.
virtual grpc_channel_stack* channel_stack() const = 0;
virtual size_t GetInitialCallSizeEstimate() const = 0;
- virtual ArenaPromise MakeCallPromise(
- CallArgs call_args) = 0;
virtual void Ping(grpc_closure* on_initiate, grpc_closure* on_ack) = 0;
protected:
diff --git a/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc b/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
index 63a886bc991..59a0b66776f 100644
--- a/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
+++ b/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc
@@ -303,15 +303,13 @@ void RegisterLegacyChannelIdleFilters(CoreConfiguration::Builder* builder) {
.If([](const ChannelArgs& channel_args) {
return GetClientIdleTimeout(channel_args) != Duration::Infinity();
});
- if (!IsChaoticGoodEnabled()) {
- builder->channel_init()
- ->RegisterV2Filter(GRPC_SERVER_CHANNEL)
- .ExcludeFromMinimalStack()
- .If([](const ChannelArgs& channel_args) {
- return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args)
- .enable();
- });
- }
+ builder->channel_init()
+ ->RegisterV2Filter(GRPC_SERVER_CHANNEL)
+ .ExcludeFromMinimalStack()
+ .If([](const ChannelArgs& channel_args) {
+ return LegacyMaxAgeFilter::Config::FromChannelArgs(channel_args)
+ .enable();
+ });
}
LegacyMaxAgeFilter::LegacyMaxAgeFilter(grpc_channel_stack* channel_stack,
diff --git a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc
index c528a3da12e..9c681703b1a 100644
--- a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc
+++ b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.cc
@@ -376,13 +376,14 @@ grpc_channel* grpc_chaotic_good_channel_create(const char* target,
grpc_core::CoreConfiguration::Get()
.channel_args_preconditioning()
.PreconditionChannelArgs(args)
- .SetObject(
- grpc_core::NoDestructSingleton<
- grpc_core::chaotic_good::ChaoticGoodChannelFactory>::Get()),
+ .SetObject(grpc_core::NoDestructSingleton<
+ grpc_core::chaotic_good::ChaoticGoodChannelFactory>::Get())
+ .Set(GRPC_ARG_USE_V3_STACK, true),
GRPC_CLIENT_CHANNEL, nullptr);
if (r.ok()) {
return r->release()->c_ptr();
}
+ LOG(ERROR) << "Failed to create chaotic good client channel: " << r.status();
error = absl_status_to_grpc_error(r.status());
intptr_t integer;
grpc_status_code status = GRPC_STATUS_INTERNAL;
@@ -391,6 +392,6 @@ grpc_channel* grpc_chaotic_good_channel_create(const char* target,
status = static_cast(integer);
}
channel = grpc_lame_client_channel_create(
- target, status, "Failed to create secure client channel");
+ target, status, "Failed to create chaotic good client channel");
return channel;
}
diff --git a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc
index 524d9e68349..98885e3bfc7 100644
--- a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc
+++ b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.cc
@@ -483,20 +483,21 @@ int grpc_server_add_chaotic_good_port(grpc_server* server, const char* addr) {
return 0;
}
int port_num = 0;
+ std::vector> error_list;
for (const auto& resolved_addr : resolved_or.value()) {
auto listener = grpc_core::MakeOrphanable<
grpc_core::chaotic_good::ChaoticGoodServerListener>(
core_server, core_server->channel_args());
const auto ee_addr =
grpc_event_engine::experimental::CreateResolvedAddress(resolved_addr);
- gpr_log(GPR_INFO, "BIND: %s",
- grpc_event_engine::experimental::ResolvedAddressToString(ee_addr)
- ->c_str());
+ std::string addr_str =
+ *grpc_event_engine::experimental::ResolvedAddressToString(ee_addr);
+ LOG(INFO) << "BIND: " << addr_str;
auto bind_result = listener->Bind(ee_addr);
if (!bind_result.ok()) {
- LOG(ERROR) << "Failed to bind to " << addr << ": "
- << bind_result.status().ToString();
- return 0;
+ error_list.push_back(
+ std::make_pair(std::move(addr_str), bind_result.status()));
+ continue;
}
if (port_num == 0) {
port_num = bind_result.value();
@@ -505,5 +506,16 @@ int grpc_server_add_chaotic_good_port(grpc_server* server, const char* addr) {
}
core_server->AddListener(std::move(listener));
}
+ if (error_list.size() == resolved_or->size()) {
+ LOG(ERROR) << "Failed to bind any address for " << addr;
+ for (const auto& error : error_list) {
+ LOG(ERROR) << " " << error.first << ": " << error.second;
+ }
+ } else if (!error_list.empty()) {
+ LOG(INFO) << "Failed to bind some addresses for " << addr;
+ for (const auto& error : error_list) {
+ LOG(INFO) << " " << error.first << ": " << error.second;
+ }
+ }
return port_num;
}
diff --git a/src/core/ext/transport/chaotic_good/server_transport.cc b/src/core/ext/transport/chaotic_good/server_transport.cc
index bff440234ad..cd8371c3a61 100644
--- a/src/core/ext/transport/chaotic_good/server_transport.cc
+++ b/src/core/ext/transport/chaotic_good/server_transport.cc
@@ -78,24 +78,27 @@ auto ChaoticGoodServerTransport::PushFragmentIntoCall(
gpr_log(GPR_INFO, "CHAOTIC_GOOD: PushFragmentIntoCall: frame=%s",
frame.ToString().c_str());
}
- return TrySeq(If(
- frame.message.has_value(),
- [&call_initiator, &frame]() mutable {
- return call_initiator.PushMessage(
- std::move(frame.message->message));
- },
- []() -> StatusFlag { return Success{}; }),
- [this, call_initiator, end_of_stream = frame.end_of_stream,
- stream_id]() mutable -> StatusFlag {
- if (end_of_stream) {
- call_initiator.FinishSends();
- // We have received end_of_stream. It is now safe to remove
- // the call from the stream map.
- MutexLock lock(&mu_);
- stream_map_.erase(stream_id);
- }
- return Success{};
- });
+ return Seq(If(
+ frame.message.has_value(),
+ [&call_initiator, &frame]() mutable {
+ return call_initiator.PushMessage(
+ std::move(frame.message->message));
+ },
+ []() -> StatusFlag { return Success{}; }),
+ [this, call_initiator, end_of_stream = frame.end_of_stream,
+ stream_id](StatusFlag status) mutable -> StatusFlag {
+ if (!status.ok() && grpc_chaotic_good_trace.enabled()) {
+ gpr_log(GPR_INFO, "CHAOTIC_GOOD: Failed PushFragmentIntoCall");
+ }
+ if (end_of_stream || !status.ok()) {
+ call_initiator.FinishSends();
+ // We have received end_of_stream. It is now safe to remove
+ // the call from the stream map.
+ MutexLock lock(&mu_);
+ stream_map_.erase(stream_id);
+ }
+ return Success{};
+ });
}
auto ChaoticGoodServerTransport::MaybePushFragmentIntoCall(
@@ -340,13 +343,14 @@ auto ChaoticGoodServerTransport::TransportReadLoop(
auto ChaoticGoodServerTransport::OnTransportActivityDone(
absl::string_view activity) {
- return [this, activity](absl::Status status) {
+ return [self = RefAsSubclass(),
+ activity](absl::Status status) {
if (grpc_chaotic_good_trace.enabled()) {
gpr_log(GPR_INFO,
"CHAOTIC_GOOD: OnTransportActivityDone: activity=%s status=%s",
std::string(activity).c_str(), status.ToString().c_str());
}
- AbortWithError();
+ self->AbortWithError();
};
}
diff --git a/src/core/ext/transport/chttp2/client/chttp2_connector.cc b/src/core/ext/transport/chttp2/client/chttp2_connector.cc
index a53b3374532..8711eece3bf 100644
--- a/src/core/ext/transport/chttp2/client/chttp2_connector.cc
+++ b/src/core/ext/transport/chttp2/client/chttp2_connector.cc
@@ -290,7 +290,7 @@ class Chttp2SecureClientChannelFactory : public ClientChannelFactory {
}
};
-absl::StatusOr> CreateChannel(const char* target,
+absl::StatusOr> CreateChannel(const char* target,
const ChannelArgs& args) {
if (target == nullptr) {
LOG(ERROR) << "cannot create channel with NULL target name";
diff --git a/src/core/ext/transport/inproc/inproc_transport.cc b/src/core/ext/transport/inproc/inproc_transport.cc
index a6fb7d2498d..5d4d13abab5 100644
--- a/src/core/ext/transport/inproc/inproc_transport.cc
+++ b/src/core/ext/transport/inproc/inproc_transport.cc
@@ -171,9 +171,7 @@ class InprocClientTransport final : public ClientTransport {
};
bool UsePromiseBasedTransport() {
- if (!IsPromiseBasedInprocTransportEnabled()) return false;
- CHECK(IsPromiseBasedClientCallEnabled());
- return true;
+ return IsPromiseBasedInprocTransportEnabled();
}
OrphanablePtr
@@ -182,7 +180,7 @@ InprocServerTransport::MakeClientTransport() {
RefAsSubclass());
}
-OrphanablePtr MakeLameChannel(absl::string_view why,
+RefCountedPtr MakeLameChannel(absl::string_view why,
absl::Status error) {
gpr_log(GPR_ERROR, "%s: %s", std::string(why).c_str(),
std::string(error.message()).c_str());
@@ -191,11 +189,11 @@ OrphanablePtr MakeLameChannel(absl::string_view why,
if (grpc_error_get_int(error, StatusIntProperty::kRpcStatus, &integer)) {
status = static_cast(integer);
}
- return OrphanablePtr(Channel::FromC(grpc_lame_client_channel_create(
+ return RefCountedPtr(Channel::FromC(grpc_lame_client_channel_create(
nullptr, status, std::string(why).c_str())));
}
-OrphanablePtr MakeInprocChannel(Server* server,
+RefCountedPtr MakeInprocChannel(Server* server,
ChannelArgs client_channel_args) {
auto transports = MakeInProcessTransportPair(server->channel_args());
auto client_transport = std::move(transports.first);
diff --git a/src/core/lib/channel/channel_stack.cc b/src/core/lib/channel/channel_stack.cc
index 59c80a2d42d..837c90a445a 100644
--- a/src/core/lib/channel/channel_stack.cc
+++ b/src/core/lib/channel/channel_stack.cc
@@ -124,8 +124,7 @@ grpc_error_handle grpc_channel_stack_init(
if (grpc_trace_channel_stack.enabled()) {
LOG(INFO) << "CHANNEL_STACK: init " << name;
for (size_t i = 0; i < filter_count; i++) {
- gpr_log(GPR_INFO, "CHANNEL_STACK: filter %s%s", filters[i]->name,
- filters[i]->make_call_promise ? " [promise-capable]" : "");
+ LOG(INFO) << "CHANNEL_STACK: filter " << filters[i]->name;
}
}
@@ -297,35 +296,6 @@ grpc_call_stack* grpc_call_stack_from_top_element(grpc_call_element* elem) {
void grpc_channel_stack_no_post_init(grpc_channel_stack*,
grpc_channel_element*) {}
-namespace {
-
-grpc_core::NextPromiseFactory ClientNext(grpc_channel_element* elem) {
- return [elem](grpc_core::CallArgs args) {
- return elem->filter->make_call_promise(elem, std::move(args),
- ClientNext(elem + 1));
- };
-}
-
-} // namespace
-
-grpc_core::ArenaPromise
-grpc_channel_stack::MakeClientCallPromise(grpc_core::CallArgs call_args) {
- return ClientNext(grpc_channel_stack_element(this, 0))(std::move(call_args));
-}
-
-void grpc_channel_stack::InitClientCallSpine(
- grpc_core::CallSpineInterface* call) {
- for (size_t i = 0; i < count; i++) {
- auto* elem = grpc_channel_stack_element(this, i);
- if (elem->filter->init_call == nullptr) {
- grpc_core::Crash(
- absl::StrCat("Filter '", elem->filter->name,
- "' does not support the call-v3 interface"));
- }
- elem->filter->init_call(elem, call);
- }
-}
-
void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
grpc_call_element* elem,
grpc_transport_stream_op_batch* op) {
diff --git a/src/core/lib/channel/channel_stack.h b/src/core/lib/channel/channel_stack.h
index bf6dd00412b..ce9d2dfab0a 100644
--- a/src/core/lib/channel/channel_stack.h
+++ b/src/core/lib/channel/channel_stack.h
@@ -105,24 +105,6 @@ struct grpc_channel_filter {
// See grpc_call_next_op on how to call the next element in the stack
void (*start_transport_stream_op_batch)(grpc_call_element* elem,
grpc_transport_stream_op_batch* op);
- // Create a promise to execute one call.
- // If this is non-null, it may be used in preference to
- // start_transport_stream_op_batch.
- // If this is used in preference to start_transport_stream_op_batch, the
- // following can be omitted also:
- // - calling init_call_elem, destroy_call_elem, set_pollset_or_pollset_set
- // - allocation of memory for call data
- // There is an on-going migration to move all filters to providing this, and
- // then to drop start_transport_stream_op_batch.
- grpc_core::ArenaPromise (*make_call_promise)(
- grpc_channel_element* elem, grpc_core::CallArgs call_args,
- grpc_core::NextPromiseFactory next_promise_factory);
- // Register interceptors into a call.
- // If this is non-null it may be used in preference to make_call_promise.
- // There is an on-going migration to move all filters to providing this, and
- // then to drop start_transport_stream_op_batch.
- void (*init_call)(grpc_channel_element* elem,
- grpc_core::CallSpineInterface* call_spine);
// Called to handle channel level operations - e.g. new calls, or transport
// closure.
// See grpc_channel_next_op on how to call the next element in the stack
@@ -233,13 +215,6 @@ struct grpc_channel_stack {
IncrementRefCount();
return grpc_core::RefCountedPtr(this);
}
-
- grpc_core::ArenaPromise
- MakeClientCallPromise(grpc_core::CallArgs call_args);
- grpc_core::ArenaPromise
- MakeServerCallPromise(grpc_core::CallArgs call_args);
-
- void InitClientCallSpine(grpc_core::CallSpineInterface* call);
};
// A call stack tracks a set of related filters for one call, and guarantees
diff --git a/src/core/lib/channel/channel_stack_builder.h b/src/core/lib/channel/channel_stack_builder.h
index b7c0f840d0f..82a0592bc4f 100644
--- a/src/core/lib/channel/channel_stack_builder.h
+++ b/src/core/lib/channel/channel_stack_builder.h
@@ -74,11 +74,6 @@ class ChannelStackBuilder {
// Helper to add a filter to the end of the stack.
void AppendFilter(const grpc_channel_filter* filter);
- // Determine whether a promise-based call stack is able to be built.
- // Iterates each filter and ensures that there's a promise factory there.
- // This will go away once the promise conversion is completed.
- virtual bool IsPromising() const = 0;
-
// Build the channel stack.
// After success, *result holds the new channel stack,
// prefix_bytes are allocated before the channel stack,
diff --git a/src/core/lib/channel/channel_stack_builder_impl.cc b/src/core/lib/channel/channel_stack_builder_impl.cc
index 62c527ffe61..935eb222f35 100644
--- a/src/core/lib/channel/channel_stack_builder_impl.cc
+++ b/src/core/lib/channel/channel_stack_builder_impl.cc
@@ -54,153 +54,12 @@
namespace grpc_core {
-namespace {
-
-const grpc_channel_filter* PromiseTracingFilterFor(
- const grpc_channel_filter* filter) {
- struct DerivedFilter : public grpc_channel_filter {
- explicit DerivedFilter(const grpc_channel_filter* filter)
- : grpc_channel_filter{
- // start_transport_stream_op_batch:
- grpc_call_next_op,
- // make_call_promise:
- [](grpc_channel_element* elem, CallArgs call_args,
- NextPromiseFactory next_promise_factory)
- -> ArenaPromise {
- auto* source_filter =
- static_cast(elem->filter)->filter;
- gpr_log(
- GPR_DEBUG,
- "%s[%s] CreateCallPromise: client_initial_metadata=%s",
- GetContext()->DebugTag().c_str(),
- source_filter->name,
- call_args.client_initial_metadata->DebugString().c_str());
- return [source_filter, child = next_promise_factory(
- std::move(call_args))]() mutable {
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: begin",
- GetContext()->DebugTag().c_str(),
- source_filter->name);
- auto r = child();
- if (auto* p = r.value_if_ready()) {
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: done: %s",
- GetContext()->DebugTag().c_str(),
- source_filter->name, (*p)->DebugString().c_str());
- } else {
- gpr_log(GPR_DEBUG, "%s[%s] PollCallPromise: <>",
- GetContext()->DebugTag().c_str(),
- source_filter->name);
- }
- return r;
- };
- },
- /* init_call: */
- [](grpc_channel_element* elem, CallSpineInterface* call) {
- auto* c = DownCast(call);
- auto* source_filter =
- static_cast(elem->filter)->filter;
- c->client_initial_metadata().receiver.InterceptAndMap(
- [source_filter](ClientMetadataHandle md) {
- gpr_log(GPR_DEBUG, "%s[%s] OnClientInitialMetadata: %s",
- GetContext()->DebugTag().c_str(),
- source_filter->name, md->DebugString().c_str());
- return md;
- });
- c->client_to_server_messages().receiver.InterceptAndMap(
- [source_filter](MessageHandle msg) {
- gpr_log(GPR_DEBUG, "%s[%s] OnClientToServerMessage: %s",
- GetContext()->DebugTag().c_str(),
- source_filter->name, msg->DebugString().c_str());
- return msg;
- });
- c->server_initial_metadata().sender.InterceptAndMap(
- [source_filter](ServerMetadataHandle md) {
- gpr_log(GPR_DEBUG, "%s[%s] OnServerInitialMetadata: %s",
- GetContext()->DebugTag().c_str(),
- source_filter->name, md->DebugString().c_str());
- return md;
- });
- c->server_to_client_messages().sender.InterceptAndMap(
- [source_filter](MessageHandle msg) {
- gpr_log(GPR_DEBUG, "%s[%s] OnServerToClientMessage: %s",
- GetContext()->DebugTag().c_str(),
- source_filter->name, msg->DebugString().c_str());
- return msg;
- });
- },
- grpc_channel_next_op,
- /* sizeof_call_data: */ 0,
- // init_call_elem:
- [](grpc_call_element*, const grpc_call_element_args*) {
- return absl::OkStatus();
- },
- grpc_call_stack_ignore_set_pollset_or_pollset_set,
- // destroy_call_elem:
- [](grpc_call_element*, const grpc_call_final_info*,
- grpc_closure*) {},
- // sizeof_channel_data:
- 0,
- // init_channel_elem:
- [](grpc_channel_element*, grpc_channel_element_args*) {
- return absl::OkStatus();
- },
- // post_init_channel_elem:
- [](grpc_channel_stack*, grpc_channel_element*) {},
- // destroy_channel_elem:
- [](grpc_channel_element*) {}, grpc_channel_next_get_info,
- // name:
- nullptr},
- filter(filter),
- name_str(absl::StrCat(filter->name, ".trace")) {
- this->name = name_str.c_str();
- }
- const grpc_channel_filter* const filter;
- const std::string name_str;
- };
- struct Globals {
- Mutex mu;
- absl::flat_hash_map>
- map ABSL_GUARDED_BY(mu);
- };
- auto* globals = NoDestructSingleton::Get();
- MutexLock lock(&globals->mu);
- auto it = globals->map.find(filter);
- if (it != globals->map.end()) return it->second.get();
- return globals->map.emplace(filter, std::make_unique(filter))
- .first->second.get();
-}
-
-} // namespace
-
-bool ChannelStackBuilderImpl::IsPromising() const {
- for (const auto* filter : stack()) {
- if (filter->make_call_promise == nullptr) return false;
- }
- return true;
-}
-
absl::StatusOr>
ChannelStackBuilderImpl::Build() {
std::vector stack;
- const bool is_promising = IsPromising();
- const bool is_client =
- grpc_channel_stack_type_is_client(channel_stack_type());
- const bool client_promise_tracing =
- is_client && is_promising && grpc_call_trace.enabled();
- const bool server_promise_tracing =
- !is_client && is_promising && grpc_call_trace.enabled();
for (const auto* filter : this->stack()) {
- if (client_promise_tracing) {
- stack.push_back(PromiseTracingFilterFor(filter));
- }
stack.push_back(filter);
- if (server_promise_tracing) {
- stack.push_back(PromiseTracingFilterFor(filter));
- }
- }
- if (server_promise_tracing) {
- stack.pop_back(); // connected_channel must be last => can't be traced
}
// calculate the size of the channel stack
diff --git a/src/core/lib/channel/channel_stack_builder_impl.h b/src/core/lib/channel/channel_stack_builder_impl.h
index 6f298b7c287..a76e322b71b 100644
--- a/src/core/lib/channel/channel_stack_builder_impl.h
+++ b/src/core/lib/channel/channel_stack_builder_impl.h
@@ -34,8 +34,6 @@ class ChannelStackBuilderImpl final : public ChannelStackBuilder {
public:
using ChannelStackBuilder::ChannelStackBuilder;
- bool IsPromising() const override;
-
// Build the channel stack.
// After success, *result holds the new channel stack,
// prefix_bytes are allocated before the channel stack,
diff --git a/src/core/lib/channel/connected_channel.cc b/src/core/lib/channel/connected_channel.cc
index bf6fe94471b..692a3ae68c8 100644
--- a/src/core/lib/channel/connected_channel.cc
+++ b/src/core/lib/channel/connected_channel.cc
@@ -74,7 +74,6 @@
#include "src/core/lib/surface/call.h"
#include "src/core/lib/surface/call_trace.h"
#include "src/core/lib/surface/channel_stack_type.h"
-#include "src/core/lib/transport/batch_builder.h"
#include "src/core/lib/transport/error_utils.h"
#include "src/core/lib/transport/metadata_batch.h"
#include "src/core/lib/transport/transport.h"
@@ -245,683 +244,48 @@ static void connected_channel_get_channel_info(
namespace grpc_core {
namespace {
-
-#if defined(GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL) || \
- defined(GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL)
-class ConnectedChannelStream : public Orphanable {
- public:
- explicit ConnectedChannelStream(Transport* transport)
- : transport_(transport), stream_(nullptr, StreamDeleter(this)) {
- GRPC_STREAM_REF_INIT(
- &stream_refcount_, 1,
- [](void* p, grpc_error_handle) {
- static_cast(p)->BeginDestroy();
- },
- this, "ConnectedChannelStream");
- }
-
- Transport* transport() { return transport_; }
- grpc_closure* stream_destroyed_closure() { return &stream_destroyed_; }
-
- BatchBuilder::Target batch_target() {
- return BatchBuilder::Target{transport_, stream_.get(), &stream_refcount_};
- }
-
- void IncrementRefCount(const char* reason = "smartptr") {
-#ifndef NDEBUG
- grpc_stream_ref(&stream_refcount_, reason);
-#else
- (void)reason;
- grpc_stream_ref(&stream_refcount_);
-#endif
- }
-
- void Unref(const char* reason = "smartptr") {
-#ifndef NDEBUG
- grpc_stream_unref(&stream_refcount_, reason);
-#else
- (void)reason;
- grpc_stream_unref(&stream_refcount_);
-#endif
- }
-
- RefCountedPtr InternalRef() {
- IncrementRefCount("smartptr");
- return RefCountedPtr(this);
- }
-
- void Orphan() final {
- bool finished = finished_.IsSet();
- if (grpc_call_trace.enabled()) {
- gpr_log(GPR_DEBUG, "%s[connected] Orphan stream, finished: %d",
- party_->DebugTag().c_str(), finished);
- }
- // If we hadn't already observed the stream to be finished, we need to
- // cancel it at the transport.
- if (!finished) {
- party_->Spawn(
- "finish",
- [self = InternalRef()]() {
- if (!self->finished_.IsSet()) {
- self->finished_.Set();
- }
- return Empty{};
- },
- [](Empty) {});
- GetContext()->Cancel(batch_target(),
- absl::CancelledError());
- }
- Unref("orphan connected stream");
- }
-
- // Returns a promise that implements the receive message loop.
- auto RecvMessages(PipeSender* incoming_messages,
- bool cancel_on_error);
- // Returns a promise that implements the send message loop.
- auto SendMessages(PipeReceiver* outgoing_messages);
-
- void SetStream(grpc_stream* stream) { stream_.reset(stream); }
- grpc_stream* stream() { return stream_.get(); }
- grpc_stream_refcount* stream_refcount() { return &stream_refcount_; }
-
- void set_finished() { finished_.Set(); }
- auto WaitFinished() { return finished_.Wait(); }
-
- private:
- class StreamDeleter {
- public:
- explicit StreamDeleter(ConnectedChannelStream* impl) : impl_(impl) {}
- void operator()(grpc_stream* stream) const {
- if (stream == nullptr) return;
- impl_->transport()->filter_stack_transport()->DestroyStream(
- stream, impl_->stream_destroyed_closure());
- }
-
- private:
- ConnectedChannelStream* impl_;
- };
- using StreamPtr = std::unique_ptr;
-
- void StreamDestroyed() {
- call_context_->RunInContext([this] { this->~ConnectedChannelStream(); });
- }
-
- void BeginDestroy() {
- if (stream_ != nullptr) {
- stream_.reset();
- } else {
- StreamDestroyed();
- }
- }
-
- Transport* const transport_;
- RefCountedPtr const call_context_{
- GetContext()->Ref()};
- grpc_closure stream_destroyed_ =
- MakeMemberClosure(
- this, DEBUG_LOCATION);
- grpc_stream_refcount stream_refcount_;
- StreamPtr stream_;
- Arena* arena_ = GetContext();
- Party* const party_ = GetContext();
- ExternallyObservableLatch finished_;
+const grpc_channel_filter kConnectedFilter{
+ connected_channel_start_transport_stream_op_batch,
+ connected_channel_start_transport_op,
+ sizeof(call_data),
+ connected_channel_init_call_elem,
+ set_pollset_or_pollset_set,
+ connected_channel_destroy_call_elem,
+ sizeof(channel_data),
+ connected_channel_init_channel_elem,
+ +[](grpc_channel_stack* channel_stack, grpc_channel_element* elem) {
+ // HACK(ctiller): increase call stack size for the channel to make
+ // space for channel data. We need a cleaner (but performant) way to
+ // do this, and I'm not sure what that is yet. This is only "safe"
+ // because call stacks place no additional data after the last call
+ // element, and the last call element MUST be the connected channel.
+ auto* transport =
+ static_cast(elem->channel_data)->transport;
+ if (transport->filter_stack_transport() != nullptr) {
+ channel_stack->call_stack_size +=
+ transport->filter_stack_transport()->SizeOfStream();
+ }
+ },
+ connected_channel_destroy_channel_elem,
+ connected_channel_get_channel_info,
+ "connected",
};
-auto ConnectedChannelStream::RecvMessages(
- PipeSender* incoming_messages, bool cancel_on_error) {
- return Loop([self = InternalRef(), cancel_on_error,
- incoming_messages = std::move(*incoming_messages)]() mutable {
- return Seq(
- GetContext()->ReceiveMessage(self->batch_target()),
- [cancel_on_error, &incoming_messages](
- absl::StatusOr> status) mutable {
- bool has_message = status.ok() && status->has_value();
- auto publish_message = [&incoming_messages, &status]() {
- auto pending_message = std::move(**status);
- if (grpc_call_trace.enabled()) {
- gpr_log(GPR_INFO,
- "%s[connected] RecvMessage: received payload of %" PRIdPTR
- " bytes",
- GetContext()->DebugTag().c_str(),
- pending_message->payload()->Length());
- }
- return Map(incoming_messages.Push(std::move(pending_message)),
- [](bool ok) -> LoopCtl {
- if (!ok) {
- if (grpc_call_trace.enabled()) {
- gpr_log(
- GPR_INFO,
- "%s[connected] RecvMessage: failed to "
- "push message towards the application",
- GetContext()->DebugTag().c_str());
- }
- return absl::OkStatus();
- }
- return Continue{};
- });
- };
- auto publish_close = [cancel_on_error, &incoming_messages,
- &status]() mutable {
- if (grpc_call_trace.enabled()) {
- gpr_log(GPR_INFO,
- "%s[connected] RecvMessage: reached end of stream with "
- "status:%s",
- GetContext()->DebugTag().c_str(),
- status.status().ToString().c_str());
- }
- if (cancel_on_error && !status.ok()) {
- incoming_messages.CloseWithError();
- } else {
- incoming_messages.Close();
- }
- return Immediate(LoopCtl(status.status()));
- };
- return If(has_message, std::move(publish_message),
- std::move(publish_close));
- });
- });
-}
-
-auto ConnectedChannelStream::SendMessages(
- PipeReceiver* outgoing_messages) {
- return ForEach(std::move(*outgoing_messages),
- [self = InternalRef()](MessageHandle message) {
- return GetContext()->SendMessage(
- self->batch_target(), std::move(message));
- });
-}
-#endif // defined(GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL) ||
- // defined(GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL)
-
-#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL
-ArenaPromise MakeClientCallPromise(Transport* transport,
- CallArgs call_args,
- NextPromiseFactory) {
- OrphanablePtr stream(
- GetContext()->New(transport));
- stream->SetStream(static_cast(GetContext()->Alloc(
- transport->filter_stack_transport()->SizeOfStream())));
- transport->filter_stack_transport()->InitStream(stream->stream(),
- stream->stream_refcount(),
- nullptr, GetContext());
- auto* party = GetContext();
- party->Spawn("set_polling_entity", call_args.polling_entity->Wait(),
- [transport, stream = stream->InternalRef()](
- grpc_polling_entity polling_entity) {
- transport->SetPollingEntity(stream->stream(), &polling_entity);
- });
- // Start a loop to send messages from client_to_server_messages to the
- // transport. When the pipe closes and the loop completes, send a trailing
- // metadata batch to close the stream.
- party->Spawn(
- "send_messages",
- TrySeq(stream->SendMessages(call_args.client_to_server_messages),
- [stream = stream->InternalRef()]() {
- return GetContext()->SendClientTrailingMetadata(
- stream->batch_target());
- }),
- [](absl::Status) {});
- // Start a promise to receive server initial metadata and then forward it up
- // through the receiving pipe.
- auto server_initial_metadata = Arena::MakePooled();
- party->Spawn(
- "recv_initial_metadata",
- TrySeq(GetContext()->ReceiveServerInitialMetadata(
- stream->batch_target()),
- [pipe = call_args.server_initial_metadata](
- ServerMetadataHandle server_initial_metadata) {
- if (grpc_call_trace.enabled()) {
- gpr_log(GPR_DEBUG,
- "%s[connected] Publish client initial metadata: %s",
- GetContext()->DebugTag().c_str(),
- server_initial_metadata->DebugString().c_str());
- }
- return Map(pipe->Push(std::move(server_initial_metadata)),
- [](bool r) {
- if (r) return absl::OkStatus();
- return absl::CancelledError();
- });
- }),
- [](absl::Status) {});
-
- // Build up the rest of the main call promise:
-
- // Create a promise that will send initial metadata and then signal completion
- // of that via the token.
- auto send_initial_metadata = Seq(
- GetContext()->SendClientInitialMetadata(
- stream->batch_target(), std::move(call_args.client_initial_metadata)),
- [sent_initial_metadata_token =
- std::move(call_args.client_initial_metadata_outstanding)](
- absl::Status status) mutable {
- sent_initial_metadata_token.Complete(status.ok());
- return status;
- });
- // Create a promise that will receive server trailing metadata.
- // If this fails, we massage the error into metadata that we can report
- // upwards.
- auto server_trailing_metadata = Arena::MakePooled();
- auto recv_trailing_metadata = Map(
- GetContext()->ReceiveServerTrailingMetadata(
- stream->batch_target()),
- [](absl::StatusOr status) mutable {
- if (!status.ok()) {
- auto server_trailing_metadata = Arena::MakePooled();
- grpc_status_code status_code = GRPC_STATUS_UNKNOWN;
- std::string message;
- grpc_error_get_status(status.status(), Timestamp::InfFuture(),
- &status_code, &message, nullptr, nullptr);
- server_trailing_metadata->Set(GrpcStatusMetadata(), status_code);
- server_trailing_metadata->Set(GrpcMessageMetadata(),
- Slice::FromCopiedString(message));
- return server_trailing_metadata;
- } else {
- return std::move(*status);
- }
- });
- // Finally the main call promise.
- // Concurrently: send initial metadata and receive messages, until BOTH
- // complete (or one fails).
- // Next: receive trailing metadata, and return that up the stack.
- auto recv_messages =
- stream->RecvMessages(call_args.server_to_client_messages, false);
- return Map(
- [send_initial_metadata = std::move(send_initial_metadata),
- recv_messages = std::move(recv_messages),
- recv_trailing_metadata = std::move(recv_trailing_metadata),
- done_send_initial_metadata = false, done_recv_messages = false,
- done_recv_trailing_metadata =
- false]() mutable -> Poll {
- if (!done_send_initial_metadata) {
- auto p = send_initial_metadata();
- if (auto* r = p.value_if_ready()) {
- done_send_initial_metadata = true;
- if (!r->ok()) return StatusCast(*r);
- }
- }
- if (!done_recv_messages) {
- auto p = recv_messages();
- if (p.ready()) {
- // NOTE: ignore errors here, they'll be collected in the
- // recv_trailing_metadata.
- done_recv_messages = true;
- } else {
- return Pending{};
- }
- }
- if (!done_recv_trailing_metadata) {
- auto p = recv_trailing_metadata();
- if (auto* r = p.value_if_ready()) {
- done_recv_trailing_metadata = true;
- return std::move(*r);
- }
- }
- return Pending{};
- },
- [stream = std::move(stream)](ServerMetadataHandle result) {
- stream->set_finished();
- return result;
- });
-}
-#endif
-
-#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
-ArenaPromise MakeServerCallPromise(
- Transport* transport, CallArgs, NextPromiseFactory next_promise_factory) {
- OrphanablePtr stream(
- GetContext()->New(transport));
-
- stream->SetStream(static_cast(GetContext()->Alloc(
- transport->filter_stack_transport()->SizeOfStream())));
- transport->filter_stack_transport()->InitStream(
- stream->stream(), stream->stream_refcount(),
- GetContext()->server_call_context()->server_stream_data(),
- GetContext());
- auto* party = GetContext();
-
- // Arifacts we need for the lifetime of the call.
- struct CallData {
- Pipe server_to_client;
- Pipe client_to_server;
- Pipe server_initial_metadata;
- Latch failure_latch;
- Latch polling_entity_latch;
- bool sent_initial_metadata = false;
- bool sent_trailing_metadata = false;
- };
- auto* call_data = GetContext()->New();
- GetContext()->Add(
- [call_data](const grpc_call_final_info*) { call_data->~CallData(); });
-
- party->Spawn("set_polling_entity", call_data->polling_entity_latch.Wait(),
- [transport, stream = stream->InternalRef()](
- grpc_polling_entity polling_entity) {
- transport->SetPollingEntity(stream->stream(), &polling_entity);
- });
-
- auto server_to_client_empty =
- call_data->server_to_client.receiver.AwaitEmpty();
-
- // Create a promise that will receive client initial metadata, and then run
- // the main stem of the call (calling next_promise_factory up through the
- // filters).
- // Race the main call with failure_latch, allowing us to forcefully complete
- // the call in the case of a failure.
- auto recv_initial_metadata_then_run_promise =
- TrySeq(GetContext()->ReceiveClientInitialMetadata(
- stream->batch_target()),
- [next_promise_factory = std::move(next_promise_factory),
- server_to_client_empty = std::move(server_to_client_empty),
- call_data](ClientMetadataHandle client_initial_metadata) {
- auto call_promise = next_promise_factory(CallArgs{
- std::move(client_initial_metadata),
- ClientInitialMetadataOutstandingToken::Empty(),
- &call_data->polling_entity_latch,
- &call_data->server_initial_metadata.sender,
- &call_data->client_to_server.receiver,
- &call_data->server_to_client.sender,
- });
- return Race(call_data->failure_latch.Wait(),
- [call_promise = std::move(call_promise),
- server_to_client_empty =
- std::move(server_to_client_empty)]() mutable
- -> Poll {
- // TODO(ctiller): this is deeply weird and we need
- // to clean this up.
- //
- // The following few lines check to ensure that
- // there's no message currently pending in the
- // outgoing message queue, and if (and only if)
- // that's true decides to poll the main promise to
- // see if there's a result.
- //
- // This essentially introduces a polling priority
- // scheme that makes the current promise structure
- // work out the way we want when talking to
- // transports.
- //
- // The problem is that transports are going to need
- // to replicate this structure when they convert to
- // promises, and that becomes troubling as we'll be
- // replicating weird throughout the stack.
- //
- // Instead we likely need to change the way we're
- // composing promises through the stack.
- //
- // Proposed is to change filters from a promise
- // that takes ClientInitialMetadata and returns
- // ServerTrailingMetadata with three pipes for
- // ServerInitialMetadata and
- // ClientToServerMessages, ServerToClientMessages.
- // Instead we'll have five pipes, moving
- // ClientInitialMetadata and ServerTrailingMetadata
- // to pipes that can be intercepted.
- //
- // The effect of this change will be to cripple the
- // things that can be done in a filter (but cripple
- // in line with what most filters actually do).
- // We'll likely need to add a `CallContext::Cancel`
- // to allow filters to cancel a request, but this
- // would also have the advantage of centralizing
- // our cancellation machinery which seems like an
- // additional win - with the net effect that the
- // shape of the call gets made explicit at the top
- // & bottom of the stack.
- //
- // There's a small set of filters (retry, this one,
- // lame client, clinet channel) that terminate
- // stacks and need a richer set of semantics, but
- // that ends up being fine because we can spawn
- // tasks in parties to handle those edge cases, and
- // keep the majority of filters simple: they just
- // call InterceptAndMap on a handful of filters at
- // call initialization time and then proceed to
- // actually filter.
- //
- // So that's the plan, why isn't it enacted here?
- //
- // Well, the plan ends up being easy to implement
- // in the promise based world (I did a prototype on
- // a branch in an afternoon). It's heinous to
- // implement in promise_based_filter, and that code
- // is load bearing for us at the time of writing.
- // It's not worth delaying promises for a further N
- // months (N ~ 6) to make that change.
- //
- // Instead, we'll move forward with this, get
- // promise_based_filter out of the picture, and
- // then during the mop-up phase for promises tweak
- // the compute structure to move to the magical
- // five pipes (I'm reminded of an old Onion
- // article), and end up in a good happy place.
- if (server_to_client_empty().pending()) {
- return Pending{};
- }
- return call_promise();
- });
- });
-
- // Promise factory that accepts a ServerMetadataHandle, and sends it as the
- // trailing metadata for this call.
- auto send_trailing_metadata = [call_data, stream = stream->InternalRef()](
- ServerMetadataHandle
- server_trailing_metadata) {
- bool is_cancellation =
- server_trailing_metadata->get(GrpcCallWasCancelled()).value_or(false);
- return GetContext()->SendServerTrailingMetadata(
- stream->batch_target(), std::move(server_trailing_metadata),
- is_cancellation ||
- !std::exchange(call_data->sent_initial_metadata, true));
- };
-
- // Runs the receive message loop, either until all the messages
- // are received or the server call is complete.
- party->Spawn(
- "recv_messages",
- Race(
- Map(stream->WaitFinished(), [](Empty) { return absl::OkStatus(); }),
- Map(stream->RecvMessages(&call_data->client_to_server.sender, true),
- [failure_latch = &call_data->failure_latch](absl::Status status) {
- if (!status.ok() && !failure_latch->is_set()) {
- failure_latch->Set(ServerMetadataFromStatus(status));
- }
- return status;
- })),
- [](absl::Status) {});
-
- // Run a promise that will send initial metadata (if that pipe sends some).
- // And then run the send message loop until that completes.
-
- auto send_initial_metadata = Seq(
- Race(Map(stream->WaitFinished(),
- [](Empty) { return NextResult(true); }),
- call_data->server_initial_metadata.receiver.Next()),
- [call_data, stream = stream->InternalRef()](
- NextResult next_result) mutable {
- auto md = !call_data->sent_initial_metadata && next_result.has_value()
- ? std::move(next_result.value())
- : nullptr;
- if (md != nullptr) {
- call_data->sent_initial_metadata = true;
- auto* party = GetContext();
- party->Spawn("connected/send_initial_metadata",
- GetContext()->SendServerInitialMetadata(
- stream->batch_target(), std::move(md)),
- [](absl::Status) {});
- return Immediate(absl::OkStatus());
- }
- return Immediate(absl::CancelledError());
- });
- party->Spawn(
- "send_initial_metadata_then_messages",
- Race(Map(stream->WaitFinished(), [](Empty) { return absl::OkStatus(); }),
- TrySeq(std::move(send_initial_metadata),
- stream->SendMessages(&call_data->server_to_client.receiver))),
- [](absl::Status) {});
-
- // Spawn a job to fetch the "client trailing metadata" - if this is OK then
- // it's client done, otherwise it's a signal of cancellation from the client
- // which we'll use failure_latch to signal.
-
- party->Spawn(
- "recv_trailing_metadata",
- Seq(GetContext()->ReceiveClientTrailingMetadata(
- stream->batch_target()),
- [failure_latch = &call_data->failure_latch](
- absl::StatusOr status) mutable {
- if (grpc_call_trace.enabled()) {
- gpr_log(
- GPR_DEBUG,
- "%s[connected] Got trailing metadata; status=%s metadata=%s",
- GetContext()->DebugTag().c_str(),
- status.status().ToString().c_str(),
- status.ok() ? (*status)->DebugString().c_str() : "");
- }
- ClientMetadataHandle trailing_metadata;
- if (status.ok()) {
- trailing_metadata = std::move(*status);
- } else {
- trailing_metadata = Arena::MakePooled();
- grpc_status_code status_code = GRPC_STATUS_UNKNOWN;
- std::string message;
- grpc_error_get_status(status.status(), Timestamp::InfFuture(),
- &status_code, &message, nullptr, nullptr);
- trailing_metadata->Set(GrpcStatusMetadata(), status_code);
- trailing_metadata->Set(GrpcMessageMetadata(),
- Slice::FromCopiedString(message));
- }
- if (trailing_metadata->get(GrpcStatusMetadata())
- .value_or(GRPC_STATUS_UNKNOWN) != GRPC_STATUS_OK) {
- if (!failure_latch->is_set()) {
- failure_latch->Set(std::move(trailing_metadata));
- }
- }
- return Empty{};
- }),
- [](Empty) {});
-
- // Finally assemble the main call promise:
- // Receive initial metadata from the client and start the promise up the
- // filter stack.
- // Upon completion, send trailing metadata to the client and then return it
- // (allowing the call code to decide on what signalling to give the
- // application).
-
- struct CleanupPollingEntityLatch {
- void operator()(Latch* latch) {
- if (!latch->is_set()) latch->Set(grpc_polling_entity());
- }
- };
- auto cleanup_polling_entity_latch =
- std::unique_ptr, CleanupPollingEntityLatch>(
- &call_data->polling_entity_latch);
- struct CleanupSendInitialMetadata {
- void operator()(CallData* call_data) {
- call_data->server_initial_metadata.receiver.CloseWithError();
- }
- };
- auto cleanup_send_initial_metadata =
- std::unique_ptr(call_data);
-
- return Map(
- Seq(std::move(recv_initial_metadata_then_run_promise),
- std::move(send_trailing_metadata)),
- [cleanup_polling_entity_latch = std::move(cleanup_polling_entity_latch),
- cleanup_send_initial_metadata = std::move(cleanup_send_initial_metadata),
- stream = std::move(stream)](ServerMetadataHandle md) {
- stream->set_finished();
- return md;
- });
-}
-#endif
-
-template (*make_call_promise)(
- Transport*, CallArgs, NextPromiseFactory)>
-grpc_channel_filter MakeConnectedFilter() {
- // Create a vtable that contains both the legacy call methods (for filter
- // stack based calls) and the new promise based method for creating
- // promise based calls (the latter iff make_call_promise != nullptr). In
- // this way the filter can be inserted into either kind of channel stack,
- // and only if all the filters in the stack are promise based will the
- // call be promise based.
- auto make_call_wrapper = +[](grpc_channel_element* elem, CallArgs call_args,
- NextPromiseFactory next) {
- Transport* transport =
- static_cast(elem->channel_data)->transport;
- return make_call_promise(transport, std::move(call_args), std::move(next));
- };
- return {
- connected_channel_start_transport_stream_op_batch,
- make_call_promise != nullptr ? make_call_wrapper : nullptr,
- /* init_call: */ nullptr,
- connected_channel_start_transport_op,
- sizeof(call_data),
- connected_channel_init_call_elem,
- set_pollset_or_pollset_set,
- connected_channel_destroy_call_elem,
- sizeof(channel_data),
- connected_channel_init_channel_elem,
- +[](grpc_channel_stack* channel_stack, grpc_channel_element* elem) {
- // HACK(ctiller): increase call stack size for the channel to make
- // space for channel data. We need a cleaner (but performant) way to
- // do this, and I'm not sure what that is yet. This is only "safe"
- // because call stacks place no additional data after the last call
- // element, and the last call element MUST be the connected channel.
- auto* transport =
- static_cast(elem->channel_data)->transport;
- if (transport->filter_stack_transport() != nullptr) {
- channel_stack->call_stack_size +=
- transport->filter_stack_transport()->SizeOfStream();
- }
- },
- connected_channel_destroy_channel_elem,
- connected_channel_get_channel_info,
- "connected",
- };
-}
-
-ArenaPromise MakeClientTransportCallPromise(
- Transport* transport, CallArgs call_args, NextPromiseFactory) {
- auto spine = GetContext()->MakeCallSpine(std::move(call_args));
- transport->client_transport()->StartCall(CallHandler{spine});
- return spine->PullServerTrailingMetadata();
-}
-
-const grpc_channel_filter kClientPromiseBasedTransportFilter =
- MakeConnectedFilter();
-
-#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_CLIENT_CALL
-const grpc_channel_filter kClientEmulatedFilter =
- MakeConnectedFilter();
-#else
-const grpc_channel_filter kClientEmulatedFilter =
- MakeConnectedFilter();
-#endif
-
-#ifdef GRPC_EXPERIMENT_IS_INCLUDED_PROMISE_BASED_SERVER_CALL
-const grpc_channel_filter kServerEmulatedFilter =
- MakeConnectedFilter();
-#else
-const grpc_channel_filter kServerEmulatedFilter =
- MakeConnectedFilter();
-#endif
-
// noop filter for the v3 stack: placeholder for now because other code requires
// we have a terminator.
// TODO(ctiller): delete when v3 transition is complete.
-const grpc_channel_filter kServerPromiseBasedTransportFilter = {
+const grpc_channel_filter kPromiseBasedTransportFilter = {
nullptr,
- [](grpc_channel_element*, CallArgs, NextPromiseFactory)
- -> ArenaPromise { Crash("not implemented"); },
- /* init_call: */ [](grpc_channel_element*, CallSpineInterface*) {},
connected_channel_start_transport_op,
0,
nullptr,
set_pollset_or_pollset_set,
nullptr,
sizeof(channel_data),
- connected_channel_init_channel_elem,
+ +[](grpc_channel_element*, grpc_channel_element_args*) {
+ return absl::InternalError(
+ "Cannot use filter based stack with promise based transports");
+ },
+[](grpc_channel_stack*, grpc_channel_element*) {},
connected_channel_destroy_channel_elem,
connected_channel_get_channel_info,
@@ -937,7 +301,6 @@ bool TransportSupportsServerPromiseBasedCalls(const ChannelArgs& args) {
auto* transport = args.GetObject();
return transport->server_transport() != nullptr;
}
-
} // namespace
void RegisterConnectedChannel(CoreConfiguration::Builder* builder) {
@@ -950,31 +313,30 @@ void RegisterConnectedChannel(CoreConfiguration::Builder* builder) {
// Option 1, and our ideal: the transport supports promise based calls,
// and so we simply use the transport directly.
builder->channel_init()
- ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL,
- &kClientPromiseBasedTransportFilter)
+ ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL, &kPromiseBasedTransportFilter)
.Terminal()
.If(TransportSupportsClientPromiseBasedCalls);
builder->channel_init()
->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL,
- &kClientPromiseBasedTransportFilter)
+ &kPromiseBasedTransportFilter)
.Terminal()
.If(TransportSupportsClientPromiseBasedCalls);
builder->channel_init()
- ->RegisterFilter(GRPC_SERVER_CHANNEL, &kServerPromiseBasedTransportFilter)
+ ->RegisterFilter(GRPC_SERVER_CHANNEL, &kPromiseBasedTransportFilter)
.Terminal()
.If(TransportSupportsServerPromiseBasedCalls);
// Option 2: the transport does not support promise based calls.
builder->channel_init()
- ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL, &kClientEmulatedFilter)
+ ->RegisterFilter(GRPC_CLIENT_SUBCHANNEL, &kConnectedFilter)
.Terminal()
.IfNot(TransportSupportsClientPromiseBasedCalls);
builder->channel_init()
- ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL, &kClientEmulatedFilter)
+ ->RegisterFilter(GRPC_CLIENT_DIRECT_CHANNEL, &kConnectedFilter)
.Terminal()
.IfNot(TransportSupportsClientPromiseBasedCalls);
builder->channel_init()
- ->RegisterFilter(GRPC_SERVER_CHANNEL, &kServerEmulatedFilter)
+ ->RegisterFilter(GRPC_SERVER_CHANNEL, &kConnectedFilter)
.Terminal()
.IfNot(TransportSupportsServerPromiseBasedCalls);
}
diff --git a/src/core/lib/channel/promise_based_filter.cc b/src/core/lib/channel/promise_based_filter.cc
index 997d4e53c4e..e0b6e054c96 100644
--- a/src/core/lib/channel/promise_based_filter.cc
+++ b/src/core/lib/channel/promise_based_filter.cc
@@ -90,9 +90,6 @@ BaseCallData::BaseCallData(
arena_(args->arena),
call_combiner_(args->call_combiner),
deadline_(args->deadline),
- call_context_(flags & kFilterExaminesCallContext
- ? arena_->New(nullptr)
- : nullptr),
server_initial_metadata_pipe_(
flags & kFilterExaminesServerInitialMetadata
? arena_->New>(arena_)
@@ -280,7 +277,7 @@ BaseCallData::Flusher::~Flusher() {
};
for (size_t i = 1; i < release_.size(); i++) {
auto* batch = release_[i];
- if (call_->call_context_ != nullptr && call_->call_context_->traced()) {
+ if (call_->call() != nullptr && call_->call()->traced()) {
batch->is_traced = true;
}
if (grpc_trace_channel.enabled()) {
@@ -300,7 +297,7 @@ BaseCallData::Flusher::~Flusher() {
gpr_log(GPR_INFO, "FLUSHER:forward batch: %s",
grpc_transport_stream_op_batch_string(release_[0], false).c_str());
}
- if (call_->call_context_ != nullptr && call_->call_context_->traced()) {
+ if (call_->call() != nullptr && call_->call()->traced()) {
release_[0]->is_traced = true;
}
grpc_call_next_op(call_->elem(), release_[0]);
diff --git a/src/core/lib/channel/promise_based_filter.h b/src/core/lib/channel/promise_based_filter.h
index a5325c32479..a95b643e9b2 100644
--- a/src/core/lib/channel/promise_based_filter.h
+++ b/src/core/lib/channel/promise_based_filter.h
@@ -75,12 +75,6 @@
namespace grpc_core {
-// HACK: If a filter has this type as a base class it will be skipped in
-// v3 filter stacks. This is a temporary measure to allow the v3 filter stack
-// to be bought up whilst some tests inadvertently rely on hard to convert
-// filters.
-class HackyHackyHackySkipInV3FilterStacks {};
-
class ChannelFilter {
public:
class Args {
@@ -608,220 +602,6 @@ inline void InterceptClientToServerMessage(const NoInterceptor*,
FilterCallData*,
const CallArgs&) {}
-template
-inline auto InterceptClientToServerMessageHandler(
- ServerMetadataHandle (Derived::Call::*fn)(const Message&),
- typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- return
- [call, call_spine](MessageHandle msg) -> absl::optional {
- auto return_md = call->OnClientToServerMessage(*msg);
- if (return_md == nullptr) return std::move(msg);
- call_spine->PushServerTrailingMetadata(std::move(return_md));
- return absl::nullopt;
- };
-}
-
-template
-inline auto InterceptClientToServerMessageHandler(
- void (Derived::Call::*fn)(const Message&), typename Derived::Call* call,
- Derived*, PipeBasedCallSpine*) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- return [call](MessageHandle msg) -> absl::optional {
- call->OnClientToServerMessage(*msg);
- return std::move(msg);
- };
-}
-
-template
-inline auto InterceptClientToServerMessageHandler(
- ServerMetadataHandle (Derived::Call::*fn)(const Message&, Derived*),
- typename Derived::Call* call, Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- return [call, call_spine,
- channel](MessageHandle msg) -> absl::optional {
- auto return_md = call->OnClientToServerMessage(*msg, channel);
- if (return_md == nullptr) return std::move(msg);
- call_spine->PushServerTrailingMetadata(std::move(return_md));
- return absl::nullopt;
- };
-}
-
-template
-inline auto InterceptClientToServerMessageHandler(
- MessageHandle (Derived::Call::*fn)(MessageHandle, Derived*),
- typename Derived::Call* call, Derived* channel, PipeBasedCallSpine*) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- return [call, channel](MessageHandle msg) {
- return call->OnClientToServerMessage(std::move(msg), channel);
- };
-}
-
-template
-inline auto InterceptClientToServerMessageHandler(
- absl::StatusOr (Derived::Call::*fn)(MessageHandle, Derived*),
- typename Derived::Call* call, Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- return [call, call_spine,
- channel](MessageHandle msg) -> absl::optional {
- auto r = call->OnClientToServerMessage(std::move(msg), channel);
- if (r.ok()) return std::move(*r);
- call_spine->PushServerTrailingMetadata(
- ServerMetadataFromStatus(r.status()));
- return absl::nullopt;
- };
-}
-
-template
-inline void InterceptClientToServerMessage(HookFunction fn,
- const NoInterceptor*,
- typename Derived::Call* call,
- Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- call_spine->client_to_server_messages().receiver.InterceptAndMap(
- InterceptClientToServerMessageHandler(fn, call, channel, call_spine));
-}
-
-template
-inline void InterceptClientToServerMessage(HookFunction fn,
- void (Derived::Call::*half_close)(),
- typename Derived::Call* call,
- Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientToServerMessage);
- DCHECK(half_close == &Derived::Call::OnClientToServerHalfClose);
- call_spine->client_to_server_messages().receiver.InterceptAndMapWithHalfClose(
- InterceptClientToServerMessageHandler(fn, call, channel, call_spine),
- [call]() { call->OnClientToServerHalfClose(); });
-}
-
-template
-inline void InterceptClientToServerMessage(const NoInterceptor*,
- const NoInterceptor*,
- typename Derived::Call*, Derived*,
- PipeBasedCallSpine*) {}
-
-inline void InterceptClientInitialMetadata(const NoInterceptor*, void*, void*,
- PipeBasedCallSpine*) {}
-
-template
-inline void InterceptClientInitialMetadata(
- void (Derived::Call::*fn)(ClientMetadata& md), typename Derived::Call* call,
- Derived*, PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call](ClientMetadataHandle md) {
- call->OnClientInitialMetadata(*md);
- return md;
- });
-}
-
-template
-inline void InterceptClientInitialMetadata(
- void (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
- typename Derived::Call* call, Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call, channel](ClientMetadataHandle md) {
- call->OnClientInitialMetadata(*md, channel);
- return md;
- });
-}
-
-template
-inline void InterceptClientInitialMetadata(
- ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md),
- typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call_spine,
- call](ClientMetadataHandle md) -> absl::optional {
- auto return_md = call->OnClientInitialMetadata(*md);
- if (return_md == nullptr) return std::move(md);
- call_spine->PushServerTrailingMetadata(std::move(return_md));
- return absl::nullopt;
- });
-}
-
-template
-inline void InterceptClientInitialMetadata(
- ServerMetadataHandle (Derived::Call::*fn)(ClientMetadata& md,
- Derived* channel),
- typename Derived::Call* call, Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call_spine, call, channel](
- ClientMetadataHandle md) -> absl::optional {
- auto return_md = call->OnClientInitialMetadata(*md, channel);
- if (return_md == nullptr) return std::move(md);
- call_spine->PushServerTrailingMetadata(std::move(return_md));
- return absl::nullopt;
- });
-}
-
-template
-inline void InterceptClientInitialMetadata(
- absl::Status (Derived::Call::*fn)(ClientMetadata& md),
- typename Derived::Call* call, Derived*, PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call_spine,
- call](ClientMetadataHandle md) -> absl::optional {
- auto status = call->OnClientInitialMetadata(*md);
- if (status.ok()) return std::move(md);
- call_spine->PushServerTrailingMetadata(
- ServerMetadataFromStatus(status));
- return absl::nullopt;
- });
-}
-
-template
-inline void InterceptClientInitialMetadata(
- absl::Status (Derived::Call::*fn)(ClientMetadata& md, Derived* channel),
- typename Derived::Call* call, Derived* channel,
- PipeBasedCallSpine* call_spine) {
- DCHECK(fn == &Derived::Call::OnClientInitialMetadata);
- call_spine->client_initial_metadata().receiver.InterceptAndMap(
- [call_spine, call, channel](
- ClientMetadataHandle md) -> absl::optional