summaryrefslogtreecommitdiffstats
path: root/signal-composer-binding/observer.hpp
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-09-12 00:29:28 +0200
committerRomain Forlot <romain.forlot@iot.bzh>2017-12-14 11:00:25 +0100
commitd663f702c0e4fa562783504a483dce8f362d628e (patch)
treefdb656d0467a935aa6790dd9e05d3e373606a3e1 /signal-composer-binding/observer.hpp
parent75cfbf3d0206f12422091e6479c508c69445bf4a (diff)
Progression on config parsing.
Change-Id: Idd8d8987ccabef381f6d79c1d508930a2d4bae3c Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'signal-composer-binding/observer.hpp')
-rw-r--r--signal-composer-binding/observer.hpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/signal-composer-binding/observer.hpp b/signal-composer-binding/observer.hpp
new file mode 100644
index 0000000..e4129c6
--- /dev/null
+++ b/signal-composer-binding/observer.hpp
@@ -0,0 +1,30 @@
+#include <vector>
+
+class Observer
+{
+public:
+ virtual void update(double timestamp, double value) = 0;
+};
+
+class Subject
+{
+ double timestamp_;
+ double value_;
+ std::vector<Observer*> m_views;
+public:
+ void attach(Observer *obs)
+ {
+ m_views.push_back(obs);
+ }
+ void set_val(double timestamp, double value)
+ {
+ timestamp_ = timestamp;
+ value_ = value;
+ notify();
+ }
+ void notify()
+ {
+ for (int i = 0; i < m_views.size(); ++i)
+ m_views[i]->update(timestamp_, value_);
+ }
+};