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_;