Use log source for log reading
Change-Id: I4d6018a6117f5864cda38a5e6485c6d08a782999
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/logging/logfile_utils.h b/aos/events/logging/logfile_utils.h
index 3281bc8..9dc7d88 100644
--- a/aos/events/logging/logfile_utils.h
+++ b/aos/events/logging/logfile_utils.h
@@ -269,7 +269,11 @@
// handles any per-file state left before merging below.
class MessageReader {
public:
- MessageReader(std::string_view filename);
+ // TODO (Alexei): it's deprecated and needs to be removed.
+ explicit MessageReader(std::string_view filename)
+ : MessageReader(SpanReader(filename)) {}
+
+ explicit MessageReader(SpanReader span_reader);
std::string_view filename() const { return span_reader_.filename(); }
@@ -353,12 +357,17 @@
// A class to seamlessly read messages from a list of part files.
class PartsMessageReader {
public:
- PartsMessageReader(LogParts log_parts);
+ // TODO (Alexei): it's deprecated, need to removed.
+ explicit PartsMessageReader(LogParts log_parts)
+ : PartsMessageReader(LogPartsAccess(std::nullopt, std::move(log_parts))) {
+ }
+
+ explicit PartsMessageReader(LogPartsAccess log_parts_access);
std::string_view filename() const { return message_reader_.filename(); }
// Returns the LogParts that holds the filenames we are reading.
- const LogParts &parts() const { return parts_; }
+ const LogParts &parts() const { return log_parts_access_.parts(); }
const LogFileHeader *log_file_header() const {
return message_reader_.log_file_header();
@@ -389,12 +398,15 @@
}
private:
+ static SpanReader MakeSpanReader(const LogPartsAccess &log_parts_access,
+ size_t part_number);
+
// Opens the next log and updates message_reader_. Sets done_ if there is
// nothing more to do.
void NextLog();
void ComputeBootCounts();
- const LogParts parts_;
+ const LogPartsAccess log_parts_access_;
size_t next_part_index_ = 1u;
bool done_ = false;
@@ -544,7 +556,11 @@
// Class to sort the resulting messages from a PartsMessageReader.
class MessageSorter {
public:
- MessageSorter(LogParts log_parts);
+ // TODO (Alexei): it's deperecated and need to be removed.
+ explicit MessageSorter(LogParts log_parts)
+ : MessageSorter(LogPartsAccess(std::nullopt, std::move(log_parts))) {}
+
+ explicit MessageSorter(const LogPartsAccess log_parts_access);
// Returns the parts that this is sorting messages from.
const LogParts &parts() const { return parts_message_reader_.parts(); }
@@ -635,6 +651,7 @@
private:
// Unsorted list of all parts sorters.
std::vector<MessageSorter> message_sorters_;
+
// Pointer to the parts sorter holding the current Front message if one
// exists, or nullptr if a new one needs to be found.
MessageSorter *current_ = nullptr;