Make logger and timesamp_logger config lists
We want to log messages on both the roboRIO, and on the laptop/logger
pi. This means that we want lists of loggers instead of a single
logger.
We are lucky and there are no known log files with loggers in them which
we care to preserve. This lets us reuse the field without worying about
compatability.
Change-Id: I452994fbca78909d6320da3d02ad51fe45a0354b
diff --git a/aos/configuration.cc b/aos/configuration.cc
index d6d276e..f250c93 100644
--- a/aos/configuration.cc
+++ b/aos/configuration.cc
@@ -383,18 +383,20 @@
switch (connection->timestamp_logger()) {
case LoggerConfig::LOCAL_LOGGER:
case LoggerConfig::NOT_LOGGED:
- CHECK(!connection->has_timestamp_logger_node());
+ CHECK(!connection->has_timestamp_logger_nodes());
break;
case LoggerConfig::REMOTE_LOGGER:
case LoggerConfig::LOCAL_AND_REMOTE_LOGGER:
- CHECK(connection->has_timestamp_logger_node());
- CHECK(
- GetNode(&result.message(),
- connection->timestamp_logger_node()->string_view()) !=
- nullptr)
- << ": Channel " << FlatbufferToJson(c)
- << " has an unknown \"timestamp_logger_node\""
- << connection->name()->string_view();
+ CHECK(connection->has_timestamp_logger_nodes());
+ CHECK_GT(connection->timestamp_logger_nodes()->size(), 0u);
+ for (const flatbuffers::String *timestamp_logger_node :
+ *connection->timestamp_logger_nodes()) {
+ CHECK(GetNode(&result.message(),
+ timestamp_logger_node->string_view()) != nullptr)
+ << ": Channel " << FlatbufferToJson(c)
+ << " has an unknown \"timestamp_logger_node\""
+ << connection->name()->string_view();
+ }
break;
}
@@ -778,20 +780,24 @@
}
return channel->source_node()->string_view() ==
node->name()->string_view();
- case LoggerConfig::REMOTE_LOGGER:
- CHECK(channel->has_logger_node());
-
- return channel->logger_node()->string_view() ==
- CHECK_NOTNULL(node)->name()->string_view();
case LoggerConfig::LOCAL_AND_REMOTE_LOGGER:
- CHECK(channel->has_logger_node());
+ CHECK(channel->has_logger_nodes());
+ CHECK_GT(channel->logger_nodes()->size(), 0u);
if (channel->source_node()->string_view() ==
CHECK_NOTNULL(node)->name()->string_view()) {
return true;
}
- if (channel->logger_node()->string_view() == node->name()->string_view()) {
- return true;
+
+ [[fallthrough]];
+ case LoggerConfig::REMOTE_LOGGER:
+ CHECK(channel->has_logger_nodes());
+ CHECK_GT(channel->logger_nodes()->size(), 0u);
+ for (const flatbuffers::String *logger_node : *channel->logger_nodes()) {
+ if (logger_node->string_view() ==
+ CHECK_NOTNULL(node)->name()->string_view()) {
+ return true;
+ }
}
return false;
@@ -828,24 +834,27 @@
const Node *node) {
switch (connection->timestamp_logger()) {
case LoggerConfig::LOCAL_AND_REMOTE_LOGGER:
- CHECK(connection->has_timestamp_logger_node());
+ CHECK(connection->has_timestamp_logger_nodes());
+ CHECK_GT(connection->timestamp_logger_nodes()->size(), 0u);
if (connection->name()->string_view() == node->name()->string_view()) {
return true;
}
- if (connection->timestamp_logger_node()->string_view() ==
- node->name()->string_view()) {
- return true;
+ [[fallthrough]];
+ case LoggerConfig::REMOTE_LOGGER:
+ CHECK(connection->has_timestamp_logger_nodes());
+ CHECK_GT(connection->timestamp_logger_nodes()->size(), 0u);
+ for (const flatbuffers::String *timestamp_logger_node :
+ *connection->timestamp_logger_nodes()) {
+ if (timestamp_logger_node->string_view() ==
+ node->name()->string_view()) {
+ return true;
+ }
}
return false;
case LoggerConfig::LOCAL_LOGGER:
return connection->name()->string_view() == node->name()->string_view();
- case LoggerConfig::REMOTE_LOGGER:
- CHECK(connection->has_timestamp_logger_node());
-
- return connection->timestamp_logger_node()->string_view() ==
- node->name()->string_view();
case LoggerConfig::NOT_LOGGED:
return false;
}