Split out an interface for finding log files
This allows new implementations which list log files from cloud storage,
etc.
Change-Id: I962946962e92eedf582e6b0b3c65e9ba606835cb
Signed-off-by: Brian Silverman <bsilver16384@gmail.com>
diff --git a/aos/events/logging/logfile_utils.cc b/aos/events/logging/logfile_utils.cc
index 8a10876..31fdc83 100644
--- a/aos/events/logging/logfile_utils.cc
+++ b/aos/events/logging/logfile_utils.cc
@@ -520,6 +520,9 @@
PartsMessageReader::PartsMessageReader(LogParts log_parts)
: parts_(std::move(log_parts)), message_reader_(parts_.parts[0]) {
+ if (parts_.parts.size() >= 2) {
+ next_message_reader_.emplace(parts_.parts[1]);
+ }
ComputeBootCounts();
}
@@ -601,11 +604,18 @@
void PartsMessageReader::NextLog() {
if (next_part_index_ == parts_.parts.size()) {
+ CHECK(!next_message_reader_);
done_ = true;
return;
}
- message_reader_ = MessageReader(parts_.parts[next_part_index_]);
+ CHECK(next_message_reader_);
+ message_reader_ = std::move(*next_message_reader_);
ComputeBootCounts();
+ if (next_part_index_ + 1 < parts_.parts.size()) {
+ next_message_reader_.emplace(parts_.parts[next_part_index_ + 1]);
+ } else {
+ next_message_reader_.reset();
+ }
++next_part_index_;
}