pw_rpc: Rename BaseServerWriter to Responder

The pw::rpc::internal::Responder class will be used to respond to all
types of RPCs, not just server streaming RPCs, so the name
"BaseServerWriter" is not a good fit.

Change-Id: I72d1475f26896c76f0b0dd968b0aca65d0c618a4
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/49200
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_rpc/base_server_writer.cc b/pw_rpc/base_server_writer.cc
index 64d73bc..d1a51b7 100644
--- a/pw_rpc/base_server_writer.cc
+++ b/pw_rpc/base_server_writer.cc
@@ -21,21 +21,20 @@
 
 namespace pw::rpc::internal {
 
-BaseServerWriter::BaseServerWriter(ServerCall& call)
-    : call_(call), state_(kOpen) {
-  call_.server().RegisterWriter(*this);
+Responder::Responder(ServerCall& call) : call_(call), state_(kOpen) {
+  call_.server().RegisterResponder(*this);
 }
 
-BaseServerWriter& BaseServerWriter::operator=(BaseServerWriter&& other) {
+Responder& Responder::operator=(Responder&& other) {
   Finish();
 
   state_ = other.state_;
 
   if (other.open()) {
-    other.call_.server().RemoveWriter(other);
+    other.call_.server().RemoveResponder(other);
     other.state_ = kClosed;
 
-    other.call_.server().RegisterWriter(*this);
+    other.call_.server().RegisterResponder(*this);
   }
 
   call_ = std::move(other.call_);
@@ -44,14 +43,14 @@
   return *this;
 }
 
-uint32_t BaseServerWriter::method_id() const { return call_.method().id(); }
+uint32_t Responder::method_id() const { return call_.method().id(); }
 
-Status BaseServerWriter::Finish(Status status) {
+Status Responder::Finish(Status status) {
   if (!open()) {
     return Status::FailedPrecondition();
   }
 
-  // If the ServerWriter implementer or user forgets to release an acquired
+  // If the Responder implementer or user forgets to release an acquired
   // buffer before finishing, release it here.
   if (!response_.empty()) {
     ReleasePayloadBuffer();
@@ -68,7 +67,7 @@
                                      status));
 }
 
-std::span<std::byte> BaseServerWriter::AcquirePayloadBuffer() {
+std::span<std::byte> Responder::AcquirePayloadBuffer() {
   PW_DCHECK(open());
 
   // Only allow having one active buffer at a time.
@@ -79,29 +78,27 @@
   return response_.payload(ResponsePacket());
 }
 
-Status BaseServerWriter::ReleasePayloadBuffer(
-    std::span<const std::byte> payload) {
+Status Responder::ReleasePayloadBuffer(std::span<const std::byte> payload) {
   PW_DCHECK(open());
   return call_.channel().Send(response_, ResponsePacket(payload));
 }
 
-Status BaseServerWriter::ReleasePayloadBuffer() {
+Status Responder::ReleasePayloadBuffer() {
   PW_DCHECK(open());
   call_.channel().Release(response_);
   return OkStatus();
 }
 
-void BaseServerWriter::Close() {
+void Responder::Close() {
   if (!open()) {
     return;
   }
 
-  call_.server().RemoveWriter(*this);
+  call_.server().RemoveResponder(*this);
   state_ = kClosed;
 }
 
-Packet BaseServerWriter::ResponsePacket(
-    std::span<const std::byte> payload) const {
+Packet Responder::ResponsePacket(std::span<const std::byte> payload) const {
   return Packet(PacketType::RESPONSE,
                 call_.channel().id(),
                 call_.service().id(),
diff --git a/pw_rpc/base_server_writer_test.cc b/pw_rpc/base_server_writer_test.cc
index f2d9d27..d9812ba 100644
--- a/pw_rpc/base_server_writer_test.cc
+++ b/pw_rpc/base_server_writer_test.cc
@@ -39,19 +39,19 @@
 
 using std::byte;
 
-TEST(BaseServerWriter, ConstructWithContext_StartsOpen) {
+TEST(Responder, ConstructWithContext_StartsOpen) {
   ServerContextForTest<TestService> context(TestService::method.method());
 
-  BaseServerWriter writer(context.get());
+  Responder writer(context.get());
 
   EXPECT_TRUE(writer.open());
 }
 
-TEST(BaseServerWriter, Move_ClosesOriginal) {
+TEST(Responder, Move_ClosesOriginal) {
   ServerContextForTest<TestService> context(TestService::method.method());
 
-  BaseServerWriter moved(context.get());
-  BaseServerWriter writer(std::move(moved));
+  Responder moved(context.get());
+  Responder writer(std::move(moved));
 
 #ifndef __clang_analyzer__
   EXPECT_FALSE(moved.open());
@@ -59,9 +59,9 @@
   EXPECT_TRUE(writer.open());
 }
 
-class FakeServerWriter : public BaseServerWriter {
+class FakeServerWriter : public Responder {
  public:
-  FakeServerWriter(ServerCall& context) : BaseServerWriter(context) {}
+  FakeServerWriter(ServerCall& context) : Responder(context) {}
 
   constexpr FakeServerWriter() = default;
 
diff --git a/pw_rpc/nanopb/nanopb_method.cc b/pw_rpc/nanopb/nanopb_method.cc
index c86837d..e5937cc 100644
--- a/pw_rpc/nanopb/nanopb_method.cc
+++ b/pw_rpc/nanopb/nanopb_method.cc
@@ -42,7 +42,7 @@
     return;
   }
 
-  internal::BaseServerWriter server_writer(call);
+  internal::Responder server_writer(call);
   function_.server_streaming(call, request_struct, server_writer);
 }
 
diff --git a/pw_rpc/nanopb/public/pw_rpc/internal/nanopb_method.h b/pw_rpc/nanopb/public/pw_rpc/internal/nanopb_method.h
index 6944e4a..80b5864 100644
--- a/pw_rpc/nanopb/public/pw_rpc/internal/nanopb_method.h
+++ b/pw_rpc/nanopb/public/pw_rpc/internal/nanopb_method.h
@@ -32,7 +32,7 @@
 
 // Define the Nanopb version of the the ServerWriter class.
 template <typename T>
-class ServerWriter : public internal::BaseServerWriter {
+class ServerWriter : public internal::Responder {
  public:
   // Allow default construction so that users can declare a variable into which
   // to move ServerWriters from RPC calls.
@@ -159,11 +159,11 @@
       NanopbMessageDescriptor request,
       NanopbMessageDescriptor response) {
     // Define a wrapper around the user-defined function that takes the request
-    // struct as void* and a BaseServerWriter instead of the templated
-    // ServerWriter class. This wrapper is stored generically in the Function
-    // union, defined below.
+    // struct as void* and a Responder instead of the templated ServerWriter
+    // class. This wrapper is stored generically in the Function union, defined
+    // below.
     constexpr ServerStreamingFunction wrapper =
-        [](ServerCall& call, const void* req, BaseServerWriter& writer) {
+        [](ServerCall& call, const void* req, Responder& writer) {
           return CallMethodImplFunction<method>(
               call,
               *static_cast<const Request<method>*>(req),
@@ -210,7 +210,7 @@
   //
   using ServerStreamingFunction = void (*)(ServerCall&,
                                            const void* request,
-                                           BaseServerWriter& writer);
+                                           Responder& writer);
 
   // The Function union stores a pointer to a generic version of the
   // user-defined RPC function. Using a union instead of void* avoids
diff --git a/pw_rpc/nanopb/public/pw_rpc/nanopb_test_method_context.h b/pw_rpc/nanopb/public/pw_rpc/nanopb_test_method_context.h
index 4efd0c9..b65ea22 100644
--- a/pw_rpc/nanopb/public/pw_rpc/nanopb_test_method_context.h
+++ b/pw_rpc/nanopb/public/pw_rpc/nanopb_test_method_context.h
@@ -210,7 +210,7 @@
   // Invokes the RPC with the provided request.
   void call(const Request& request) {
     ctx_.output.clear();
-    internal::BaseServerWriter server_writer(ctx_.call);
+    internal::Responder server_writer(ctx_.call);
     return CallMethodImplFunction<method>(
         ctx_.call,
         request,
@@ -221,7 +221,7 @@
   // This should not be called alongside call(); use one or the other.
   ServerWriter<Response> writer() {
     ctx_.output.clear();
-    internal::BaseServerWriter server_writer(ctx_.call);
+    internal::Responder server_writer(ctx_.call);
     return std::move(static_cast<ServerWriter<Response>&>(server_writer));
   }
 
diff --git a/pw_rpc/public/pw_rpc/internal/base_server_writer.h b/pw_rpc/public/pw_rpc/internal/base_server_writer.h
index 895c1b8..26269d9 100644
--- a/pw_rpc/public/pw_rpc/internal/base_server_writer.h
+++ b/pw_rpc/public/pw_rpc/internal/base_server_writer.h
@@ -32,37 +32,35 @@
 
 class Packet;
 
-// Internal ServerWriter base class. ServerWriters are used to stream responses.
-// Implementations must provide a derived class that provides the interface for
-// sending responses.
-class BaseServerWriter : public IntrusiveList<BaseServerWriter>::Item {
+// Internal RPC Responder class. The Responder is used to respond to any type of
+// RPC. Public classes like ServerWriters inherit from it and provide a public
+// API for their use case.
+class Responder : public IntrusiveList<Responder>::Item {
  public:
-  BaseServerWriter(ServerCall& call);
+  Responder(ServerCall& call);
 
-  BaseServerWriter(const BaseServerWriter&) = delete;
+  Responder(const Responder&) = delete;
 
-  BaseServerWriter(BaseServerWriter&& other) : state_(kClosed) {
-    *this = std::move(other);
-  }
+  Responder(Responder&& other) : state_(kClosed) { *this = std::move(other); }
 
-  ~BaseServerWriter() { Finish(); }
+  ~Responder() { Finish(); }
 
-  BaseServerWriter& operator=(const BaseServerWriter&) = delete;
+  Responder& operator=(const Responder&) = delete;
 
-  BaseServerWriter& operator=(BaseServerWriter&& other);
+  Responder& operator=(Responder&& other);
 
-  // True if the ServerWriter is active and ready to send responses.
+  // True if the Responder is active and ready to send responses.
   bool open() const { return state_ == kOpen; }
 
   uint32_t channel_id() const { return call_.channel().id(); }
   uint32_t service_id() const { return call_.service().id(); }
   uint32_t method_id() const;
 
-  // Closes the ServerWriter, if it is open.
+  // Closes the Responder, if it is open.
   Status Finish(Status status = OkStatus());
 
  protected:
-  constexpr BaseServerWriter() : state_{kClosed} {}
+  constexpr Responder() : state_{kClosed} {}
 
   const Method& method() const { return call_.method(); }
 
@@ -70,12 +68,12 @@
 
   constexpr const Channel::OutputBuffer& buffer() const { return response_; }
 
-  // Acquires a buffer into which to write a payload. The BaseServerWriter MUST
-  // be open when this is called!
+  // Acquires a buffer into which to write a payload. The Responder MUST be open
+  // when this is called!
   std::span<std::byte> AcquirePayloadBuffer();
 
   // Releases the buffer, sending a packet with the specified payload. The
-  // BaseServerWriter MUST be open when this is called!
+  // Responder MUST be open when this is called!
   Status ReleasePayloadBuffer(std::span<const std::byte> payload);
 
   // Releases the buffer without sending a packet.
diff --git a/pw_rpc/public/pw_rpc/internal/server.h b/pw_rpc/public/pw_rpc/internal/server.h
index e260636..14c285d 100644
--- a/pw_rpc/public/pw_rpc/internal/server.h
+++ b/pw_rpc/public/pw_rpc/internal/server.h
@@ -21,13 +21,9 @@
  public:
   Server() = delete;
 
-  void RegisterWriter(BaseServerWriter& writer) {
-    writers().push_front(writer);
-  }
+  void RegisterResponder(Responder& writer) { writers().push_front(writer); }
 
-  void RemoveWriter(const BaseServerWriter& writer) {
-    writers().remove(writer);
-  }
+  void RemoveResponder(const Responder& writer) { writers().remove(writer); }
 };
 
 }  // namespace pw::rpc::internal
diff --git a/pw_rpc/public/pw_rpc/server.h b/pw_rpc/public/pw_rpc/server.h
index 51e3f36..b57e1cb 100644
--- a/pw_rpc/public/pw_rpc/server.h
+++ b/pw_rpc/public/pw_rpc/server.h
@@ -53,7 +53,7 @@
   constexpr size_t channel_count() const { return channels_.size(); }
 
  protected:
-  IntrusiveList<internal::BaseServerWriter>& writers() { return writers_; }
+  IntrusiveList<internal::Responder>& writers() { return writers_; }
 
  private:
   std::tuple<Service*, const internal::Method*> FindMethod(
@@ -68,7 +68,7 @@
 
   std::span<internal::Channel> channels_;
   IntrusiveList<Service> services_;
-  IntrusiveList<internal::BaseServerWriter> writers_;
+  IntrusiveList<internal::Responder> writers_;
 };
 
 }  // namespace pw::rpc
diff --git a/pw_rpc/raw/public/pw_rpc/internal/raw_method.h b/pw_rpc/raw/public/pw_rpc/internal/raw_method.h
index 6d2e898..768238d 100644
--- a/pw_rpc/raw/public/pw_rpc/internal/raw_method.h
+++ b/pw_rpc/raw/public/pw_rpc/internal/raw_method.h
@@ -21,7 +21,7 @@
 
 namespace pw::rpc {
 
-class RawServerWriter : public internal::BaseServerWriter {
+class RawServerWriter : public internal::Responder {
  public:
   RawServerWriter() = default;
   RawServerWriter(RawServerWriter&&) = default;
@@ -65,7 +65,7 @@
   template <auto method>
   static constexpr RawMethod ServerStreaming(uint32_t id) {
     constexpr ServerStreamingFunction wrapper =
-        [](ServerCall& call, ConstByteSpan request, BaseServerWriter& writer) {
+        [](ServerCall& call, ConstByteSpan request, Responder& writer) {
           CallMethodImplFunction<method>(
               call, request, static_cast<RawServerWriter&>(writer));
         };
@@ -83,7 +83,7 @@
 
   using ServerStreamingFunction = void (*)(ServerCall&,
                                            ConstByteSpan,
-                                           BaseServerWriter&);
+                                           Responder&);
   union Function {
     UnaryFunction unary;
     ServerStreamingFunction server_streaming;
diff --git a/pw_rpc/raw/public/pw_rpc/raw_test_method_context.h b/pw_rpc/raw/public/pw_rpc/raw_test_method_context.h
index 0c005fd..b9fc660 100644
--- a/pw_rpc/raw/public/pw_rpc/raw_test_method_context.h
+++ b/pw_rpc/raw/public/pw_rpc/raw_test_method_context.h
@@ -216,7 +216,7 @@
   // Invokes the RPC with the provided request.
   void call(ConstByteSpan request) {
     ctx_.output.clear();
-    BaseServerWriter server_writer(ctx_.call);
+    Responder server_writer(ctx_.call);
     return CallMethodImplFunction<method>(
         ctx_.call, request, static_cast<RawServerWriter&>(server_writer));
   }
@@ -225,7 +225,7 @@
   // This should not be called alongside call(); use one or the other.
   RawServerWriter writer() {
     ctx_.output.clear();
-    BaseServerWriter server_writer(ctx_.call);
+    Responder server_writer(ctx_.call);
     return std::move(static_cast<RawServerWriter&>(server_writer));
   }
 
diff --git a/pw_rpc/raw/raw_method.cc b/pw_rpc/raw/raw_method.cc
index 7fe7f80..761b3a3 100644
--- a/pw_rpc/raw/raw_method.cc
+++ b/pw_rpc/raw/raw_method.cc
@@ -69,7 +69,7 @@
 
 void RawMethod::CallServerStreaming(ServerCall& call,
                                     const Packet& request) const {
-  internal::BaseServerWriter server_writer(call);
+  internal::Responder server_writer(call);
   function_.server_streaming(call, request.payload(), server_writer);
 }
 
diff --git a/pw_rpc/server_test.cc b/pw_rpc/server_test.cc
index 541000b..8894b5a 100644
--- a/pw_rpc/server_test.cc
+++ b/pw_rpc/server_test.cc
@@ -236,7 +236,7 @@
   }
 
   internal::ServerCall call_;
-  internal::BaseServerWriter writer_;
+  internal::Responder writer_;
 };
 
 TEST_F(MethodPending, ProcessPacket_Cancel_ClosesServerWriter) {