aboutsummaryrefslogtreecommitdiff
path: root/pw_log_rpc
diff options
context:
space:
mode:
Diffstat (limited to 'pw_log_rpc')
-rw-r--r--pw_log_rpc/rpc_log_drain.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/pw_log_rpc/rpc_log_drain.cc b/pw_log_rpc/rpc_log_drain.cc
index 2f1003c3c..52efe6f63 100644
--- a/pw_log_rpc/rpc_log_drain.cc
+++ b/pw_log_rpc/rpc_log_drain.cc
@@ -30,6 +30,14 @@ Result<ConstByteSpan> CreateEncodedDropMessage(
PW_TRY(encoder.status());
return ConstByteSpan(encoder);
}
+
+// TODO(pwbug/605): Remove this hack for accessing the PayloadBuffer() API.
+class AccessHiddenFunctions : public rpc::RawServerWriter {
+ public:
+ using RawServerWriter::PayloadBuffer;
+ using RawServerWriter::ReleaseBuffer;
+};
+
} // namespace
Status RpcLogDrain::Open(rpc::RawServerWriter& writer) {
@@ -53,7 +61,8 @@ Status RpcLogDrain::Flush() {
if (!server_writer_.active()) {
return Status::Unavailable();
}
- log::LogEntries::MemoryEncoder encoder(server_writer_.PayloadBuffer());
+ log::LogEntries::MemoryEncoder encoder(
+ static_cast<AccessHiddenFunctions&>(server_writer_).PayloadBuffer());
uint32_t packed_entry_count = 0;
log_sink_state = EncodeOutgoingPacket(encoder, packed_entry_count);
// Avoid sending empty packets.
@@ -61,7 +70,7 @@ Status RpcLogDrain::Flush() {
// Release buffer when still active to keep the writer in a replaceable
// state.
if (server_writer_.active()) {
- server_writer_.ReleaseBuffer();
+ static_cast<AccessHiddenFunctions&>(server_writer_).ReleaseBuffer();
}
continue;
}