Switch LogReader::Nodes to LoggedNodes
If folks want a list of nodes from the simulated config, they should
instead use the factory configuration. Most of the time, we want to
instead use the nodes from the logged configuration. Flip everything
over.
We should probably consider removing the helper since it doesn't really
add much.
Change-Id: I8f2150df9c50acfc0d7444f42b37820516fe072f
diff --git a/aos/events/logging/log_cat.cc b/aos/events/logging/log_cat.cc
index f9da914..c8407f1 100644
--- a/aos/events/logging/log_cat.cc
+++ b/aos/events/logging/log_cat.cc
@@ -147,7 +147,8 @@
bool found_channel = false;
- for (const aos::Node *node : reader.Nodes()) {
+ for (const aos::Node *node :
+ aos::configuration::GetNodes(event_loop_factory.configuration())) {
std::unique_ptr<aos::EventLoop> printer_event_loop =
event_loop_factory.MakeEventLoop("printer", node);
printer_event_loop->SkipTimingReport();
diff --git a/aos/events/logging/log_stats.cc b/aos/events/logging/log_stats.cc
index 47f3c5c..7d8f1f1 100644
--- a/aos/events/logging/log_stats.cc
+++ b/aos/events/logging/log_stats.cc
@@ -83,7 +83,7 @@
if (aos::configuration::MultiNode(reader.configuration())) {
if (FLAGS_node.empty()) {
LOG(INFO) << "Need a --node specified. The log file has:";
- for (const aos::Node *node : reader.Nodes()) {
+ for (const aos::Node *node : reader.LoggedNodes()) {
LOG(INFO) << " " << node->name()->string_view();
}
return 1;
diff --git a/aos/events/logging/logger.cc b/aos/events/logging/logger.cc
index d5eeff4..8253220 100644
--- a/aos/events/logging/logger.cc
+++ b/aos/events/logging/logger.cc
@@ -1067,16 +1067,8 @@
return remapped_configuration_;
}
-std::vector<const Node *> LogReader::Nodes() const {
- // Because the Node pointer will only be valid if it actually points to
- // memory owned by remapped_configuration_, we need to wait for the
- // remapped_configuration_ to be populated before accessing it.
- //
- // Also, note, that when ever a map is changed, the nodes in here are
- // invalidated.
- CHECK(remapped_configuration_ != nullptr)
- << ": Need to call Register before the node() pointer will be valid.";
- return configuration::GetNodes(remapped_configuration_);
+std::vector<const Node *> LogReader::LoggedNodes() const {
+ return configuration::GetNodes(logged_configuration());
}
monotonic_clock::time_point LogReader::monotonic_start_time(
diff --git a/aos/events/logging/logger.h b/aos/events/logging/logger.h
index aa6be40..e221695 100644
--- a/aos/events/logging/logger.h
+++ b/aos/events/logging/logger.h
@@ -403,9 +403,8 @@
const Configuration *configuration() const;
// Returns the nodes that this log file was created on. This is a list of
- // pointers to a node in the nodes() list inside configuration(). The
- // pointers here are invalidated whenever RemapLoggedChannel is called.
- std::vector<const Node *> Nodes() const;
+ // pointers to a node in the nodes() list inside logged_configuration().
+ std::vector<const Node *> LoggedNodes() const;
// Returns the starting timestamp for the log file.
monotonic_clock::time_point monotonic_start_time(
diff --git a/aos/events/logging/logger_test.cc b/aos/events/logging/logger_test.cc
index a28891e..5f18e29 100644
--- a/aos/events/logging/logger_test.cc
+++ b/aos/events/logging/logger_test.cc
@@ -96,7 +96,7 @@
// log file.
reader.Register();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(nullptr));
+ EXPECT_THAT(reader.LoggedNodes(), ::testing::ElementsAre(nullptr));
std::unique_ptr<EventLoop> test_event_loop =
reader.event_loop_factory()->MakeEventLoop("log_reader");
@@ -237,7 +237,7 @@
LogReader reader(std::get<0>(logfile));
reader.Register();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(nullptr));
+ EXPECT_THAT(reader.LoggedNodes(), ::testing::ElementsAre(nullptr));
std::unique_ptr<EventLoop> test_event_loop =
reader.event_loop_factory()->MakeEventLoop("log_reader");
@@ -322,7 +322,7 @@
// log file.
reader.Register();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(nullptr));
+ EXPECT_THAT(reader.LoggedNodes(), ::testing::ElementsAre(nullptr));
std::unique_ptr<EventLoop> test_event_loop =
reader.event_loop_factory()->MakeEventLoop("log_reader");
@@ -943,7 +943,10 @@
LOG(INFO) << "now pi2 "
<< log_reader_factory.GetNodeEventLoopFactory(pi2)->monotonic_now();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(pi1, pi2));
+ EXPECT_THAT(reader.LoggedNodes(),
+ ::testing::ElementsAre(
+ configuration::GetNode(reader.logged_configuration(), pi1),
+ configuration::GetNode(reader.logged_configuration(), pi2)));
reader.event_loop_factory()->set_send_delay(chrono::microseconds(0));
@@ -1137,7 +1140,10 @@
const Node *pi2 =
configuration::GetNode(log_reader_factory.configuration(), "pi2");
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(pi1, pi2));
+ EXPECT_THAT(reader.LoggedNodes(),
+ ::testing::ElementsAre(
+ configuration::GetNode(reader.logged_configuration(), pi1),
+ configuration::GetNode(reader.logged_configuration(), pi2)));
reader.event_loop_factory()->set_send_delay(chrono::microseconds(0));
@@ -1313,7 +1319,10 @@
<< " "
<< log_reader_factory.GetNodeEventLoopFactory(pi2)->realtime_now();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(pi1, pi2));
+ EXPECT_THAT(reader.LoggedNodes(),
+ ::testing::ElementsAre(
+ configuration::GetNode(reader.logged_configuration(), pi1),
+ configuration::GetNode(reader.logged_configuration(), pi2)));
reader.event_loop_factory()->set_send_delay(chrono::microseconds(0));
@@ -1594,7 +1603,10 @@
LOG(INFO) << "now pi2 "
<< log_reader_factory.GetNodeEventLoopFactory(pi2)->monotonic_now();
- EXPECT_THAT(reader.Nodes(), ::testing::ElementsAre(pi1, pi2));
+ EXPECT_THAT(reader.LoggedNodes(),
+ ::testing::ElementsAre(
+ configuration::GetNode(reader.logged_configuration(), pi1),
+ configuration::GetNode(reader.logged_configuration(), pi2)));
reader.event_loop_factory()->set_send_delay(chrono::microseconds(0));