Changed dbus add report interface
- metric parameters now take single sensor instead of list
- added interface support for new operation types
Tested:
- All telemetry tests are passing.
Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
Change-Id: Id3a41c48e81a287e7d205ae1c747daa36d4cdb29
diff --git a/src/report.cpp b/src/report.cpp
index 59028f4..77189c1 100644
--- a/src/report.cpp
+++ b/src/report.cpp
@@ -143,23 +143,14 @@
void Report::updateReadings()
{
- auto numElements = std::accumulate(
- metrics.begin(), metrics.end(), 0u, [](auto sum, const auto& metric) {
- return sum + metric->getReadings().size();
- });
+ std::tuple_element_t<1, Readings> readingsCache(metrics.size());
- std::tuple_element_t<1, Readings> readingsCache(numElements);
-
- auto it = readingsCache.begin();
-
- for (const auto& metric : metrics)
- {
- for (const auto& reading : metric->getReadings())
- {
- *(it++) = std::make_tuple(reading.id, reading.metadata,
- reading.value, reading.timestamp);
- }
- }
+ std::transform(std::begin(metrics), std::end(metrics),
+ std::begin(readingsCache), [](const auto& metric) {
+ const auto& reading = metric->getReading();
+ return std::make_tuple(reading.id, reading.metadata,
+ reading.value, reading.timestamp);
+ });
std::get<0>(readings) = std::time(0);
std::get<1>(readings) = std::move(readingsCache);