pw_rpc: Classes for client & bidirectional streaming
- Implement RawServerReaderWriter and derived classes. Mostly implement
NanopbServerReaderWriter.
- Fill out MethodTraits for client/bidirectional streaming.
- Update NanopbMethodSerde argument order to match style used elsewhere
and Google style.
- Rework MethodImplTester to reduce duplication and test new features.
Change-Id: Iaf98e925d012867bd25cb4787ab5fae52ad71f54
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/51526
Reviewed-by: Alexei Frolov <frolv@google.com>
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
diff --git a/pw_rpc/fake_channel_output.cc b/pw_rpc/fake_channel_output.cc
index e68a879..c3ee687 100644
--- a/pw_rpc/fake_channel_output.cc
+++ b/pw_rpc/fake_channel_output.cc
@@ -29,13 +29,15 @@
Status FakeChannelOutput::SendAndReleaseBuffer(
std::span<const std::byte> buffer) {
- PW_CHECK(!done_);
PW_CHECK_PTR_EQ(buffer.data(), packet_buffer_.data());
+ // If the buffer is empty, this is just releasing an unused buffer.
if (buffer.empty()) {
return OkStatus();
}
+ PW_CHECK(!done_);
+
Result<Packet> result = Packet::FromBuffer(buffer);
PW_CHECK_OK(result.status());