Add ability to write log to abstract log sink

It completely decouples log writing and file system.

Change-Id: Iae3b881826e04500f4862a16c237e0f7c37c9536
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
Signed-off-by: Alexei Strots <alexei.strots@bluerivertech.com>
diff --git a/aos/events/logging/log_namer.cc b/aos/events/logging/log_namer.cc
index 10e08db..4b23268 100644
--- a/aos/events/logging/log_namer.cc
+++ b/aos/events/logging/log_namer.cc
@@ -45,7 +45,7 @@
 void NewDataWriter::Rotate() {
   // No need to rotate if nothing has been written.
   if (header_written_) {
-    VLOG(1) << "Rotated " << filename();
+    VLOG(1) << "Rotated " << name();
     ++parts_index_;
     reopen_(this);
     header_written_ = false;
@@ -77,7 +77,7 @@
 
   state_[node_index_].boot_uuid = source_node_boot_uuid;
 
-  VLOG(1) << "Rebooted " << filename();
+  VLOG(1) << "Rebooted " << name();
 }
 
 void NewDataWriter::UpdateBoot(const UUID &source_node_boot_uuid) {
@@ -101,7 +101,7 @@
 
   // Did the remote boot UUID change?
   if (state.boot_uuid != remote_node_boot_uuid) {
-    VLOG(1) << filename() << " Remote " << remote_node_index << " updated to "
+    VLOG(1) << name() << " Remote " << remote_node_index << " updated to "
             << remote_node_boot_uuid << " from " << state.boot_uuid;
     state.boot_uuid = remote_node_boot_uuid;
     state.oldest_remote_monotonic_timestamp = monotonic_clock::max_time;
@@ -124,7 +124,7 @@
   if (!reliable) {
     if (state.oldest_remote_unreliable_monotonic_timestamp >
         monotonic_remote_time) {
-      VLOG(1) << filename() << " Remote " << remote_node_index
+      VLOG(1) << name() << " Remote " << remote_node_index
               << " oldest_remote_unreliable_monotonic_timestamp updated from "
               << state.oldest_remote_unreliable_monotonic_timestamp << " to "
               << monotonic_remote_time;
@@ -136,7 +136,7 @@
   } else {
     if (state.oldest_remote_reliable_monotonic_timestamp >
         monotonic_remote_time) {
-      VLOG(1) << filename() << " Remote " << remote_node_index
+      VLOG(1) << name() << " Remote " << remote_node_index
               << " oldest_remote_reliable_monotonic_timestamp updated from "
               << state.oldest_remote_reliable_monotonic_timestamp << " to "
               << monotonic_remote_time;
@@ -153,7 +153,7 @@
     if (monotonic_event_time <
         logger_state.oldest_logger_remote_unreliable_monotonic_timestamp) {
       VLOG(1)
-          << filename() << " Remote " << node_index_
+          << name() << " Remote " << node_index_
           << " oldest_logger_remote_unreliable_monotonic_timestamp updated "
              "from "
           << logger_state.oldest_logger_remote_unreliable_monotonic_timestamp
@@ -169,7 +169,7 @@
 
   // Did any of the timestamps change?
   if (state.oldest_remote_monotonic_timestamp > monotonic_remote_time) {
-    VLOG(1) << filename() << " Remote " << remote_node_index
+    VLOG(1) << name() << " Remote " << remote_node_index
             << " oldest_remote_monotonic_timestamp updated from "
             << state.oldest_remote_monotonic_timestamp << " to "
             << monotonic_remote_time;
@@ -205,7 +205,7 @@
   CHECK_EQ(state_[node_index_].boot_uuid, source_node_boot_uuid);
   CHECK(writer);
   CHECK(header_written_) << ": Attempting to write message before header to "
-                         << writer->filename();
+                         << writer->name();
   writer->CopyMessage(coppier, now);
 }
 
@@ -214,7 +214,7 @@
   const size_t logger_node_index = log_namer_->logger_node_index();
   const UUID &logger_node_boot_uuid = log_namer_->logger_node_boot_uuid();
   if (state_[logger_node_index].boot_uuid == UUID::Zero()) {
-    VLOG(1) << filename() << " Logger node is " << logger_node_index
+    VLOG(1) << name() << " Logger node is " << logger_node_index
             << " and uuid is " << logger_node_boot_uuid;
     state_[logger_node_index].boot_uuid = logger_node_boot_uuid;
   } else {
@@ -227,7 +227,7 @@
 void NewDataWriter::QueueHeader(
     aos::SizePrefixedFlatbufferDetachedBuffer<LogFileHeader> &&header) {
   CHECK(!header_written_) << ": Attempting to write duplicate header to "
-                          << writer->filename();
+                          << writer->name();
   CHECK(header.message().has_source_node_boot_uuid());
   CHECK_EQ(state_[node_index_].boot_uuid,
            UUID::FromString(header.message().source_node_boot_uuid()));
@@ -245,7 +245,7 @@
     reopen_(this);
   }
 
-  VLOG(1) << "Writing to " << filename() << " "
+  VLOG(1) << "Writing to " << name() << " "
           << aos::FlatbufferToJson(
                  header, {.multi_line = false, .max_vector_size = 100});
 
@@ -560,14 +560,14 @@
   return result;
 }
 
-MultiNodeLogNamer::MultiNodeLogNamer(
-    std::unique_ptr<LogBackend> log_backend, EventLoop *event_loop)
+MultiNodeLogNamer::MultiNodeLogNamer(std::unique_ptr<LogBackend> log_backend,
+                                     EventLoop *event_loop)
     : MultiNodeLogNamer(std::move(log_backend), event_loop->configuration(),
                         event_loop, event_loop->node()) {}
 
-MultiNodeLogNamer::MultiNodeLogNamer(
-    std::unique_ptr<LogBackend> log_backend,
-    const Configuration *configuration, EventLoop *event_loop, const Node *node)
+MultiNodeLogNamer::MultiNodeLogNamer(std::unique_ptr<LogBackend> log_backend,
+                                     const Configuration *configuration,
+                                     EventLoop *event_loop, const Node *node)
     : LogNamer(configuration, event_loop, node),
       log_backend_(std::move(log_backend)),
       encoder_factory_([](size_t max_message_size) {
@@ -826,7 +826,6 @@
     return;
   }
   DetachedBufferWriter *const writer = writer_pointer->get();
-  const bool was_open = writer->is_open();
   writer->Close();
 
   const auto *stats = writer->WriteStatistics();
@@ -844,11 +843,6 @@
     ran_out_of_space_ = true;
     writer->acknowledge_out_of_space();
   }
-
-  if (!was_open) {
-    CHECK(access(std::string(writer->filename()).c_str(), F_OK) == -1)
-        << ": File should not exist: " << writer->filename();
-  }
 }
 
 }  // namespace logger