added support for onChange report
Report is now notified when metric changes and updates reading values.
Tested:
- Added new unit tests
- OnChange report updates Readings when metric values changes
Change-Id: I3be9ef7aa0486cb15bac627aa1de5cc632613b3b
Signed-off-by: Krzysztof Grobelny <krzysztof.grobelny@intel.com>
diff --git a/src/interfaces/metric.hpp b/src/interfaces/metric.hpp
index 4e2fae3..c40e960 100644
--- a/src/interfaces/metric.hpp
+++ b/src/interfaces/metric.hpp
@@ -1,6 +1,8 @@
#pragma once
+#include "interfaces/metric_listener.hpp"
#include "metric_value.hpp"
+#include "types/duration_types.hpp"
#include "types/report_types.hpp"
#include <nlohmann/json.hpp>
@@ -20,6 +22,11 @@
virtual std::vector<MetricValue> getReadings() const = 0;
virtual LabeledMetricParameters dumpConfiguration() const = 0;
virtual uint64_t sensorCount() const = 0;
+ virtual void registerForUpdates(interfaces::MetricListener& listener) = 0;
+ virtual void
+ unregisterFromUpdates(interfaces::MetricListener& listener) = 0;
+ virtual void updateReadings(Milliseconds) = 0;
+ virtual bool isTimerRequired() const = 0;
};
} // namespace interfaces
diff --git a/src/interfaces/metric_listener.hpp b/src/interfaces/metric_listener.hpp
new file mode 100644
index 0000000..3006a09
--- /dev/null
+++ b/src/interfaces/metric_listener.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+namespace interfaces
+{
+
+class MetricListener
+{
+ public:
+ virtual ~MetricListener() = default;
+
+ virtual void metricUpdated() = 0;
+};
+
+} // namespace interfaces
diff --git a/src/interfaces/sensor_listener.hpp b/src/interfaces/sensor_listener.hpp
index a47c8d4..3f35c38 100644
--- a/src/interfaces/sensor_listener.hpp
+++ b/src/interfaces/sensor_listener.hpp
@@ -15,7 +15,6 @@
public:
virtual ~SensorListener() = default;
- virtual void sensorUpdated(interfaces::Sensor&, Milliseconds) = 0;
virtual void sensorUpdated(interfaces::Sensor&, Milliseconds, double) = 0;
};