Add a PackRemoteMessage method which doesn't malloc
This lets us pack directly into the buffer to write to disk, removing
mallocs and allowing us to fix heap fragmentation by reducing memory
churn. A future patch will use it.
Change-Id: I05b312a4e4bf87f6da22f1d9a84ab71ec3ebab3d
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/aos/events/logging/logfile_utils.h b/aos/events/logging/logfile_utils.h
index 951efdc..16f3675 100644
--- a/aos/events/logging/logfile_utils.h
+++ b/aos/events/logging/logfile_utils.h
@@ -23,6 +23,7 @@
#include "aos/events/logging/logfile_sorting.h"
#include "aos/events/logging/logger_generated.h"
#include "aos/flatbuffers.h"
+#include "aos/network/remote_message_generated.h"
#include "flatbuffers/flatbuffers.h"
namespace aos::logger {
@@ -194,6 +195,17 @@
aos::monotonic_clock::min_time;
};
+// Repacks the provided RemoteMessage into fbb.
+flatbuffers::Offset<MessageHeader> PackRemoteMessage(
+ flatbuffers::FlatBufferBuilder *fbb,
+ const message_bridge::RemoteMessage *msg, int channel_index,
+ const aos::monotonic_clock::time_point monotonic_timestamp_time);
+
+constexpr flatbuffers::uoffset_t PackRemoteMessageSize() { return 96u; }
+size_t PackRemoteMessageInline(
+ uint8_t *data, const message_bridge::RemoteMessage *msg, int channel_index,
+ const aos::monotonic_clock::time_point monotonic_timestamp_time);
+
// Packes a message pointed to by the context into a MessageHeader.
flatbuffers::Offset<MessageHeader> PackMessage(
flatbuffers::FlatBufferBuilder *fbb, const Context &context,