MaybeNodeName looks useful to be shared
It included trailing space for printing, but it will be used not only
for printing, so messages are adjusted accordingly.
Change-Id: I39bd50775f59b8055d21ccab8745046c0a654450
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/logging/log_reader.cc b/aos/events/logging/log_reader.cc
index 0e346a0..75a53e1 100644
--- a/aos/events/logging/log_reader.cc
+++ b/aos/events/logging/log_reader.cc
@@ -489,7 +489,7 @@
SetRealtimeOffset(monotonic_start_time(boot_count()),
realtime_start_time(boot_count()));
- VLOG(1) << "Starting " << MaybeNodeName(node()) << "at time "
+ VLOG(1) << "Starting for node '" << MaybeNodeName(node()) << "' at time "
<< monotonic_start_time(boot_count());
auto fn = [this]() {
for (size_t i = 0; i < on_starts_.size(); ++i) {
@@ -525,7 +525,7 @@
}
void LogReader::State::RunOnEnd() {
- VLOG(1) << "Ending " << MaybeNodeName(node()) << "at time "
+ VLOG(1) << "Ending for node '" << MaybeNodeName(node()) << "' at time "
<< monotonic_start_time(boot_count());
auto fn = [this]() {
for (size_t i = 0; i < on_ends_.size(); ++i) {
@@ -733,7 +733,7 @@
for (std::unique_ptr<State> &state : states_) {
CHECK(state);
VLOG(1) << "Start time is " << state->monotonic_start_time(0)
- << " for node " << MaybeNodeName(state->node()) << "now "
+ << " for node '" << MaybeNodeName(state->node()) << "' now "
<< state->monotonic_now();
if (state->monotonic_start_time(0) == monotonic_clock::min_time) {
continue;
@@ -764,8 +764,8 @@
state->realtime_start_time(0));
}
VLOG(1) << "Start time is " << state->monotonic_start_time(0)
- << " for node " << MaybeNodeName(state->event_loop()->node())
- << "now " << state->monotonic_now();
+ << " for node '" << MaybeNodeName(state->event_loop()->node())
+ << "' now " << state->monotonic_now();
}
if (FLAGS_timestamps_to_csv) {
@@ -956,7 +956,8 @@
state->set_timer_handler(event_loop->AddTimer([this, state]() {
if (state->MultiThreadedOldestMessageTime() == BootTimestamp::max_time()) {
--live_nodes_;
- VLOG(1) << MaybeNodeName(state->event_loop()->node()) << "Node down!";
+ VLOG(1) << "Node '" << MaybeNodeName(state->event_loop()->node())
+ << "' down!";
if (exit_on_finish_ && live_nodes_ == 0 &&
event_loop_factory_ != nullptr) {
event_loop_factory_->Exit();
@@ -1071,9 +1072,9 @@
state->SetRealtimeOffset(timestamped_message.monotonic_event_time.time,
timestamped_message.realtime_event_time);
- VLOG(1) << MaybeNodeName(state->event_loop()->node()) << "Sending "
- << timestamped_message.monotonic_event_time << " "
- << state->DebugString();
+ VLOG(1) << "For node '" << MaybeNodeName(state->event_loop()->node())
+ << "' sending at " << timestamped_message.monotonic_event_time
+ << " : " << state->DebugString();
// TODO(austin): std::move channel_data in and make that efficient in
// simulation.
state->Send(std::move(timestamped_message));
@@ -1099,8 +1100,8 @@
<< configuration::CleanedChannelToString(
logged_configuration()->channels()->Get(
timestamped_message.channel_index))
- << " on node " << MaybeNodeName(state->event_loop()->node())
- << timestamped_message;
+ << " on node '" << MaybeNodeName(state->event_loop()->node())
+ << "' at " << timestamped_message;
// The user might be working with log files from 1 node but forgot to
// configure the infrastructure to log data for a remote channel on
@@ -1177,30 +1178,31 @@
const BootTimestamp next_time = state->MultiThreadedOldestMessageTime();
if (next_time != BootTimestamp::max_time()) {
if (next_time.boot != state->boot_count()) {
- VLOG(1) << "Next message for "
+ VLOG(1) << "Next message for node '"
<< MaybeNodeName(state->event_loop()->node())
- << "is on the next boot, " << next_time << " now is "
+ << "' is on the next boot, " << next_time << " now is "
<< state->monotonic_now();
CHECK(event_loop_factory_);
state->NotifyLogfileEnd();
return;
}
if (event_loop_factory_ != nullptr) {
- VLOG(1) << "Scheduling " << MaybeNodeName(state->event_loop()->node())
- << "wakeup for " << next_time.time << "("
+ VLOG(1) << "Scheduling for node '"
+ << MaybeNodeName(state->event_loop()->node()) << "' wakeup for "
+ << next_time.time << "("
<< state->ToDistributedClock(next_time.time)
<< " distributed), now is " << state->monotonic_now();
} else {
- VLOG(1) << "Scheduling " << MaybeNodeName(state->event_loop()->node())
- << "wakeup for " << next_time.time << ", now is "
- << state->monotonic_now();
+ VLOG(1) << "Scheduling for node '"
+ << MaybeNodeName(state->event_loop()->node()) << "' wakeup for "
+ << next_time.time << ", now is " << state->monotonic_now();
}
// TODO(james): This can result in negative times getting passed-through
// in realtime replay.
state->Schedule(next_time.time);
} else {
- VLOG(1) << MaybeNodeName(state->event_loop()->node())
- << "No next message, scheduling shutdown";
+ VLOG(1) << "Node '" << MaybeNodeName(state->event_loop()->node())
+ << "': No next message, scheduling shutdown";
state->NotifyLogfileEnd();
// Set a timer up immediately after now to die. If we don't do this,
// then the watchers waiting on the message we just read will never get
@@ -1213,7 +1215,8 @@
}
}
- VLOG(1) << MaybeNodeName(state->event_loop()->node()) << "Done sending at "
+ VLOG(1) << "Node '" << MaybeNodeName(state->event_loop()->node())
+ << "': Done sending at "
<< state->event_loop()->context().monotonic_event_time << " now "
<< state->monotonic_now();
}));
@@ -2231,8 +2234,8 @@
TimestampedMessage result = std::move(*result_ptr);
- VLOG(2) << MaybeNodeName(event_loop_->node()) << "PopOldest Popping "
- << result.monotonic_event_time;
+ VLOG(2) << "Node '" << MaybeNodeName(event_loop_->node())
+ << "': PopOldest Popping " << result.monotonic_event_time;
timestamp_mapper_->PopFront();
SeedSortedMessages();
@@ -2272,7 +2275,7 @@
if (result_ptr == nullptr) {
return BootTimestamp::max_time();
}
- VLOG(2) << MaybeNodeName(node()) << "oldest message at "
+ VLOG(2) << "Node '" << MaybeNodeName(node()) << "': oldest message at "
<< result_ptr->monotonic_event_time.time;
if (result_ptr->monotonic_event_time.boot == boot_count()) {
ObserveNextMessage(result_ptr->monotonic_event_time.time,
diff --git a/aos/events/logging/logfile_utils.cc b/aos/events/logging/logfile_utils.cc
index cda6561..b76bcad 100644
--- a/aos/events/logging/logfile_utils.cc
+++ b/aos/events/logging/logfile_utils.cc
@@ -1785,8 +1785,8 @@
std::optional<size_t> boot = parts_message_reader_.boot_count(
source_node_index_[m->channel_index]);
- CHECK(boot) << ": Failed to find boot for node " << MaybeNodeName(node)
- << ", with index " << source_node_index_[m->channel_index];
+ CHECK(boot) << ": Failed to find boot for node '" << MaybeNodeName(node)
+ << "', with index " << source_node_index_[m->channel_index];
monotonic_remote_boot = *boot;
}
@@ -2501,11 +2501,4 @@
return ss.str();
}
-std::string MaybeNodeName(const Node *node) {
- if (node != nullptr) {
- return node->name()->str() + " ";
- }
- return "";
-}
-
} // namespace aos::logger
diff --git a/aos/events/logging/logfile_utils.h b/aos/events/logging/logfile_utils.h
index 1ee09fa..6337005 100644
--- a/aos/events/logging/logfile_utils.h
+++ b/aos/events/logging/logfile_utils.h
@@ -397,6 +397,7 @@
const LogParts parts_;
size_t next_part_index_ = 1u;
bool done_ = false;
+
MessageReader message_reader_;
// We instantiate the next one early, to allow implementations to prefetch.
// TODO(Brian): To get optimal performance when downloading, this needs more
@@ -898,9 +899,13 @@
std::function<bool(TimestampedMessage &)> replay_channels_callback_;
};
-// Returns the node name with a trailing space, or an empty string if we are on
-// a single node.
-std::string MaybeNodeName(const Node *);
+// Returns the node name, or an empty string if we are a single node.
+inline std::string_view MaybeNodeName(const Node *node) {
+ if (node != nullptr) {
+ return node->name()->string_view();
+ }
+ return "";
+}
// Class to copy a RemoteMessage into the provided buffer.
class RemoteMessageCopier : public DataEncoder::Copier {