From 9244d78a5bb171c12a8be866a9ba3041371d8f9c Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 7 Jul 2017 14:56:42 +0200 Subject: [PATCH] add MonitorElement::Ref::attach() --- src/client/pv/monitor.h | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/client/pv/monitor.h b/src/client/pv/monitor.h index 394707f..fa5c483 100644 --- a/src/client/pv/monitor.h +++ b/src/client/pv/monitor.h @@ -154,13 +154,21 @@ public: Ref(Monitor& M) :mon(&M), elem(mon->poll()) {} Ref(const Monitor::shared_pointer& M) :mon(M.get()), elem(mon->poll()) {} ~Ref() { reset(); } + void attach(Monitor& M) { + reset(); + mon = &M; + } + void attach(const Monitor::shared_pointer& M) { + reset(); + mon = M.get(); + } bool next() { if(elem) mon->release(elem); elem = mon->poll(); return !!elem; } void reset() { - if(elem) mon->release(elem); + if(elem && mon) mon->release(elem); elem.reset(); } Ref& operator++() {// prefix increment. aka "++(*this)"