pw_rpc: Split public and internal interfaces

- Make an internal version of Server, which will expose functions for
  working with Reader/Writer objects
- Make an internal version of Channel, which provides an interface for
  sending packets.
- Define the Channel::OutputBuffer class for handling buffers acquired
  from a ChannelOutput.

Change-Id: Ieea29c1392726cd2eb15008e19004cde05c7f43b
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/12160
Commit-Queue: Wyatt Hepler <hepler@google.com>
Reviewed-by: Alexei Frolov <frolv@google.com>
diff --git a/pw_rpc/packet_test.cc b/pw_rpc/packet_test.cc
index 9e2fa44..a8d96a7 100644
--- a/pw_rpc/packet_test.cc
+++ b/pw_rpc/packet_test.cc
@@ -55,10 +55,6 @@
     byte{0x00},
 };
 
-constexpr size_t kReservedSize = 2 /* type */ + 2 /* channel */ +
-                                 2 /* service */ + 2 /* method */ +
-                                 2 /* payload key */ + 2 /* status */;
-
 TEST(Packet, Encode) {
   byte buffer[64];
 
@@ -110,45 +106,18 @@
   EXPECT_EQ(decoded.status(), Status::UNAVAILABLE);
 }
 
-TEST(Packet, PayloadUsableSpace_EmptyBuffer) {
-  Packet packet(PacketType::RPC, 1, 42, 100, kPayload);
-  EXPECT_TRUE(packet.PayloadUsableSpace(span<byte>()).empty());
-}
-
-TEST(Packet, PayloadUsableSpace_TooSmall) {
-  Packet packet(PacketType::RPC, 1, 42, 100, kPayload);
-
-  byte buffer[10];
-  EXPECT_TRUE(packet.PayloadUsableSpace(buffer).empty());
-}
+constexpr size_t kReservedSize = 2 /* type */ + 2 /* channel */ +
+                                 2 /* service */ + 2 /* method */ +
+                                 2 /* payload key */ + 2 /* status */;
 
 TEST(Packet, PayloadUsableSpace_ExactFit) {
-  byte buffer[kReservedSize];
-  const span payload =
-      Packet(PacketType::RPC, 1, 42, 100).PayloadUsableSpace(buffer);
-
-  EXPECT_EQ(payload.size(), sizeof(buffer) - kReservedSize);
-  EXPECT_EQ(buffer + kReservedSize, payload.data());
-}
-
-TEST(Packet, PayloadUsableSpace_ExtraRoom) {
-  byte buffer[kReservedSize * 3];
-  const span payload =
-      Packet(PacketType::RPC, 1, 42, 100).PayloadUsableSpace(buffer);
-
-  EXPECT_EQ(payload.size(), sizeof(buffer) - kReservedSize);
-  EXPECT_EQ(buffer + kReservedSize, payload.data());
+  EXPECT_EQ(kReservedSize,
+            Packet(PacketType::RPC, 1, 42, 100).MinEncodedSizeBytes());
 }
 
 TEST(Packet, PayloadUsableSpace_LargerVarints) {
-  byte buffer[kReservedSize * 3];
-  const span payload =
-      Packet(PacketType::RPC, 17000, 200, 200).PayloadUsableSpace(buffer);
-
-  constexpr size_t expected_size = kReservedSize + 2 + 1 + 1;
-
-  EXPECT_EQ(payload.size(), sizeof(buffer) - expected_size);
-  EXPECT_EQ(buffer + expected_size, payload.data());
+  EXPECT_EQ(kReservedSize + 2 + 1 + 1,
+            Packet(PacketType::RPC, 17000, 200, 200).MinEncodedSizeBytes());
 }
 
 }  // namespace