Keep track of how many bytes DetachedBufferWriter writes

Change-Id: If7b932934d77b615ae2bf712c58eb24ac3253512
diff --git a/aos/events/logging/logfile_utils.cc b/aos/events/logging/logfile_utils.cc
index 5388df7..d455bf5 100644
--- a/aos/events/logging/logfile_utils.cc
+++ b/aos/events/logging/logfile_utils.cc
@@ -62,6 +62,7 @@
 
   PCHECK(written == static_cast<ssize_t>(n.iov_len))
       << ": Wrote " << written << " expected " << n.iov_len;
+  written_size_ += written;
 }
 
 void DetachedBufferWriter::QueueSizedFlatbuffer(
@@ -96,6 +97,7 @@
 
   PCHECK(written == static_cast<ssize_t>(queued_size_))
       << ": Wrote " << written << " expected " << queued_size_;
+  written_size_ += written;
 
   queued_size_ = 0;
   queue_.clear();
@@ -417,8 +419,7 @@
   bool was_emplaced = false;
   while (true) {
     // Stop if we have enough.
-    if (newest_timestamp() >
-            time_to_queue_ + max_out_of_order_duration() &&
+    if (newest_timestamp() > time_to_queue_ + max_out_of_order_duration() &&
         was_emplaced) {
       VLOG(1) << "Done queueing on " << this << ", queued to "
               << newest_timestamp() << " with requeue time " << time_to_queue_;
diff --git a/aos/events/logging/logfile_utils.h b/aos/events/logging/logfile_utils.h
index 4ab4dca..7acbbd3 100644
--- a/aos/events/logging/logfile_utils.h
+++ b/aos/events/logging/logfile_utils.h
@@ -7,6 +7,7 @@
 #include <optional>
 #include <string>
 #include <string_view>
+#include <tuple>
 #include <vector>
 
 #include "absl/types/span.h"
@@ -38,6 +39,9 @@
   DetachedBufferWriter(std::string_view filename);
   ~DetachedBufferWriter();
 
+  DetachedBufferWriter(const DetachedBufferWriter &) = delete;
+  DetachedBufferWriter &operator=(const DetachedBufferWriter &) = delete;
+
   std::string_view filename() const { return filename_; }
 
   // TODO(austin): Snappy compress the log file if it ends with .snappy!
@@ -53,6 +57,12 @@
   // Triggers data to be provided to the kernel and written.
   void Flush();
 
+  // Returns the number of bytes written.
+  size_t written_size() const { return written_size_; }
+
+  // Returns the number of bytes written or currently queued.
+  size_t total_size() const { return written_size_ + queued_size_; }
+
  private:
   const std::string filename_;
 
@@ -60,6 +70,7 @@
 
   // Size of all the data in the queue.
   size_t queued_size_ = 0;
+  size_t written_size_ = 0;
 
   // List of buffers to flush.
   std::vector<flatbuffers::DetachedBuffer> queue_;