Turn on exclusive senders in LogReader
This makes it so that we now automatically detect situations where a
user attempts to send messages during replay that are simultaneously
*being* replayed.
Change-Id: I40f30693fe93c94018b6ddbc9f748e655cdf1fe3
Signed-off-by: James Kuszmaul <james.kuszmaul@bluerivertech.com>
diff --git a/aos/events/logging/log_reader.h b/aos/events/logging/log_reader.h
index 157249c..04d2888 100644
--- a/aos/events/logging/log_reader.h
+++ b/aos/events/logging/log_reader.h
@@ -453,7 +453,8 @@
// ensure we are remapping channels correctly.
event_loop_unique_ptr_ = node_event_loop_factory_->MakeEventLoop(
"log_reader", {NodeEventLoopFactory::CheckSentTooFast::kNo,
- NodeEventLoopFactory::ExclusiveSenders::kNo});
+ NodeEventLoopFactory::ExclusiveSenders::kYes,
+ NonExclusiveChannels()});
return event_loop_unique_ptr_.get();
}
@@ -620,6 +621,12 @@
uint32_t actual_queue_index = 0xffffffff;
};
+ // Returns a list of channels which LogReader will send on but which may
+ // *also* get sent on by other applications in replay.
+ std::vector<
+ std::pair<const aos::Channel *, NodeEventLoopFactory::ExclusiveSenders>>
+ NonExclusiveChannels();
+
// Stores all the timestamps that have been sent on this channel. This is
// only done for channels which are forwarded and on the node which
// initially sends the message. Compress using ranges and offsets.