|
|
|
@ -69,15 +69,15 @@ void AbstractStream::updateLastMsgsTo(double sec) { |
|
|
|
|
last_msgs.clear(); |
|
|
|
|
|
|
|
|
|
uint64_t last_ts = (sec + routeStartTime()) * 1e9; |
|
|
|
|
for (auto &[id, e] : events_) { |
|
|
|
|
auto it = std::lower_bound(e.crbegin(), e.crend(), last_ts, [](auto e, uint64_t ts) { |
|
|
|
|
for (auto &[id, ev] : events_) { |
|
|
|
|
auto it = std::lower_bound(ev.crbegin(), ev.crend(), last_ts, [](auto e, uint64_t ts) { |
|
|
|
|
return e->mono_time > ts; |
|
|
|
|
}); |
|
|
|
|
if (it != e.crend()) { |
|
|
|
|
if (it != ev.crend()) { |
|
|
|
|
double ts = (*it)->mono_time / 1e9 - routeStartTime(); |
|
|
|
|
auto &m = all_msgs[id]; |
|
|
|
|
m.compute((const char *)(*it)->dat, (*it)->size, ts, getSpeed()); |
|
|
|
|
m.count = std::distance(it, e.crend()); |
|
|
|
|
m.count = std::distance(it, ev.crend()); |
|
|
|
|
m.freq = m.count / std::max(1.0, ts); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|