diff --git a/CMakeLists.txt b/CMakeLists.txt index 4377789e7f3..167c7919a71 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8502,6 +8502,8 @@ add_executable(bad_ping_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -8989,6 +8991,8 @@ add_executable(binary_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9334,6 +9338,8 @@ add_executable(call_creds_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9546,6 +9552,8 @@ add_executable(call_host_override_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10063,6 +10071,8 @@ add_executable(cancel_after_accept_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10137,6 +10147,8 @@ add_executable(cancel_after_client_done_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10211,6 +10223,8 @@ add_executable(cancel_after_invoke_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10285,6 +10299,8 @@ add_executable(cancel_after_round_trip_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10406,6 +10422,8 @@ add_executable(cancel_before_invoke_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10557,6 +10575,8 @@ add_executable(cancel_in_a_vacuum_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10631,6 +10651,8 @@ add_executable(cancel_with_status_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12462,6 +12484,8 @@ add_executable(client_streaming_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12812,6 +12836,8 @@ add_executable(compressed_payload_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13212,6 +13238,8 @@ add_executable(connectivity_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13684,6 +13712,8 @@ add_executable(default_host_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13919,6 +13949,8 @@ add_executable(disappearing_server_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14286,6 +14318,8 @@ add_executable(empty_batch_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15437,6 +15471,8 @@ add_executable(filter_causes_close_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15511,6 +15547,8 @@ add_executable(filter_init_fails_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15635,6 +15673,8 @@ add_executable(filtered_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16587,6 +16627,8 @@ add_executable(graceful_server_shutdown_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16980,6 +17022,8 @@ add_executable(grpc_authz_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18431,6 +18475,8 @@ add_executable(high_initial_seqno_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18751,6 +18797,8 @@ add_executable(hpack_size_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19026,6 +19074,8 @@ add_executable(http2_stats_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19986,6 +20036,8 @@ add_executable(invoke_large_request_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20388,6 +20440,8 @@ add_executable(keepalive_timeout_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20505,6 +20559,8 @@ add_executable(large_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21283,6 +21339,8 @@ add_executable(max_concurrent_streams_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21357,6 +21415,8 @@ add_executable(max_connection_age_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21431,6 +21491,8 @@ add_executable(max_connection_idle_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21505,6 +21567,8 @@ add_executable(max_message_length_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22254,6 +22318,8 @@ add_executable(negative_deadline_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22360,6 +22426,8 @@ add_executable(no_logging_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22434,6 +22502,8 @@ add_executable(no_op_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -23474,6 +23544,8 @@ add_executable(payload_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -23852,6 +23924,8 @@ add_executable(ping_pong_streaming_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -23977,6 +24051,8 @@ add_executable(ping_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -25520,6 +25596,8 @@ add_executable(proxy_auth_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26123,6 +26201,8 @@ add_executable(registered_call_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26341,6 +26421,8 @@ add_executable(request_with_flags_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26415,6 +26497,8 @@ add_executable(request_with_payload_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26776,6 +26860,8 @@ add_executable(resource_quota_server_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26892,6 +26978,8 @@ add_executable(retry_cancel_after_first_attempt_starts_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -26966,6 +27054,8 @@ add_executable(retry_cancel_during_delay_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27040,6 +27130,8 @@ add_executable(retry_cancel_with_multiple_send_batches_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27114,6 +27206,8 @@ add_executable(retry_cancellation_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27188,6 +27282,8 @@ add_executable(retry_disabled_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27262,6 +27358,8 @@ add_executable(retry_exceeds_buffer_size_in_delay_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27336,6 +27434,8 @@ add_executable(retry_exceeds_buffer_size_in_initial_batch_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27410,6 +27510,8 @@ add_executable(retry_exceeds_buffer_size_in_subsequent_batch_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27484,6 +27586,8 @@ add_executable(retry_lb_drop_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27558,6 +27662,8 @@ add_executable(retry_lb_fail_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27632,6 +27738,8 @@ add_executable(retry_non_retriable_status_before_trailers_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27706,6 +27814,8 @@ add_executable(retry_non_retriable_status_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27780,6 +27890,8 @@ add_executable(retry_per_attempt_recv_timeout_on_last_attempt_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27854,6 +27966,8 @@ add_executable(retry_per_attempt_recv_timeout_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -27928,6 +28042,8 @@ add_executable(retry_recv_initial_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28002,6 +28118,8 @@ add_executable(retry_recv_message_replay_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28076,6 +28194,8 @@ add_executable(retry_recv_message_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28150,6 +28270,8 @@ add_executable(retry_recv_trailing_metadata_error_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28224,6 +28346,8 @@ add_executable(retry_send_initial_metadata_refs_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28298,6 +28422,8 @@ add_executable(retry_send_op_fails_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28372,6 +28498,8 @@ add_executable(retry_send_recv_batch_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28446,6 +28574,8 @@ add_executable(retry_server_pushback_delay_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28520,6 +28650,8 @@ add_executable(retry_server_pushback_disabled_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28636,6 +28768,8 @@ add_executable(retry_streaming_after_commit_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28710,6 +28844,8 @@ add_executable(retry_streaming_succeeds_before_replay_finished_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28784,6 +28920,8 @@ add_executable(retry_streaming_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28858,6 +28996,8 @@ add_executable(retry_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -28974,6 +29114,8 @@ add_executable(retry_throttled_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29048,6 +29190,8 @@ add_executable(retry_too_many_attempts_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29122,6 +29266,8 @@ add_executable(retry_transparent_goaway_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29196,6 +29342,8 @@ add_executable(retry_transparent_max_concurrent_streams_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29270,6 +29418,8 @@ add_executable(retry_transparent_not_sent_on_wire_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29344,6 +29494,8 @@ add_executable(retry_unref_before_finish_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -29418,6 +29570,8 @@ add_executable(retry_unref_before_recv_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -30584,6 +30738,8 @@ add_executable(server_finishes_request_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -30911,6 +31067,8 @@ add_executable(server_streaming_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -31200,6 +31358,8 @@ add_executable(shutdown_finishes_calls_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -31274,6 +31434,8 @@ add_executable(shutdown_finishes_tags_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -31427,6 +31589,8 @@ add_executable(simple_delayed_request_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -31501,6 +31665,8 @@ add_executable(simple_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -31619,6 +31785,8 @@ add_executable(simple_request_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -32558,6 +32726,8 @@ add_executable(streaming_error_response_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -33361,6 +33531,8 @@ add_executable(test_core_end2end_channelz_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -33831,6 +34003,8 @@ if(_gRPC_PLATFORM_LINUX OR _gRPC_PLATFORM_POSIX) ${_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 src/core/ext/transport/chaotic_good/client_transport.cc + src/core/ext/transport/chaotic_good/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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_transport.cc @@ -34058,6 +34232,8 @@ add_executable(test_cpp_ext_chaotic_good_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -34644,6 +34820,8 @@ add_executable(timeout_before_request_call_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -35233,6 +35411,8 @@ add_executable(trailing_metadata_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -36214,6 +36394,8 @@ add_executable(write_buffering_at_end_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -36288,6 +36470,8 @@ add_executable(write_buffering_test ${_gRPC_PROTO_GENS_DIR}/src/core/ext/transport/chaotic_good/chaotic_good_frame.grpc.pb.h 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/control_endpoint.cc + src/core/ext/transport/chaotic_good/data_endpoints.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 diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index 15ca9b9ae7c..0a976bccef9 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -5528,6 +5528,7 @@ targets: - src/core/lib/debug/trace_impl.h - src/core/lib/promise/all_ok.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/status.h - src/core/lib/promise/map.h @@ -5965,6 +5966,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -5981,6 +5984,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -6007,6 +6012,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6208,6 +6215,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6224,6 +6233,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -6250,6 +6261,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6417,6 +6430,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6433,6 +6448,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -6459,6 +6476,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6664,6 +6683,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -6680,6 +6701,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -6706,6 +6729,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7398,6 +7423,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7414,6 +7441,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7440,6 +7469,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7478,6 +7509,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7494,6 +7527,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7520,6 +7555,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7559,6 +7596,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7575,6 +7614,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7601,6 +7642,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7639,6 +7682,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7655,6 +7700,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7681,6 +7728,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7736,6 +7785,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7752,6 +7803,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7778,6 +7831,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7920,6 +7975,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -7936,6 +7993,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -7962,6 +8021,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -8001,6 +8062,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -8017,6 +8080,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -8043,6 +8108,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9013,6 +9080,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9029,6 +9098,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9055,6 +9126,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9204,6 +9277,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9220,6 +9295,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9246,6 +9323,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9413,6 +9492,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9429,6 +9510,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9455,6 +9538,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9607,6 +9692,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9623,6 +9710,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9649,6 +9738,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9728,6 +9819,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9744,6 +9837,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9770,6 +9865,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9896,6 +9993,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -9912,6 +10011,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -9938,6 +10039,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10449,6 +10552,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10465,6 +10570,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -10491,6 +10598,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10529,6 +10638,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10545,6 +10656,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -10571,6 +10684,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10627,6 +10742,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -10643,6 +10760,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -10669,6 +10788,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -11193,6 +11314,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -11209,6 +11332,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -11235,6 +11360,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -11409,6 +11536,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -11425,6 +11554,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -11451,6 +11582,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -11997,6 +12130,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12013,6 +12148,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -12039,6 +12176,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12208,6 +12347,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12224,6 +12365,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -12250,6 +12393,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12384,6 +12529,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12400,6 +12547,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -12426,6 +12575,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12886,6 +13037,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12902,6 +13055,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -12928,6 +13083,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -12999,6 +13156,7 @@ targets: - src/core/lib/debug/trace_flags.h - src/core/lib/debug/trace_impl.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/join.h - src/core/lib/promise/map.h @@ -13108,6 +13266,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13124,6 +13284,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13150,6 +13312,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13200,6 +13364,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13216,6 +13382,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13242,6 +13410,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13678,6 +13848,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13694,6 +13866,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13720,6 +13894,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13758,6 +13934,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13774,6 +13952,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13800,6 +13980,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13838,6 +14020,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13854,6 +14038,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13880,6 +14066,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13918,6 +14106,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -13934,6 +14124,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -13960,6 +14152,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14247,6 +14441,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14263,6 +14459,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -14289,6 +14487,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14339,6 +14539,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14355,6 +14557,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -14381,6 +14585,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14419,6 +14625,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14435,6 +14643,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -14461,6 +14671,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14846,6 +15058,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -14862,6 +15076,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -14888,6 +15104,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15100,6 +15318,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15116,6 +15336,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -15142,6 +15364,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15210,6 +15434,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15226,6 +15452,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -15252,6 +15480,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15791,6 +16021,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -15807,6 +16039,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -15833,6 +16067,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16069,6 +16305,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16085,6 +16323,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16111,6 +16351,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16331,6 +16573,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16347,6 +16591,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16373,6 +16619,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16411,6 +16659,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16427,6 +16677,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16453,6 +16705,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16643,6 +16897,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16659,6 +16915,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16685,6 +16943,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16734,6 +16994,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16750,6 +17012,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16776,6 +17040,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16814,6 +17080,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16830,6 +17098,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16856,6 +17126,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16894,6 +17166,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16910,6 +17184,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -16936,6 +17212,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16974,6 +17252,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -16990,6 +17270,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17016,6 +17298,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17054,6 +17338,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17070,6 +17356,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17096,6 +17384,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17134,6 +17424,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17150,6 +17442,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17176,6 +17470,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17214,6 +17510,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17230,6 +17528,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17256,6 +17556,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17294,6 +17596,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17310,6 +17614,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17336,6 +17642,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17374,6 +17682,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17390,6 +17700,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17416,6 +17728,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17454,6 +17768,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17470,6 +17786,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17496,6 +17814,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17534,6 +17854,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17550,6 +17872,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17576,6 +17900,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17614,6 +17940,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17630,6 +17958,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17656,6 +17986,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17694,6 +18026,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17710,6 +18044,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17736,6 +18072,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17774,6 +18112,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17790,6 +18130,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17816,6 +18158,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17854,6 +18198,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17870,6 +18216,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17896,6 +18244,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17934,6 +18284,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -17950,6 +18302,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -17976,6 +18330,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18014,6 +18370,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18030,6 +18388,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18056,6 +18416,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18094,6 +18456,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18110,6 +18474,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18136,6 +18502,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18174,6 +18542,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18190,6 +18560,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18216,6 +18588,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18254,6 +18628,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18270,6 +18646,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18296,6 +18674,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18334,6 +18714,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18350,6 +18732,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18376,6 +18760,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18414,6 +18800,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18430,6 +18818,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18456,6 +18846,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18494,6 +18886,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18510,6 +18904,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18536,6 +18932,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18585,6 +18983,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18601,6 +19001,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18627,6 +19029,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18665,6 +19069,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18681,6 +19087,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18707,6 +19115,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18745,6 +19155,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18761,6 +19173,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18787,6 +19201,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18825,6 +19241,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18841,6 +19259,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18867,6 +19287,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18916,6 +19338,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18932,6 +19356,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -18958,6 +19384,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -18996,6 +19424,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19012,6 +19442,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19038,6 +19470,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19076,6 +19510,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19092,6 +19528,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19118,6 +19556,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19156,6 +19596,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19172,6 +19614,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19198,6 +19642,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19236,6 +19682,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19252,6 +19700,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19278,6 +19728,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19316,6 +19768,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19332,6 +19786,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19358,6 +19814,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19396,6 +19854,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19412,6 +19872,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19438,6 +19900,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19879,6 +20343,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -19895,6 +20361,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -19921,6 +20389,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20053,6 +20523,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20069,6 +20541,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20095,6 +20569,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20203,6 +20679,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20219,6 +20697,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20245,6 +20725,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20283,6 +20765,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20299,6 +20783,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20325,6 +20811,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20382,6 +20870,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20398,6 +20888,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20424,6 +20916,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20462,6 +20956,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20478,6 +20974,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20504,6 +21002,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20556,6 +21056,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20572,6 +21074,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20598,6 +21102,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20933,6 +21439,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -20949,6 +21457,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -20975,6 +21485,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21319,6 +21831,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21335,6 +21849,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -21361,6 +21877,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21595,6 +22113,8 @@ targets: headers: - src/core/ext/transport/chaotic_good/chaotic_good_transport.h - src/core/ext/transport/chaotic_good/client_transport.h + - src/core/ext/transport/chaotic_good/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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_transport.h @@ -21602,6 +22122,7 @@ targets: - 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/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_set.h @@ -21614,6 +22135,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - test/core/event_engine/fuzzing_event_engine/fuzzing_event_engine.proto - src/core/ext/transport/chaotic_good/client_transport.cc + - src/core/ext/transport/chaotic_good/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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_transport.cc @@ -21691,6 +22214,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21707,6 +22232,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -21717,6 +22244,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21906,6 +22435,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -21922,6 +22453,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -21948,6 +22481,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22159,6 +22694,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22175,6 +22712,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -22201,6 +22740,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22309,6 +22850,7 @@ targets: - src/core/lib/promise/status_flag.h - src/core/lib/promise/try_seq.h - src/core/util/glob.h + - test/core/promise/poll_matcher.h src: - src/core/lib/debug/trace.cc - src/core/lib/debug/trace_flags.cc @@ -22586,6 +23128,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22602,6 +23146,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -22628,6 +23174,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22666,6 +23214,8 @@ targets: - 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/control_endpoint.h + - src/core/ext/transport/chaotic_good/data_endpoints.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 @@ -22682,6 +23232,8 @@ targets: - 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/join.h + - src/core/lib/promise/match_promise.h - src/core/lib/promise/mpsc.h - src/core/lib/promise/switch.h - src/core/lib/promise/wait_for_callback.h @@ -22708,6 +23260,8 @@ targets: - src/core/ext/transport/chaotic_good/chaotic_good_frame.proto - 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/control_endpoint.cc + - src/core/ext/transport/chaotic_good/data_endpoints.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 diff --git a/src/core/BUILD b/src/core/BUILD index aa8e88b33c1..f65a41fbe3a 100644 --- a/src/core/BUILD +++ b/src/core/BUILD @@ -928,6 +928,7 @@ grpc_cc_library( deps = [ "join_state", "map", + "promise_factory", "//:gpr_platform", ], ) @@ -968,6 +969,7 @@ grpc_cc_library( "join_state", "map", "poll", + "promise_factory", "status_flag", "//:gpr_platform", ], @@ -982,6 +984,7 @@ grpc_cc_library( deps = [ "construct_destruct", "poll", + "promise_factory", "//:gpr_platform", ], ) @@ -1045,7 +1048,6 @@ grpc_cc_library( "promise_status", "seq_state", "status_flag", - "//:debug_location", "//:gpr_platform", ], ) @@ -8090,6 +8092,50 @@ grpc_cc_library( ], ) +grpc_cc_library( + name = "chaotic_good_control_endpoint", + srcs = [ + "ext/transport/chaotic_good/control_endpoint.cc", + ], + hdrs = [ + "ext/transport/chaotic_good/control_endpoint.h", + ], + external_deps = ["absl/cleanup"], + deps = [ + "1999", + "event_engine_context", + "event_engine_tcp_socket_utils", + "grpc_promise_endpoint", + "loop", + "try_seq", + "//:gpr", + ], +) + +grpc_cc_library( + name = "chaotic_good_data_endpoints", + srcs = [ + "ext/transport/chaotic_good/data_endpoints.cc", + ], + hdrs = [ + "ext/transport/chaotic_good/data_endpoints.h", + ], + external_deps = [ + "absl/cleanup", + "absl/strings", + ], + deps = [ + "1999", + "event_engine_context", + "grpc_promise_endpoint", + "loop", + "seq", + "slice_buffer", + "try_seq", + "//:promise", + ], +) + grpc_cc_library( name = "chaotic_good_transport", hdrs = [ @@ -8102,16 +8148,21 @@ grpc_cc_library( ], language = "c++", deps = [ + "chaotic_good_control_endpoint", + "chaotic_good_data_endpoints", "chaotic_good_frame", "chaotic_good_frame_header", + "event_engine_context", "event_engine_tcp_socket_utils", "grpc_promise_endpoint", - "if", + "loop", + "match_promise", + "mpsc", + "seq", "try_join", "try_seq", "//:gpr_platform", "//:grpc_trace", - "//:promise", ], ) @@ -8126,8 +8177,8 @@ grpc_cc_library( external_deps = [ "absl/base:core_headers", "absl/container:flat_hash_map", - "absl/log:check", "absl/log", + "absl/log:check", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -8184,8 +8235,8 @@ grpc_cc_library( "absl/base:core_headers", "absl/container:flat_hash_map", "absl/functional:any_invocable", + "absl/log", "absl/log:check", - "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -8707,8 +8758,8 @@ grpc_cc_library( ], external_deps = [ "absl/container:flat_hash_map", + "absl/log", "absl/log:check", - "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -8739,6 +8790,7 @@ grpc_cc_library( "if", "inter_activity_latch", "iomgr_fwd", + "join", "latch", "memory_quota", "metadata", @@ -8839,8 +8891,8 @@ grpc_cc_library( "ext/transport/chaotic_good/client/chaotic_good_connector.h", ], external_deps = [ + "absl/log", "absl/log:check", - "absl/log:log", "absl/random", "absl/random:bit_gen_ref", "absl/status", @@ -8849,6 +8901,7 @@ grpc_cc_library( language = "c++", deps = [ "activity", + "all_ok", "arena", "channel_args", "channel_args_endpoint_config", diff --git a/src/core/ext/transport/chaotic_good/chaotic_good_frame.proto b/src/core/ext/transport/chaotic_good/chaotic_good_frame.proto index cebb0dbfffd..cda09adc9af 100644 --- a/src/core/ext/transport/chaotic_good/chaotic_good_frame.proto +++ b/src/core/ext/transport/chaotic_good/chaotic_good_frame.proto @@ -19,10 +19,10 @@ package chaotic_good_frame; message Settings { // Connection id // - sent server->client on the control channel to specify the - // data channel connection id - // - sent client->server on the data channel to complete the - // connection - bytes connection_id = 1; + // data channel connection id, one for each desired connection + // - exactly one sent client->server on the data channel to + // complete the connection + repeated bytes connection_id = 1; // Flag true if this is a data channel (and not a control channel) bool data_channel = 2; // Requested alignment for the data channel diff --git a/src/core/ext/transport/chaotic_good/chaotic_good_transport.h b/src/core/ext/transport/chaotic_good/chaotic_good_transport.h index be2d70ac4f8..9557c536e68 100644 --- a/src/core/ext/transport/chaotic_good/chaotic_good_transport.h +++ b/src/core/ext/transport/chaotic_good/chaotic_good_transport.h @@ -20,15 +20,18 @@ #include #include -#include "absl/log/log.h" -#include "absl/random/random.h" #include "absl/strings/escaping.h" +#include "src/core/ext/transport/chaotic_good/control_endpoint.h" +#include "src/core/ext/transport/chaotic_good/data_endpoints.h" #include "src/core/ext/transport/chaotic_good/frame.h" #include "src/core/ext/transport/chaotic_good/frame_header.h" #include "src/core/lib/debug/trace.h" +#include "src/core/lib/event_engine/event_engine_context.h" #include "src/core/lib/event_engine/tcp_socket_utils.h" -#include "src/core/lib/promise/if.h" -#include "src/core/lib/promise/promise.h" +#include "src/core/lib/promise/loop.h" +#include "src/core/lib/promise/match_promise.h" +#include "src/core/lib/promise/mpsc.h" +#include "src/core/lib/promise/seq.h" #include "src/core/lib/promise/try_join.h" #include "src/core/lib/promise/try_seq.h" #include "src/core/lib/transport/promise_endpoint.h" @@ -36,6 +39,49 @@ namespace grpc_core { namespace chaotic_good { +inline std::vector OneDataEndpoint(PromiseEndpoint endpoint) { + std::vector ep; + ep.emplace_back(std::move(endpoint)); + return ep; +} + +// One received frame: the header, and the serialized bytes of the payload. +// The payload may not yet be received into memory, so the accessor for that +// returns a promise that will need to be resolved prior to inspecting the +// bytes. +// In this way we can pull bytes from various different data connections and +// read them in any order, but still have a trivial reassembly in the receiving +// call promise. +class IncomingFrame { + public: + template + IncomingFrame(FrameHeader header, T payload, size_t remove_padding) + : header_(header), + payload_(std::move(payload)), + remove_padding_(remove_padding) {} + + const FrameHeader& header() { return header_; } + + auto Payload() { + return Map( + MatchPromise( + std::move(payload_), + [](absl::StatusOr status) { return status; }, + [](DataEndpoints::ReadTicket ticket) { return ticket.Await(); }), + [remove_padding = + remove_padding_](absl::StatusOr payload) { + if (payload.ok()) payload->RemoveLastNBytesNoInline(remove_padding); + return payload; + }); + } + + private: + FrameHeader header_; + absl::variant, DataEndpoints::ReadTicket> + payload_; + size_t remove_padding_; +}; + class ChaoticGoodTransport : public RefCounted { public: struct Options { @@ -44,47 +90,85 @@ class ChaoticGoodTransport : public RefCounted { uint32_t inlined_payload_size_threshold = 8 * 1024; }; - ChaoticGoodTransport(PromiseEndpoint control_endpoint, - PromiseEndpoint data_endpoint, Options options) - : control_endpoint_(std::move(control_endpoint)), - data_endpoint_(std::move(data_endpoint)), - options_(options) { - // Enable RxMemoryAlignment and RPC receive coalescing after the transport - // setup is complete. At this point all the settings frames should have - // been read. - data_endpoint_.EnforceRxMemoryAlignmentAndCoalescing(); - } + ChaoticGoodTransport( + PromiseEndpoint control_endpoint, + std::vector data_endpoints, + std::shared_ptr + event_engine, + Options options) + : event_engine_(std::move(event_engine)), + control_endpoint_(std::move(control_endpoint), event_engine_.get()), + data_endpoints_(std::move(data_endpoints), event_engine_.get()), + options_(options) {} auto WriteFrame(const FrameInterface& frame) { - SliceBuffer control; - SliceBuffer data; FrameHeader header = frame.MakeHeader(); - if (header.payload_length > options_.inlined_payload_size_threshold) { - header.payload_connection_id = 1; - header.Serialize(control.AddTiny(FrameHeader::kFrameHeaderSize)); - frame.SerializePayload(data); - const size_t padding = header.Padding(options_.encode_alignment); - if (padding != 0) { - auto slice = MutableSlice::CreateUninitialized(padding); - memset(slice.data(), 0, padding); - data.AppendIndexed(Slice(std::move(slice))); - } - } else { - header.Serialize(control.AddTiny(FrameHeader::kFrameHeaderSize)); - frame.SerializePayload(control); - } - // ignore encoding errors: they will be logged separately already GRPC_TRACE_LOG(chaotic_good, INFO) << "CHAOTIC_GOOD: WriteFrame to:" << ResolvedAddressToString(control_endpoint_.GetPeerAddress()) .value_or("<>") << " " << frame.ToString(); - return TryJoin(control_endpoint_.Write(std::move(control)), - data_endpoint_.Write(std::move(data))); + return If( + // If we have no data endpoints, OR this is a small payload + data_endpoints_.empty() || + header.payload_length <= options_.inlined_payload_size_threshold, + // ... then write it to the control endpoint + [this, &header, &frame]() { + SliceBuffer output; + header.Serialize(output.AddTiny(FrameHeader::kFrameHeaderSize)); + frame.SerializePayload(output); + return control_endpoint_.Write(std::move(output)); + }, + // ... otherwise write it to a data connection + [this, header, &frame]() mutable { + SliceBuffer payload; + // Temporarily give a bogus connection id to get padding right + header.payload_connection_id = 1; + const size_t padding = header.Padding(options_.encode_alignment); + frame.SerializePayload(payload); + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Send " << payload.Length() + << "b payload on data channel; add " << padding << " bytes for " + << options_.encode_alignment << " alignment"; + if (padding != 0) { + auto slice = MutableSlice::CreateUninitialized(padding); + memset(slice.data(), 0, padding); + payload.AppendIndexed(Slice(std::move(slice))); + } + return Seq(data_endpoints_.Write(std::move(payload)), + [this, header](uint32_t connection_id) mutable { + header.payload_connection_id = connection_id + 1; + SliceBuffer header_frame; + header.Serialize( + header_frame.AddTiny(FrameHeader::kFrameHeaderSize)); + return control_endpoint_.Write(std::move(header_frame)); + }); + }); + } + + // Common outbound loop for both client and server (these vary only over the + // frame type). + template + auto TransportWriteLoop(MpscReceiver& outgoing_frames) { + return Loop([self = Ref(), &outgoing_frames] { + return TrySeq( + // Get next outgoing frame. + outgoing_frames.Next(), + // Serialize and write it out. + [self = self.get()](Frame client_frame) { + return self->WriteFrame(GetFrameInterface(client_frame)); + }, + []() -> LoopCtl { + // The write failures will be caught in TrySeq and exit loop. + // Therefore, only need to return Continue() in the last lambda + // function. + return Continue(); + }); + }); } // Read frame header and payloads for control and data portions of one frame. - // Resolves to StatusOr>. + // Resolves to StatusOr. auto ReadFrameBytes() { return TrySeq( control_endpoint_.ReadSlice(FrameHeader::kFrameHeaderSize), @@ -102,19 +186,36 @@ class ChaoticGoodTransport : public RefCounted { return frame_header; }, [this](FrameHeader frame_header) { - current_frame_header_ = frame_header; - auto con = frame_header.payload_connection_id == 0 - ? &control_endpoint_ - : &data_endpoint_; - return con->Read(frame_header.payload_length + - frame_header.Padding(options_.decode_alignment)); - }, - [this](SliceBuffer payload) - -> absl::StatusOr> { - payload.RemoveLastNBytesNoInline( - current_frame_header_.Padding(options_.decode_alignment)); - return std::tuple(current_frame_header_, - std::move(payload)); + return If( + // If the payload is on the connection frame + frame_header.payload_connection_id == 0, + // ... then read the data immediately and return an IncomingFrame + // that contains the payload. + // We need to do this here so that we do not create head of line + // blocking issues reading later control frames (but waiting for a + // call to get scheduled time to read the payload). + [this, frame_header]() { + return Map(control_endpoint_.Read(frame_header.payload_length), + [frame_header](absl::StatusOr payload) + -> absl::StatusOr { + if (!payload.ok()) return payload.status(); + return IncomingFrame(frame_header, + std::move(payload), 0); + }); + }, + // ... otherwise issue a read to the appropriate data endpoint, + // which will return a read ticket - which can be used later + // in the call promise to asynchronously wait for those bytes + // to be available. + [this, frame_header]() -> absl::StatusOr { + const auto padding = + frame_header.Padding(options_.decode_alignment); + return IncomingFrame( + frame_header, + data_endpoints_.Read(frame_header.payload_connection_id - 1, + frame_header.payload_length + padding), + padding); + }); }); } @@ -135,10 +236,10 @@ class ChaoticGoodTransport : public RefCounted { } private: - PromiseEndpoint control_endpoint_; - PromiseEndpoint data_endpoint_; - FrameHeader current_frame_header_; - Options options_; + std::shared_ptr event_engine_; + ControlEndpoint control_endpoint_; + DataEndpoints data_endpoints_; + const Options options_; }; } // namespace chaotic_good 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 e4f5fed19c0..e5a012f073d 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 @@ -46,6 +46,7 @@ #include "src/core/lib/iomgr/event_engine_shims/endpoint.h" #include "src/core/lib/iomgr/exec_ctx.h" #include "src/core/lib/promise/activity.h" +#include "src/core/lib/promise/all_ok.h" #include "src/core/lib/promise/context.h" #include "src/core/lib/promise/event_engine_wakeup_scheduler.h" #include "src/core/lib/promise/latch.h" @@ -90,48 +91,53 @@ ChaoticGoodConnector::~ChaoticGoodConnector() { } auto ChaoticGoodConnector::DataEndpointReadSettingsFrame( - RefCountedPtr self) { - return TrySeq(self->data_endpoint_.ReadSlice(FrameHeader::kFrameHeaderSize), - [self](Slice slice) mutable { - // Read setting frame; - // Parse frame header - auto frame_header_ = - FrameHeader::Parse(reinterpret_cast( - GRPC_SLICE_START_PTR(slice.c_slice()))); - return If( - frame_header_.ok(), - [frame_header_ = *frame_header_, self]() { - auto frame_header_length = frame_header_.payload_length; - return TrySeq( - self->data_endpoint_.Read(frame_header_length), + RefCountedPtr self, uint32_t data_connection_index) { + return TrySeq( + self->data_endpoints_[data_connection_index].ReadSlice( + FrameHeader::kFrameHeaderSize), + [self, data_connection_index](Slice slice) mutable { + // Read setting frame; + // Parse frame header + auto frame_header_ = + FrameHeader::Parse(reinterpret_cast( + GRPC_SLICE_START_PTR(slice.c_slice()))); + return If( + frame_header_.ok(), + [data_connection_index, frame_header_ = *frame_header_, self]() { + auto frame_header_length = frame_header_.payload_length; + return TrySeq(self->data_endpoints_[data_connection_index].Read( + frame_header_length), []() { return absl::OkStatus(); }); - }, - [status = frame_header_.status()]() { return status; }); - }); + }, + [status = frame_header_.status()]() { return status; }); + }); } auto ChaoticGoodConnector::DataEndpointWriteSettingsFrame( - RefCountedPtr self) { + RefCountedPtr self, uint32_t data_connection_index) { // Serialize setting frame. SettingsFrame frame; frame.settings.set_data_channel(true); - frame.settings.set_connection_id(self->connection_id_); + frame.settings.add_connection_id( + self->connection_ids_[data_connection_index]); frame.settings.set_alignment(kDataAlignmentBytes); SliceBuffer write_buffer; frame.MakeHeader().Serialize( write_buffer.AddTiny(FrameHeader::kFrameHeaderSize)); frame.SerializePayload(write_buffer); // ignore encoding errors: they will be logged separately already - return self->data_endpoint_.Write(std::move(write_buffer)); + return self->data_endpoints_[data_connection_index].Write( + std::move(write_buffer)); } auto ChaoticGoodConnector::WaitForDataEndpointSetup( - RefCountedPtr self) { + RefCountedPtr self, uint32_t data_connection_index) { // Data endpoint on_connect callback. grpc_event_engine::experimental::EventEngine::OnConnectCallback on_data_endpoint_connect = - [self](absl::StatusOr> - endpoint) mutable { + [self, data_connection_index]( + absl::StatusOr> + endpoint) mutable { ExecCtx exec_ctx; if (!endpoint.ok() || self->handshake_mgr_ == nullptr) { MutexLock lock(&self->mu_); @@ -150,9 +156,9 @@ auto ChaoticGoodConnector::WaitForDataEndpointSetup( chaotic_good_ext->EnableStatsCollection( /*is_control_channel=*/false); } - self->data_endpoint_ = + self->data_endpoints_[data_connection_index] = PromiseEndpoint(std::move(endpoint.value()), SliceBuffer()); - self->data_endpoint_ready_.Set(); + self->data_endpoint_ready_[data_connection_index]->Set(); }; self->event_engine_->Connect( std::move(on_data_endpoint_connect), *self->resolved_addr_, @@ -161,13 +167,13 @@ auto ChaoticGoodConnector::WaitForDataEndpointSetup( ResourceQuota::Default()->memory_quota()->CreateMemoryAllocator( "data_endpoint_connection"), std::chrono::seconds(kTimeoutSecs)); - return TrySeq(Race( - TrySeq(self->data_endpoint_ready_.Wait(), - [self]() mutable { - return TrySeq(DataEndpointWriteSettingsFrame(self), - DataEndpointReadSettingsFrame(self), - []() -> absl::Status { return absl::OkStatus(); }); + TrySeq(self->data_endpoint_ready_[data_connection_index]->Wait(), + [self, data_connection_index]() mutable { + return TrySeq( + DataEndpointWriteSettingsFrame(self, data_connection_index), + DataEndpointReadSettingsFrame(self, data_connection_index), + []() -> absl::Status { return absl::OkStatus(); }); }), TrySeq(Sleep(Timestamp::Now() + Duration::Seconds(kTimeoutSecs)), []() -> absl::Status { @@ -198,10 +204,29 @@ auto ChaoticGoodConnector::ControlEndpointReadSettingsFrame( return absl::UnavailableError( "no connection id in settings frame"); } - self->connection_id_ = frame.settings.connection_id(); + for (const auto& connection_id : + frame.settings.connection_id()) { + self->connection_ids_.push_back(connection_id); + } + self->data_endpoints_.resize(self->connection_ids_.size()); + for (size_t i = 0; i < self->connection_ids_.size(); ++i) { + self->data_endpoint_ready_.emplace_back( + std::make_unique>()); + } return absl::OkStatus(); }, - WaitForDataEndpointSetup(self)), + [self]() { + // TODO(ctiller): find a better way than this + std::vector connection_ids; + for (uint32_t i = 0; i < self->connection_ids_.size(); i++) { + connection_ids.push_back(i); + } + return AllOkIter( + connection_ids.begin(), connection_ids.end(), + [self](uint32_t connection_id) { + return WaitForDataEndpointSetup(self, connection_id); + }); + }), [status = frame_header.status()]() { return status; }); }); } @@ -318,7 +343,7 @@ void ChaoticGoodConnector::OnHandshakeDone( if (status.ok()) { self->result_->transport = new ChaoticGoodClientTransport( std::move(self->control_endpoint_), - std::move(self->data_endpoint_), self->args_.channel_args, + std::move(self->data_endpoints_), self->args_.channel_args, self->event_engine_); self->result_->channel_args = self->args_.channel_args; ExecCtx::Run(DEBUG_LOCATION, std::exchange(self->notify_, nullptr), diff --git a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h index 1724bb5b2f0..1669f203240 100644 --- a/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h +++ b/src/core/ext/transport/chaotic_good/client/chaotic_good_connector.h @@ -65,15 +65,15 @@ class ChaoticGoodConnector : public SubchannelConnector { private: static auto DataEndpointReadSettingsFrame( - RefCountedPtr self); + RefCountedPtr self, uint32_t data_connection_index); static auto DataEndpointWriteSettingsFrame( - RefCountedPtr self); + RefCountedPtr self, uint32_t data_connection_index); static auto ControlEndpointReadSettingsFrame( RefCountedPtr self); static auto ControlEndpointWriteSettingsFrame( RefCountedPtr self); - static auto WaitForDataEndpointSetup( - RefCountedPtr self); + static auto WaitForDataEndpointSetup(RefCountedPtr self, + uint32_t data_connection_index); void OnHandshakeDone(absl::StatusOr result); RefCountedPtr arena_ = SimpleArenaAllocator()->MakeArena(); @@ -86,13 +86,13 @@ class ChaoticGoodConnector : public SubchannelConnector { resolved_addr_; PromiseEndpoint control_endpoint_; - PromiseEndpoint data_endpoint_; + std::vector data_endpoints_; + std::vector connection_ids_; ActivityPtr connect_activity_ ABSL_GUARDED_BY(mu_); const std::shared_ptr event_engine_; RefCountedPtr handshake_mgr_; - InterActivityLatch data_endpoint_ready_; - std::string connection_id_; + std::vector>> data_endpoint_ready_; }; } // namespace chaotic_good } // namespace grpc_core diff --git a/src/core/ext/transport/chaotic_good/client_transport.cc b/src/core/ext/transport/chaotic_good/client_transport.cc index 2002a566b42..fd33c44bad6 100644 --- a/src/core/ext/transport/chaotic_good/client_transport.cc +++ b/src/core/ext/transport/chaotic_good/client_transport.cc @@ -62,25 +62,6 @@ void ChaoticGoodClientTransport::Orphan() { Unref(); } -auto ChaoticGoodClientTransport::TransportWriteLoop( - RefCountedPtr transport) { - return Loop([this, transport = std::move(transport)] { - return TrySeq( - // Get next outgoing frame. - outgoing_frames_.Next(), - // Serialize and write it out. - [transport = transport.get()](ClientFrame client_frame) { - return transport->WriteFrame(GetFrameInterface(client_frame)); - }, - []() -> LoopCtl { - // The write failures will be caught in TrySeq and exit loop. - // Therefore, only need to return Continue() in the last lambda - // function. - return Continue(); - }); - }); -} - absl::optional ChaoticGoodClientTransport::LookupStream( uint32_t stream_id) { MutexLock lock(&mu_); @@ -119,31 +100,39 @@ auto ChaoticGoodClientTransport::PushFrameIntoCall( } template -auto ChaoticGoodClientTransport::DispatchFrame(ChaoticGoodTransport* transport, - const FrameHeader& header, - SliceBuffer payload) { +auto ChaoticGoodClientTransport::DispatchFrame( + RefCountedPtr transport, + IncomingFrame incoming_frame) { + absl::optional call_handler = + LookupStream(incoming_frame.header().stream_id); return GRPC_LATENT_SEE_PROMISE( "ChaoticGoodClientTransport::DispatchFrame", - TrySeq( - [transport, header, payload = std::move(payload)]() mutable { - return transport->DeserializeFrame(header, std::move(payload)); - }, - [this](T frame) { - absl::optional call_handler = - LookupStream(frame.stream_id); - return If( - call_handler.has_value(), - [this, &call_handler, &frame]() { - return call_handler->SpawnWaitable( - "push-frame", [this, call_handler = *call_handler, - frame = std::move(frame)]() mutable { + If( + call_handler.has_value(), + [this, &call_handler, &incoming_frame, &transport]() { + // TODO(ctiller): instead of SpawnWaitable here we probably want a + // small queue to push into, so that the call can proceed + // asynchronously to other calls regardless of frame ordering. + return call_handler->SpawnWaitable( + "push-frame", [this, call_handler = *call_handler, + incoming_frame = std::move(incoming_frame), + transport = std::move(transport)]() mutable { + return TrySeq( + incoming_frame.Payload(), + [transport = std::move(transport), + header = incoming_frame.header()](SliceBuffer payload) { + return transport->DeserializeFrame( + header, std::move(payload)); + }, + [call_handler, this](T frame) mutable { return Map(call_handler.CancelIfFails(PushFrameIntoCall( std::move(frame), call_handler)), [](StatusFlag) { return absl::OkStatus(); }); - }); - }, - []() { return absl::OkStatus(); }); - })); + }, + ImmediateOkStatus()); + }); + }, + []() { return absl::OkStatus(); })); } auto ChaoticGoodClientTransport::TransportReadLoop( @@ -151,27 +140,24 @@ auto ChaoticGoodClientTransport::TransportReadLoop( return Loop([this, transport = std::move(transport)] { return TrySeq( transport->ReadFrameBytes(), - [this, transport = transport.get()]( - std::tuple frame_bytes) { - const auto& header = std::get<0>(frame_bytes); - SliceBuffer& payload = std::get<1>(frame_bytes); + [this, transport](IncomingFrame incoming_frame) { return Switch( - header.type, + incoming_frame.header().type, Case([&, this]() { return DispatchFrame( - transport, header, std::move(payload)); + transport, std::move(incoming_frame)); }), Case([&, this]() { return DispatchFrame( - transport, header, std::move(payload)); + transport, std::move(incoming_frame)); }), Case([&, this]() { - return DispatchFrame(transport, header, - std::move(payload)); + return DispatchFrame(transport, + std::move(incoming_frame)); }), Default([&]() { LOG_EVERY_N_SEC(INFO, 10) - << "Bad frame type: " << header.ToString(); + << "Bad frame type: " << incoming_frame.header().ToString(); return absl::OkStatus(); })); }, @@ -191,36 +177,42 @@ auto ChaoticGoodClientTransport::OnTransportActivityDone( } ChaoticGoodClientTransport::ChaoticGoodClientTransport( - PromiseEndpoint control_endpoint, PromiseEndpoint data_endpoint, - const ChannelArgs& args, + PromiseEndpoint control_endpoint, + std::vector data_endpoints, const ChannelArgs& args, std::shared_ptr event_engine) : allocator_(args.GetObject() ->memory_quota() ->CreateMemoryAllocator("chaotic-good")), outgoing_frames_(4) { + CHECK(event_engine != nullptr); // Set up TCP tracer if enabled. if (args.GetBool(GRPC_ARG_TCP_TRACING_ENABLED).value_or(false)) { - auto* epte = grpc_event_engine::experimental::QueryExtension< - grpc_event_engine::experimental::TcpTraceExtension>( - data_endpoint.GetEventEngineEndpoint().get()); - if (epte != nullptr) { - epte->InitializeAndReturnTcpTracer(); + for (auto& ep : data_endpoints) { + auto* epte = grpc_event_engine::experimental::QueryExtension< + grpc_event_engine::experimental::TcpTraceExtension>( + ep.GetEventEngineEndpoint().get()); + if (epte != nullptr) { + epte->InitializeAndReturnTcpTracer(); + } } } + CHECK(event_engine != nullptr); ChaoticGoodTransport::Options options; options.inlined_payload_size_threshold = args.GetInt("grpc.chaotic_good.inlined_payload_size_threshold") .value_or(options.inlined_payload_size_threshold); auto transport = MakeRefCounted( - std::move(control_endpoint), std::move(data_endpoint), options); + std::move(control_endpoint), std::move(data_endpoints), event_engine, + options); auto party_arena = SimpleArenaAllocator(0)->MakeArena(); party_arena->SetContext( event_engine.get()); party_ = Party::Make(std::move(party_arena)); - party_->Spawn("client-chaotic-writer", - GRPC_LATENT_SEE_PROMISE("ClientTransportWriteLoop", - TransportWriteLoop(transport)), - OnTransportActivityDone("write_loop")); + party_->Spawn( + "client-chaotic-writer", + GRPC_LATENT_SEE_PROMISE("ClientTransportWriteLoop", + transport->TransportWriteLoop(outgoing_frames_)), + OnTransportActivityDone("write_loop")); party_->Spawn( "client-chaotic-reader", GRPC_LATENT_SEE_PROMISE("ClientTransportReadLoop", diff --git a/src/core/ext/transport/chaotic_good/client_transport.h b/src/core/ext/transport/chaotic_good/client_transport.h index 2eae3ed1780..3e27047083b 100644 --- a/src/core/ext/transport/chaotic_good/client_transport.h +++ b/src/core/ext/transport/chaotic_good/client_transport.h @@ -64,7 +64,8 @@ namespace chaotic_good { class ChaoticGoodClientTransport final : public ClientTransport { public: ChaoticGoodClientTransport( - PromiseEndpoint control_endpoint, PromiseEndpoint data_endpoint, + PromiseEndpoint control_endpoint, + std::vector data_endpoints, const ChannelArgs& channel_args, std::shared_ptr event_engine); @@ -89,10 +90,9 @@ class ChaoticGoodClientTransport final : public ClientTransport { absl::optional LookupStream(uint32_t stream_id); auto CallOutboundLoop(uint32_t stream_id, CallHandler call_handler); auto OnTransportActivityDone(absl::string_view what); - auto TransportWriteLoop(RefCountedPtr transport); template - auto DispatchFrame(ChaoticGoodTransport* transport, const FrameHeader& header, - SliceBuffer payload); + auto DispatchFrame(RefCountedPtr transport, + IncomingFrame incoming_frame); auto TransportReadLoop(RefCountedPtr transport); // Push one frame into a call auto PushFrameIntoCall(ServerInitialMetadataFrame frame, diff --git a/src/core/ext/transport/chaotic_good/control_endpoint.cc b/src/core/ext/transport/chaotic_good/control_endpoint.cc new file mode 100644 index 00000000000..0a6baad0a55 --- /dev/null +++ b/src/core/ext/transport/chaotic_good/control_endpoint.cc @@ -0,0 +1,68 @@ +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "src/core/ext/transport/chaotic_good/control_endpoint.h" + +#include "src/core/lib/event_engine/event_engine_context.h" +#include "src/core/lib/event_engine/tcp_socket_utils.h" +#include "src/core/lib/promise/loop.h" +#include "src/core/lib/promise/try_seq.h" + +namespace grpc_core { +namespace chaotic_good { + +auto ControlEndpoint::Buffer::Pull() { + return [this]() -> Poll { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + MutexLock lock(&mu_); + if (queued_output_.Length() == 0) { + flush_waker_ = GetContext()->MakeNonOwningWaker(); + return Pending{}; + } + waker = std::move(write_waker_); + return std::move(queued_output_); + }; +} + +ControlEndpoint::ControlEndpoint( + PromiseEndpoint endpoint, + grpc_event_engine::experimental::EventEngine* event_engine) + : endpoint_(std::make_shared(std::move(endpoint))) { + CHECK(event_engine != nullptr); + write_party_->arena()->SetContext(event_engine); + write_party_->Spawn( + "flush-control", + GRPC_LATENT_SEE_PROMISE( + "FlushLoop", Loop([endpoint = endpoint_, buffer = buffer_]() { + return TrySeq( + // Pull one set of buffered writes + buffer->Pull(), + // And write them + [endpoint, buffer = buffer.get()](SliceBuffer flushing) { + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Flush " << flushing.Length() + << " bytes from " << buffer << " to " + << ResolvedAddressToString(endpoint->GetPeerAddress()) + .value_or("<>"); + return endpoint->Write(std::move(flushing)); + }, + // Then repeat + []() -> LoopCtl { return Continue{}; }); + })), + [](absl::Status) {}); +} + +} // namespace chaotic_good +} // namespace grpc_core diff --git a/src/core/ext/transport/chaotic_good/control_endpoint.h b/src/core/ext/transport/chaotic_good/control_endpoint.h new file mode 100644 index 00000000000..b139724b240 --- /dev/null +++ b/src/core/ext/transport/chaotic_good/control_endpoint.h @@ -0,0 +1,99 @@ +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_CONTROL_ENDPOINT_H +#define GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_CONTROL_ENDPOINT_H + +#include "absl/cleanup/cleanup.h" +#include "src/core/lib/promise/party.h" +#include "src/core/lib/transport/promise_endpoint.h" +#include "src/core/util/sync.h" + +namespace grpc_core { +namespace chaotic_good { + +// Wrapper around PromiseEndpoint. +// Buffers all of the small writes that get enqueued to this endpoint, and then +// uses a separate party to flush them to the wire. +// In doing so we get to batch up effectively all the writes from the transport +// (since party wakeups are sticky), and then flush all the writes in one go. +class ControlEndpoint { + private: + class Buffer : public RefCounted { + public: + // Queue some buffer to be written. + // We cap the queue size so that we don't infinitely buffer on one + // connection - if the cap is hit, this queue operation will not resolve + // until it empties. + // Returns a promise that resolves to Empty{} when the data has been queued. + auto Queue(SliceBuffer&& buffer) { + return [buffer = std::move(buffer), this]() mutable -> Poll { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + MutexLock lock(&mu_); + if (queued_output_.Length() != 0 && + queued_output_.Length() + buffer.Length() > MaxQueued()) { + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Delay control write" + << " write_length=" << buffer.Length() + << " already_buffered=" << queued_output_.Length() + << " queue=" << this; + write_waker_ = GetContext()->MakeNonOwningWaker(); + return Pending{}; + } + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Queue control write " << buffer.Length() + << " bytes on " << this; + waker = std::move(flush_waker_); + queued_output_.Append(buffer); + return Empty{}; + }; + } + + auto Pull(); + + private: + size_t MaxQueued() const { return 1024 * 1024; } + + Mutex mu_; + Waker write_waker_ ABSL_GUARDED_BY(mu_); + Waker flush_waker_ ABSL_GUARDED_BY(mu_); + SliceBuffer queued_output_ ABSL_GUARDED_BY(mu_); + }; + + public: + ControlEndpoint(PromiseEndpoint endpoint, + grpc_event_engine::experimental::EventEngine* event_engine); + + // Write some data to the control endpoint; returns a promise that resolves + // to Empty{} -- it's not possible to see errors from this api. + auto Write(SliceBuffer&& bytes) { return buffer_->Queue(std::move(bytes)); } + + // Read operations are simply passthroughs to the underlying promise endpoint. + auto ReadSlice(size_t length) { return endpoint_->ReadSlice(length); } + auto Read(size_t length) { return endpoint_->Read(length); } + auto GetPeerAddress() const { return endpoint_->GetPeerAddress(); } + auto GetLocalAddress() const { return endpoint_->GetLocalAddress(); } + + private: + std::shared_ptr endpoint_; + RefCountedPtr write_party_ = + Party::Make(SimpleArenaAllocator(0)->MakeArena()); + RefCountedPtr buffer_ = MakeRefCounted(); +}; + +} // namespace chaotic_good +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_CONTROL_ENDPOINT_H diff --git a/src/core/ext/transport/chaotic_good/data_endpoints.cc b/src/core/ext/transport/chaotic_good/data_endpoints.cc new file mode 100644 index 00000000000..c69ca256772 --- /dev/null +++ b/src/core/ext/transport/chaotic_good/data_endpoints.cc @@ -0,0 +1,236 @@ +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include "src/core/ext/transport/chaotic_good/data_endpoints.h" + +#include + +#include "absl/cleanup/cleanup.h" +#include "absl/strings/escaping.h" +#include "src/core/lib/event_engine/event_engine_context.h" +#include "src/core/lib/promise/loop.h" +#include "src/core/lib/promise/seq.h" +#include "src/core/lib/promise/try_seq.h" + +namespace grpc_core { +namespace chaotic_good { + +namespace data_endpoints_detail { + +/////////////////////////////////////////////////////////////////////////////// +// OutputBuffer + +bool OutputBuffer::Accept(SliceBuffer& buffer) { + if (pending_.Length() != 0 && + pending_.Length() + buffer.Length() > pending_max_) { + return false; + } + pending_.Append(buffer); + return true; +} + +/////////////////////////////////////////////////////////////////////////////// +// OutputBuffers + +OutputBuffers::OutputBuffers(uint32_t num_connections) + : buffers_(num_connections) {} + +Poll OutputBuffers::PollWrite(SliceBuffer& output_buffer) { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + const auto length = output_buffer.Length(); + MutexLock lock(&mu_); + for (size_t i = 0; i < buffers_.size(); ++i) { + if (buffers_[i].Accept(output_buffer)) { + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Queue " << length << " data onto endpoint " << i + << " queue " << this; + waker = buffers_[i].TakeWaker(); + return i; + } + } + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: No data endpoint ready for " << length + << " bytes on queue " << this; + write_waker_ = GetContext()->MakeNonOwningWaker(); + return Pending{}; +} + +Poll OutputBuffers::PollNext(uint32_t connection_id) { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + MutexLock lock(&mu_); + auto& buffer = buffers_[connection_id]; + if (buffer.HavePending()) { + waker = std::move(write_waker_); + return buffer.TakePending(); + } + buffer.SetWaker(); + return Pending{}; +} + +/////////////////////////////////////////////////////////////////////////////// +// InputQueues + +InputQueues::InputQueues(uint32_t num_connections) + : read_requests_(num_connections), read_request_waker_(num_connections) {} + +absl::StatusOr InputQueues::CreateTicket(uint32_t connection_id, + size_t length) { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + MutexLock lock(&mu_); + if (connection_id >= read_requests_.size()) { + return absl::UnavailableError( + absl::StrCat("Invalid connection id: ", connection_id)); + } + uint64_t ticket = next_ticket_id_; + ++next_ticket_id_; + auto r = ReadRequest{length, ticket}; + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: New read ticket on #" << connection_id << " " << r; + read_requests_[connection_id].push_back(r); + outstanding_reads_.emplace(ticket, Waker{}); + waker = std::move(read_request_waker_[connection_id]); + return ticket; +} + +Poll> InputQueues::PollRead(uint64_t ticket) { + MutexLock lock(&mu_); + auto it = outstanding_reads_.find(ticket); + CHECK(it != outstanding_reads_.end()) << " ticket=" << ticket; + if (auto* waker = absl::get_if(&it->second)) { + *waker = GetContext()->MakeNonOwningWaker(); + return Pending{}; + } + auto result = std::move(absl::get>(it->second)); + outstanding_reads_.erase(it); + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Poll for ticket #" << ticket + << " completes: " << result.status(); + return result; +} + +Poll> InputQueues::PollNext( + uint32_t connection_id) { + MutexLock lock(&mu_); + auto& q = read_requests_[connection_id]; + if (q.empty()) { + read_request_waker_[connection_id] = + GetContext()->MakeNonOwningWaker(); + return Pending{}; + } + auto r = std::move(q); + q.clear(); + return r; +} + +void InputQueues::CompleteRead(uint64_t ticket, + absl::StatusOr buffer) { + Waker waker; + auto cleanup = absl::MakeCleanup([&waker]() { waker.Wakeup(); }); + MutexLock lock(&mu_); + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Complete ticket #" << ticket << ": " << buffer.status(); + auto it = outstanding_reads_.find(ticket); + if (it == outstanding_reads_.end()) return; // cancelled + waker = std::move(absl::get(it->second)); + it->second.emplace>(std::move(buffer)); +} + +void InputQueues::CancelTicket(uint64_t ticket) { + MutexLock lock(&mu_); + outstanding_reads_.erase(ticket); +} + +} // namespace data_endpoints_detail + +/////////////////////////////////////////////////////////////////////////////// +// DataEndpoints + +DataEndpoints::DataEndpoints( + std::vector endpoints_vec, + grpc_event_engine::experimental::EventEngine* event_engine) + : output_buffers_(MakeRefCounted( + endpoints_vec.size())), + input_queues_(MakeRefCounted( + endpoints_vec.size())) { + CHECK(event_engine != nullptr); + for (auto& endpoint : endpoints_vec) { + // Enable RxMemoryAlignment and RPC receive coalescing after the transport + // setup is complete. At this point all the settings frames should have + // been read. + endpoint.EnforceRxMemoryAlignmentAndCoalescing(); + } + auto endpoints = MakeRefCounted(); + endpoints->endpoints = std::move(endpoints_vec); + parties_.reserve(2 * endpoints->endpoints.size()); + auto arena = SimpleArenaAllocator(0)->MakeArena(); + arena->SetContext(event_engine); + for (size_t i = 0; i < endpoints->endpoints.size(); ++i) { + auto write_party = Party::Make(arena); + auto read_party = Party::Make(arena); + write_party->Spawn( + "flush-data", + [i, endpoints, output_buffers = output_buffers_]() { + return Loop([i, endpoints, output_buffers]() { + return TrySeq( + output_buffers->Next(i), + [endpoints = endpoints.get(), i](SliceBuffer buffer) { + GRPC_TRACE_LOG(chaotic_good, INFO) + << "CHAOTIC_GOOD: Write " << buffer.Length() + << "b to data endpoint #" << i; + return endpoints->endpoints[i].Write(std::move(buffer)); + }, + []() -> LoopCtl { return Continue{}; }); + }); + }, + [](absl::Status) {}); + read_party->Spawn( + "read-data", + [i, endpoints, input_queues = input_queues_]() { + return Loop([i, endpoints, input_queues]() { + return TrySeq( + input_queues->Next(i), + [endpoints, i, input_queues]( + std::vector + requests) { + return TrySeqContainer( + std::move(requests), Empty{}, + [endpoints, i, input_queues]( + data_endpoints_detail::InputQueues::ReadRequest + read_request, + Empty) { + return Seq( + endpoints->endpoints[i].Read(read_request.length), + [ticket = read_request.ticket, + + input_queues](absl::StatusOr buffer) { + input_queues->CompleteRead(ticket, + std::move(buffer)); + return Empty{}; + }); + }); + }, + []() -> LoopCtl { return Continue{}; }); + }); + }, + [](absl::Status) {}); + parties_.emplace_back(std::move(write_party)); + parties_.emplace_back(std::move(read_party)); + } +} + +} // namespace chaotic_good +} // namespace grpc_core diff --git a/src/core/ext/transport/chaotic_good/data_endpoints.h b/src/core/ext/transport/chaotic_good/data_endpoints.h new file mode 100644 index 00000000000..9837c00c332 --- /dev/null +++ b/src/core/ext/transport/chaotic_good/data_endpoints.h @@ -0,0 +1,199 @@ +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_DATA_ENDPOINTS_H +#define GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_DATA_ENDPOINTS_H + +#include + +#include "src/core/lib/promise/party.h" +#include "src/core/lib/promise/promise.h" +#include "src/core/lib/slice/slice_buffer.h" +#include "src/core/lib/transport/promise_endpoint.h" + +namespace grpc_core { +namespace chaotic_good { + +namespace data_endpoints_detail { +struct Endpoints : public RefCounted { + std::vector endpoints; +}; + +// Buffered writes for one data endpoint +class OutputBuffer { + public: + bool Accept(SliceBuffer& buffer); + Waker TakeWaker() { return std::move(flush_waker_); } + void SetWaker() { + flush_waker_ = GetContext()->MakeNonOwningWaker(); + } + bool HavePending() const { return pending_.Length() > 0; } + SliceBuffer TakePending() { return std::move(pending_); } + + private: + Waker flush_waker_; + size_t pending_max_ = 1024 * 1024; + SliceBuffer pending_; +}; + +// The set of output buffers for all connected data endpoints +class OutputBuffers : public RefCounted { + public: + explicit OutputBuffers(uint32_t num_connections); + + auto Write(SliceBuffer output_buffer) { + return [output_buffer = std::move(output_buffer), this]() mutable { + return PollWrite(output_buffer); + }; + } + + auto Next(uint32_t connection_id) { + return [this, connection_id]() { return PollNext(connection_id); }; + } + + private: + Poll PollWrite(SliceBuffer& output_buffer); + Poll PollNext(uint32_t connection_id); + + Mutex mu_; + std::vector buffers_ ABSL_GUARDED_BY(mu_); + Waker write_waker_ ABSL_GUARDED_BY(mu_); +}; + +class InputQueues : public RefCounted { + public: + // One outstanding read. + // ReadTickets get filed by read requests, and all tickets are fullfilled + // by an endpoint. + // A call may Await a ticket to get the bytes back later (or it may skip that + // step - in which case the bytes are thrown away after reading). + // This decoupling is necessary to ensure that cancelled reads by calls do not + // cause data corruption for other calls. + class ReadTicket { + public: + ReadTicket(absl::StatusOr ticket, + RefCountedPtr input_queues) + : ticket_(std::move(ticket)), input_queues_(std::move(input_queues)) {} + + ReadTicket(const ReadTicket&) = delete; + ReadTicket& operator=(const ReadTicket&) = delete; + ReadTicket(ReadTicket&& other) noexcept + : ticket_(std::move(other.ticket_)), + input_queues_(std::move(other.input_queues_)) {} + ReadTicket& operator=(ReadTicket&& other) noexcept { + ticket_ = std::move(other.ticket_); + input_queues_ = std::move(other.input_queues_); + return *this; + } + + ~ReadTicket() { + if (input_queues_ != nullptr && ticket_.ok()) { + input_queues_->CancelTicket(*ticket_); + } + } + + auto Await() { + return If( + ticket_.ok(), + [&]() { + return + [ticket = *ticket_, input_queues = std::move(input_queues_)]() { + return input_queues->PollRead(ticket); + }; + }, + [&]() { + return Immediate(absl::StatusOr(ticket_.status())); + }); + } + + private: + absl::StatusOr ticket_; + RefCountedPtr input_queues_; + }; + + struct ReadRequest { + size_t length; + uint64_t ticket; + + template + friend void AbslStringify(Sink& sink, const ReadRequest& req) { + sink.Append(absl::StrCat("read#", req.ticket, ":", req.length, "b")); + } + }; + + explicit InputQueues(uint32_t num_connections); + + ReadTicket Read(uint32_t connection_id, size_t length) { + return ReadTicket(CreateTicket(connection_id, length), Ref()); + } + + auto Next(uint32_t connection_id) { + return [this, connection_id]() { return PollNext(connection_id); }; + } + + void CompleteRead(uint64_t ticket, absl::StatusOr buffer); + + void CancelTicket(uint64_t ticket); + + private: + using ReadState = absl::variant, Waker>; + + absl::StatusOr CreateTicket(uint32_t connection_id, size_t length); + Poll> PollRead(uint64_t ticket); + Poll> PollNext(uint32_t connection_id); + + Mutex mu_; + uint64_t next_ticket_id_ ABSL_GUARDED_BY(mu_) = 0; + std::vector> read_requests_ ABSL_GUARDED_BY(mu_); + std::vector read_request_waker_; + absl::flat_hash_map outstanding_reads_ + ABSL_GUARDED_BY(mu_); +}; +} // namespace data_endpoints_detail + +// Collection of data connections. +class DataEndpoints { + public: + using ReadTicket = data_endpoints_detail::InputQueues::ReadTicket; + + explicit DataEndpoints( + std::vector endpoints, + grpc_event_engine::experimental::EventEngine* event_engine); + + // Try to queue output_buffer against a data endpoint. + // Returns a promise that resolves to the data endpoint connection id + // selected. + // Connection ids returned by this class are 0 based (which is different + // to how chaotic good communicates them on the wire - those are 1 based + // to allow for the control channel identification) + auto Write(SliceBuffer output_buffer) { + return output_buffers_->Write(std::move(output_buffer)); + } + + ReadTicket Read(uint32_t connection_id, uint32_t length) { + return input_queues_->Read(connection_id, length); + } + + bool empty() const { return parties_.empty(); } + + private: + RefCountedPtr output_buffers_; + RefCountedPtr input_queues_; + std::vector> parties_; +}; + +} // namespace chaotic_good +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHAOTIC_GOOD_DATA_ENDPOINTS_H 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 fbd10875e38..8c023557415 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 @@ -50,6 +50,7 @@ #include "src/core/lib/promise/context.h" #include "src/core/lib/promise/event_engine_wakeup_scheduler.h" #include "src/core/lib/promise/if.h" +#include "src/core/lib/promise/join.h" #include "src/core/lib/promise/latch.h" #include "src/core/lib/promise/race.h" #include "src/core/lib/promise/sleep.h" @@ -175,17 +176,21 @@ void ChaoticGoodServerListener::ActiveConnection::Orphan() { Unref(); } -void ChaoticGoodServerListener::ActiveConnection::NewConnectionID() { - bool has_new_id = false; +void ChaoticGoodServerListener::ActiveConnection::NewConnectionIDs( + size_t count) { MutexLock lock(&listener_->mu_); - while (!has_new_id) { - connection_id_ = listener_->connection_id_generator_(); - if (!listener_->connectivity_map_.contains(connection_id_)) { - has_new_id = true; + for (size_t i = 0; i < count; i++) { + std::string connection_id; + while (true) { + connection_id = listener_->connection_id_generator_(); + if (!listener_->connectivity_map_.contains(connection_id)) { + break; + } } + listener_->connectivity_map_.emplace( + connection_id, std::make_shared>()); + connection_ids_.emplace_back(std::move(connection_id)); } - listener_->connectivity_map_.emplace( - connection_id_, std::make_shared>()); } void ChaoticGoodServerListener::ActiveConnection::Done() { @@ -246,13 +251,20 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: return absl::UnavailableError( "no connection id in data endpoint settings frame"); } + if (frame.settings.connection_id().size() != 1) { + return absl::UnavailableError(absl::StrCat( + "Got ", frame.settings.connection_id().size(), + " connection ids in data endpoint " + "settings frame (expect one)")); + } if (frame.settings.alignment() == 0) { return absl::UnavailableError( "no alignment in data endpoint settings frame"); } // Get connection-id and data-alignment for data endpoint. - self->connection_->connection_id_ = - frame.settings.connection_id(); + self->connection_->connection_ids_.clear(); + self->connection_->connection_ids_.push_back( + frame.settings.connection_id()[0]); self->connection_->data_alignment_ = frame.settings.alignment(); } @@ -278,12 +290,18 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: }, [self]() { MutexLock lock(&self->connection_->listener_->mu_); - auto latch = self->connection_->listener_->connectivity_map_ - .find(self->connection_->connection_id_) - ->second; - return latch->Wait(); + return JoinIter( + self->connection_->connection_ids_.begin(), + self->connection_->connection_ids_.end(), + [self](const std::string& connection_id) { + self->connection_->listener_->mu_.AssertHeld(); + auto latch = self->connection_->listener_->connectivity_map_ + .find(connection_id) + ->second; + return latch->Wait(); + }); }, - [self](PromiseEndpoint ret) -> absl::Status { + [self](std::vector ret) -> absl::Status { MutexLock lock(&self->connection_->listener_->mu_); GRPC_TRACE_LOG(chaotic_good, INFO) << self->connection_.get() @@ -305,19 +323,27 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: Sleep(Timestamp::Now() + kConnectionDeadline), [self]() mutable -> absl::Status { MutexLock lock(&self->connection_->listener_->mu_); - // Delete connection id from map when timeout; - self->connection_->listener_->connectivity_map_.erase( - self->connection_->connection_id_); + // Delete connection ids from map when timeout; + for (const std::string& connection_id : + self->connection_->connection_ids_) { + self->connection_->listener_->connectivity_map_.erase( + connection_id); + } return absl::DeadlineExceededError("Deadline exceeded."); })); } auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: ControlEndpointWriteSettingsFrame(RefCountedPtr self) { - self->connection_->NewConnectionID(); + self->connection_->NewConnectionIDs( + self->connection_->listener_->args() + .GetInt(GRPC_ARG_CHAOTIC_GOOD_DATA_CONNECTIONS) + .value_or(1)); SettingsFrame frame; frame.settings.set_data_channel(false); - frame.settings.set_connection_id(self->connection_->connection_id_); + for (const auto& connection_id : self->connection_->connection_ids_) { + frame.settings.add_connection_id(connection_id); + } SliceBuffer write_buffer; frame.MakeHeader().Serialize( write_buffer.AddTiny(FrameHeader::kFrameHeaderSize)); @@ -332,7 +358,6 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: // Send data endpoint setting frame SettingsFrame frame; frame.settings.set_data_channel(true); - frame.settings.set_connection_id(self->connection_->connection_id_); frame.settings.set_alignment(self->connection_->data_alignment_); SliceBuffer write_buffer; frame.MakeHeader().Serialize( @@ -344,12 +369,13 @@ auto ChaoticGoodServerListener::ActiveConnection::HandshakingState:: [self]() mutable { MutexLock lock(&self->connection_->listener_->mu_); // Set endpoint to latch + CHECK_EQ(self->connection_->connection_ids_.size(), 1ull); auto it = self->connection_->listener_->connectivity_map_.find( - self->connection_->connection_id_); + self->connection_->connection_ids_[0]); if (it == self->connection_->listener_->connectivity_map_.end()) { - return absl::InternalError( - absl::StrCat("Connection not in map: ", - absl::CEscape(self->connection_->connection_id_))); + return absl::InternalError(absl::StrCat( + "Connection not in map: ", + absl::CEscape(self->connection_->connection_ids_[0]))); } it->second->Set(std::move(self->connection_->endpoint_)); return absl::OkStatus(); diff --git a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h index c96ae19129d..a72afd93f13 100644 --- a/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h +++ b/src/core/ext/transport/chaotic_good/server/chaotic_good_server.h @@ -44,6 +44,11 @@ #include "src/core/util/sync.h" #include "src/core/util/time.h" +// Channel arg: integer number of data connections to specify +// Defaults to 1 if not set +#define GRPC_ARG_CHAOTIC_GOOD_DATA_CONNECTIONS \ + "grpc.chaotic_good.data_connections" + namespace grpc_core { namespace chaotic_good { class ChaoticGoodServerListener final : public Server::ListenerInterface { @@ -109,7 +114,7 @@ class ChaoticGoodServerListener final : public Server::ListenerInterface { private: void Done(); - void NewConnectionID(); + void NewConnectionIDs(size_t count); RefCountedPtr arena_ = SimpleArenaAllocator()->MakeArena(); const RefCountedPtr listener_; RefCountedPtr handshaking_state_; @@ -117,9 +122,9 @@ class ChaoticGoodServerListener final : public Server::ListenerInterface { ActivityPtr receive_settings_activity_ ABSL_GUARDED_BY(mu_); bool orphaned_ ABSL_GUARDED_BY(mu_) = false; PromiseEndpoint endpoint_; - absl::BitGen bitgen_; - std::string connection_id_; + std::vector connection_ids_; int32_t data_alignment_; + absl::BitGen bitgen_; }; void Start(Server*, const std::vector*) override { diff --git a/src/core/ext/transport/chaotic_good/server_transport.cc b/src/core/ext/transport/chaotic_good/server_transport.cc index fdf2a7a6f2f..3a9a75fd6ed 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.cc +++ b/src/core/ext/transport/chaotic_good/server_transport.cc @@ -51,25 +51,6 @@ namespace grpc_core { namespace chaotic_good { -auto ChaoticGoodServerTransport::TransportWriteLoop( - RefCountedPtr transport) { - return Loop([this, transport = std::move(transport)] { - return TrySeq( - // Get next outgoing frame. - outgoing_frames_.Next(), - // Serialize and write it out. - [transport = transport.get()](ServerFrame client_frame) { - return transport->WriteFrame(GetFrameInterface(client_frame)); - }, - []() -> LoopCtl { - // The write failures will be caught in TrySeq and exit loop. - // Therefore, only need to return Continue() in the last lambda - // function. - return Continue(); - }); - }); -} - auto ChaoticGoodServerTransport::PushFrameIntoCall(CallInitiator call_initiator, MessageFrame frame) { GRPC_TRACE_LOG(chaotic_good, INFO) @@ -86,29 +67,35 @@ auto ChaoticGoodServerTransport::PushFrameIntoCall(CallInitiator call_initiator, } template -auto ChaoticGoodServerTransport::DispatchFrame(ChaoticGoodTransport& transport, - const FrameHeader& header, - SliceBuffer payload) { - return TrySeq( - [&transport, header, payload = std::move(payload)]() mutable { - return transport.DeserializeFrame(header, std::move(payload)); - }, - [this](T frame) { - absl::optional call_initiator = - LookupStream(frame.stream_id); - return If( - call_initiator.has_value(), - [this, &call_initiator, &frame]() { - return call_initiator->SpawnWaitable( - "push-frame", [this, call_initiator = *call_initiator, - frame = std::move(frame)]() mutable { +auto ChaoticGoodServerTransport::DispatchFrame( + RefCountedPtr transport, IncomingFrame frame) { + absl::optional call_initiator = + LookupStream(frame.header().stream_id); + return If( + call_initiator.has_value(), + [this, &call_initiator, &frame, &transport]() { + // TODO(ctiller): instead of SpawnWaitable here we probably want a + // small queue to push into, so that the call can proceed + // asynchronously to other calls regardless of frame ordering. + return call_initiator->SpawnWaitable( + "push-frame", + [this, call_initiator = *call_initiator, frame = std::move(frame), + transport = std::move(transport)]() mutable { + return TrySeq( + frame.Payload(), + [transport = std::move(transport), + header = frame.header()](SliceBuffer payload) { + return transport->DeserializeFrame(header, + std::move(payload)); + }, + [call_initiator, this](T frame) mutable { return Map(call_initiator.CancelIfFails(PushFrameIntoCall( call_initiator, std::move(frame))), [](StatusFlag) { return absl::OkStatus(); }); }); - }, - []() { return absl::OkStatus(); }); - }); + }); + }, + []() { return absl::OkStatus(); }); } namespace { @@ -240,35 +227,39 @@ absl::Status ChaoticGoodServerTransport::NewStream( return absl::OkStatus(); } -auto ChaoticGoodServerTransport::ReadOneFrame(ChaoticGoodTransport& transport) { +auto ChaoticGoodServerTransport::ReadOneFrame( + RefCountedPtr transport) { return GRPC_LATENT_SEE_PROMISE( "ReadOneFrame", TrySeq( - transport.ReadFrameBytes(), - [this, transport = &transport]( - std::tuple frame_bytes) { - const auto& header = std::get<0>(frame_bytes); - SliceBuffer& payload = std::get<1>(frame_bytes); - CHECK_EQ(header.payload_length, payload.Length()); + transport->ReadFrameBytes(), + [this, transport](IncomingFrame incoming_frame) mutable { + // CHECK_EQ(header.payload_length, payload.Length()); return Switch( - header.type, + incoming_frame.header().type, Case([&, this]() { - return Immediate( - NewStream(*transport, header, std::move(payload))); + return TrySeq(incoming_frame.Payload(), + [this, transport = std::move(transport), + header = incoming_frame.header()]( + SliceBuffer payload) mutable { + return NewStream(*transport, header, + std::move(payload)); + }); }), - Case([&, this]() { - return DispatchFrame(*transport, header, - std::move(payload)); - }), - Case([&, this]() { - return DispatchFrame(*transport, header, - std::move(payload)); + Case([&, this]() mutable { + return DispatchFrame(std::move(transport), + std::move(incoming_frame)); }), + Case( + [&, this]() mutable { + return DispatchFrame( + std::move(transport), std::move(incoming_frame)); + }), Case([&, this]() { absl::optional call_initiator = - ExtractStream(header.stream_id); + ExtractStream(incoming_frame.header().stream_id); GRPC_TRACE_LOG(chaotic_good, INFO) - << "Cancel stream " << header.stream_id + << "Cancel stream " << incoming_frame.header().stream_id << (call_initiator.has_value() ? " (active)" : " (not found)"); return If( @@ -283,9 +274,8 @@ auto ChaoticGoodServerTransport::ReadOneFrame(ChaoticGoodTransport& transport) { []() -> absl::Status { return absl::OkStatus(); }); }), Default([&]() { - return absl::InternalError( - absl::StrCat("Unexpected frame type: ", - static_cast(header.type))); + return absl::InternalError(absl::StrCat( + "Unexpected frame type: ", incoming_frame.header().type)); })); }, []() -> LoopCtl { return Continue{}; })); @@ -294,8 +284,8 @@ auto ChaoticGoodServerTransport::ReadOneFrame(ChaoticGoodTransport& transport) { auto ChaoticGoodServerTransport::TransportReadLoop( RefCountedPtr transport) { return Seq(got_acceptor_.Wait(), - Loop([this, transport = std::move(transport)] { - return ReadOneFrame(*transport); + Loop([this, transport = std::move(transport)]() mutable { + return ReadOneFrame(transport); })); } @@ -312,7 +302,7 @@ auto ChaoticGoodServerTransport::OnTransportActivityDone( ChaoticGoodServerTransport::ChaoticGoodServerTransport( const ChannelArgs& args, PromiseEndpoint control_endpoint, - PromiseEndpoint data_endpoint, + std::vector data_endpoints, std::shared_ptr event_engine) : call_arena_allocator_(MakeRefCounted( args.GetObject() @@ -326,15 +316,17 @@ ChaoticGoodServerTransport::ChaoticGoodServerTransport( args.GetInt("grpc.chaotic_good.inlined_payload_size_threshold") .value_or(options.inlined_payload_size_threshold); auto transport = MakeRefCounted( - std::move(control_endpoint), std::move(data_endpoint), options); + std::move(control_endpoint), std::move(data_endpoints), event_engine, + options); auto party_arena = SimpleArenaAllocator(0)->MakeArena(); party_arena->SetContext( event_engine.get()); party_ = Party::Make(std::move(party_arena)); - party_->Spawn("server-chaotic-writer", - GRPC_LATENT_SEE_PROMISE("ServerTransportWriteLoop", - TransportWriteLoop(transport)), - OnTransportActivityDone("writer")); + party_->Spawn( + "server-chaotic-writer", + GRPC_LATENT_SEE_PROMISE("ServerTransportWriteLoop", + transport->TransportWriteLoop(outgoing_frames_)), + OnTransportActivityDone("writer")); party_->Spawn("server-chaotic-reader", GRPC_LATENT_SEE_PROMISE("ServerTransportReadLoop", TransportReadLoop(transport)), diff --git a/src/core/ext/transport/chaotic_good/server_transport.h b/src/core/ext/transport/chaotic_good/server_transport.h index e5b7f36e752..cd0579a2622 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.h +++ b/src/core/ext/transport/chaotic_good/server_transport.h @@ -77,7 +77,7 @@ class ChaoticGoodServerTransport final : public ServerTransport { public: ChaoticGoodServerTransport( const ChannelArgs& args, PromiseEndpoint control_endpoint, - PromiseEndpoint data_endpoint, + std::vector data_endpoints, std::shared_ptr event_engine); @@ -108,8 +108,7 @@ class ChaoticGoodServerTransport final : public ServerTransport { auto CallOutboundLoop(uint32_t stream_id, CallInitiator call_initiator); auto OnTransportActivityDone(absl::string_view activity); auto TransportReadLoop(RefCountedPtr transport); - auto ReadOneFrame(ChaoticGoodTransport& transport); - auto TransportWriteLoop(RefCountedPtr transport); + auto ReadOneFrame(RefCountedPtr transport); // Read different parts of the server frame from control/data endpoints // based on frame header. // Resolves to a StatusOr> @@ -125,8 +124,8 @@ class ChaoticGoodServerTransport final : public ServerTransport { const FrameHeader& header, SliceBuffer initial_metadata_payload); template - auto DispatchFrame(ChaoticGoodTransport& transport, const FrameHeader& header, - SliceBuffer payload); + auto DispatchFrame(RefCountedPtr transport, + IncomingFrame frame); auto PushFrameIntoCall(CallInitiator call_initiator, MessageFrame frame); auto PushFrameIntoCall(CallInitiator call_initiator, ClientEndOfStream frame); auto SendFrame(ServerFrame frame, MpscSender outgoing_frames, diff --git a/src/core/lib/promise/all_ok.h b/src/core/lib/promise/all_ok.h index 2ca128f3c8a..0ce363e3836 100644 --- a/src/core/lib/promise/all_ok.h +++ b/src/core/lib/promise/all_ok.h @@ -24,6 +24,7 @@ #include "absl/status/status.h" #include "absl/status/statusor.h" #include "src/core/lib/promise/detail/join_state.h" +#include "src/core/lib/promise/detail/promise_factory.h" #include "src/core/lib/promise/map.h" #include "src/core/lib/promise/poll.h" #include "src/core/lib/promise/status_flag.h" @@ -81,6 +82,42 @@ GPR_ATTRIBUTE_ALWAYS_INLINE_FUNCTION inline auto AllOk(Promises... promises) { return promise_detail::AllOk(std::move(promises)...); } +// Construct a promise for each element of the set, then run them all. +// If any fail, cancel the rest and return the failure. +// If all succeed, return Ok. +template +inline auto AllOkIter(Iter begin, Iter end, FactoryFn factory_fn) { + using Factory = + promise_detail::RepeatedPromiseFactory; + Factory factory(std::move(factory_fn)); + using Promise = typename Factory::Promise; + std::vector promises; + std::vector done; + for (auto it = begin; it != end; ++it) { + promises.emplace_back(factory.Make(*it)); + done.push_back(false); + } + return [promises = std::move(promises), + done = std::move(done)]() mutable -> Poll { + using Traits = promise_detail::AllOkTraits; + bool still_working = false; + for (size_t i = 0; i < promises.size(); ++i) { + if (done[i]) continue; + auto p = promises[i](); + if (auto* r = p.value_if_ready()) { + if (!Traits::IsOk(*r)) { + return Traits::template EarlyReturn(std::move(*r)); + } + done[i] = true; + } else { + still_working = true; + } + } + if (still_working) return Pending{}; + return Traits::FinalReturn(); + }; +} + } // namespace grpc_core #endif // GRPC_SRC_CORE_LIB_PROMISE_ALL_OK_H diff --git a/src/core/lib/promise/detail/basic_seq.h b/src/core/lib/promise/detail/basic_seq.h index d48dcd61505..ce36692efa7 100644 --- a/src/core/lib/promise/detail/basic_seq.h +++ b/src/core/lib/promise/detail/basic_seq.h @@ -17,35 +17,41 @@ #include +#include "src/core/lib/promise/detail/promise_factory.h" #include "src/core/lib/promise/poll.h" #include "src/core/util/construct_destruct.h" namespace grpc_core { namespace promise_detail { +template +auto BindFactoryFnArgs(FactoryFn fn) { + return [fn = std::move(fn)](auto x) mutable { + return fn(std::get<0>(x), std::move(std::get<1>(x))); + }; +} + // Models a sequence of unknown size // At each element, the accumulator A and the current value V is passed to some // function of type IterTraits::Factory as f(V, IterTraits::Argument); f is // expected to return a promise that resolves to IterTraits::Wrapped. -template +template