From 24d914d8d7f1cdabdd657e309e04c445f0889a0f Mon Sep 17 00:00:00 2001 From: Craig Tiller Date: Wed, 24 Jan 2024 17:17:30 +0000 Subject: [PATCH] progress --- .../chaotic_good/server_transport.cc | 25 +++++++++++++++++++ .../transport/chaotic_good/server_transport.h | 5 +++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/core/ext/transport/chaotic_good/server_transport.cc b/src/core/ext/transport/chaotic_good/server_transport.cc index 299b97c1e1715..8f1ec6889264b 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.cc +++ b/src/core/ext/transport/chaotic_good/server_transport.cc @@ -26,6 +26,7 @@ #include "absl/status/statusor.h" #include +#include #include #include @@ -369,6 +370,9 @@ void ChaoticGoodServerTransport::AbortWithError() { ReleasableMutexLock lock(&mu_); StreamMap stream_map = std::move(stream_map_); stream_map_.clear(); + state_tracker_.SetState(GRPC_CHANNEL_SHUTDOWN, + absl::UnavailableError("transport closed"), + "transport closed"); lock.Release(); for (const auto& pair : stream_map) { auto call_initiator = pair.second; @@ -411,5 +415,26 @@ absl::Status ChaoticGoodServerTransport::NewStream( return absl::OkStatus(); } +void ChaoticGoodServerTransport::PerformOp(grpc_transport_op* op) { + MutexLock lock(&mu_); + bool did_stuff = false; + if (op->start_connectivity_watch != nullptr) { + state_tracker_.AddWatcher(op->start_connectivity_watch_state, + std::move(op->start_connectivity_watch)); + did_stuff = true; + } + if (op->stop_connectivity_watch != nullptr) { + state_tracker_.RemoveWatcher(op->stop_connectivity_watch); + did_stuff = true; + } + if (op->set_accept_stream) { + Crash("set_accept_stream not supported on inproc transport"); + } + if (!did_stuff) { + Crash(absl::StrCat("unimplemented transport perform op: ", + grpc_transport_op_string(op))); + } +} + } // namespace chaotic_good } // namespace grpc_core diff --git a/src/core/ext/transport/chaotic_good/server_transport.h b/src/core/ext/transport/chaotic_good/server_transport.h index 0dde8c800e974..afadea10ea04d 100644 --- a/src/core/ext/transport/chaotic_good/server_transport.h +++ b/src/core/ext/transport/chaotic_good/server_transport.h @@ -42,6 +42,7 @@ #include #include +#include #include #include @@ -94,7 +95,7 @@ class ChaoticGoodServerTransport final : public Transport, absl::string_view GetTransportName() const override { return "chaotic_good"; } void SetPollset(grpc_stream*, grpc_pollset*) override {} void SetPollsetSet(grpc_stream*, grpc_pollset_set*) override {} - void PerformOp(grpc_transport_op*) override { Crash("unimplemented"); } + void PerformOp(grpc_transport_op*) override; grpc_endpoint* GetEndpoint() override { return nullptr; } void Orphan() override { delete this; } @@ -145,6 +146,8 @@ class ChaoticGoodServerTransport final : public Transport, std::shared_ptr event_engine_; ActivityPtr writer_; ActivityPtr reader_; + ConnectivityStateTracker state_tracker_ ABSL_GUARDED_BY(mu_){ + "chaotic_good_server", GRPC_CHANNEL_IDLE}; }; } // namespace chaotic_good