51 uint64_t
end_time = std::numeric_limits<uint64_t>::max(),
52 const std::set<std::string>& channels = {});
62 RecordViewer(
const std::vector<RecordReaderPtr>& readers,
64 uint64_t
end_time = std::numeric_limits<uint64_t>::max(),
65 const std::set<std::string>& channels = std::set<std::string>());
86 uint64_t
end_time()
const {
return end_time_; }
98 class Iterator :
public std::iterator<std::input_iterator_tag, RecordMessage,
99 int, RecordMessage*, RecordMessage&> {
162 value_type message_instance_;
197 uint64_t begin_time_ = 0;
198 uint64_t end_time_ = std::numeric_limits<uint64_t>::max();
200 std::set<std::string> channels_;
202 std::set<std::string> channel_list_;
203 std::vector<RecordReaderPtr> readers_;
204 std::vector<bool> readers_finished_;
206 uint64_t curr_begin_time_ = 0;
207 std::multimap<uint64_t, std::shared_ptr<RecordMessage>> msg_buffer_;
209 const uint64_t kStepTimeNanoSec = 1000000000UL;
210 const std::size_t kBufferMinSize = 128;