for (const auto &t : report->declare_types) {
types.insert(std::make_pair(t.path, t));
session->declared_types.insert(t.path);
+ instances.insert(std::pair<std::string, PerfCounterInstance>(
+ t.path, PerfCounterInstance(t.type)));
}
// Remove any old types
for (const auto &t : report->undeclare_types) {
if (t.type & PERFCOUNTER_LONGRUNAVG) {
::decode(avgcount, p);
::decode(avgcount2, p);
+ instances.at(t_path).push_avg(now, val, avgcount);
+ } else {
+ instances.at(t_path).push(now, val);
}
- // TODO: interface for insertion of avgs
- instances[t_path].push(now, val);
}
DECODE_FINISH(p);
}
buffer.push_back({t, v});
}
+void PerfCounterInstance::push_avg(utime_t t, uint64_t const &s,
+ uint64_t const &c)
+{
+ avg_buffer.push_back({t, s, c});
+}