Split local data and timestamps into separate files

This sets us up to read all the timestamps before the data to enable
sorting.  This doesn't do that yet.  It only sets the files and formats
up to be ready.

Change-Id: I1213a70c90867a082ca37b21eafd99f9b95b600d
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/logging/log_namer.h b/aos/events/logging/log_namer.h
index 6a18997..ccdfe5a 100644
--- a/aos/events/logging/log_namer.h
+++ b/aos/events/logging/log_namer.h
@@ -506,14 +506,12 @@
 
  private:
   // Opens up a writer for timestamps forwarded back.
-  void OpenForwardedTimestampWriter(const Channel *channel,
+  void OpenForwardedTimestampWriter(const Node *source_node,
                                     NewDataWriter *data_writer);
 
   // Opens up a writer for remote data.
-  void OpenWriter(const Channel *channel, NewDataWriter *data_writer);
-
-  // Opens the main data writer file for this node responsible for data_writer_.
-  void MakeDataWriter();
+  void OpenDataWriter(const Node *source_node, NewDataWriter *data_writer);
+  void OpenTimestampWriter(NewDataWriter *data_writer);
 
   void CreateBufferWriter(std::string_view path, size_t max_message_size,
                           std::unique_ptr<DetachedBufferWriter> *destination);
@@ -523,14 +521,17 @@
   // A version of std::accumulate which operates over all of our DataWriters.
   template <typename T, typename BinaryOperation>
   T accumulate_data_writers(T t, BinaryOperation op) const {
-    for (const std::pair<const Channel *const, NewDataWriter> &data_writer :
-         data_writers_) {
+    for (const std::pair<const Node *const, NewDataWriter> &data_writer :
+         node_data_writers_) {
       if (data_writer.second.writer != nullptr) {
         t = op(std::move(t), data_writer.second);
       }
     }
-    if (data_writer_ != nullptr && data_writer_->writer != nullptr) {
-      t = op(std::move(t), *data_writer_);
+    for (const std::pair<const Node *const, NewDataWriter> &data_writer :
+         node_timestamp_writers_) {
+      if (data_writer.second.writer != nullptr) {
+        t = op(std::move(t), data_writer.second);
+      }
     }
     return t;
   }
@@ -552,15 +553,10 @@
   int total_write_messages_ = 0;
   int total_write_bytes_ = 0;
 
-  // File to write both delivery timestamps and local data to.
-  std::unique_ptr<NewDataWriter> data_writer_;
-
-  std::map<const Channel *, NewDataWriter> data_writers_;
-
   // Data writer per remote node.
-  std::map<const Node *, NewDataWriter *> node_data_writers_;
+  std::map<const Node *, NewDataWriter> node_data_writers_;
   // Remote timestamp writers per node.
-  std::map<const Node *, NewDataWriter *> node_timestamp_writers_;
+  std::map<const Node *, NewDataWriter> node_timestamp_writers_;
 };
 
 // This is specialized log namer that deals with directory centric log events.