From 601d46f9d58e36a3d9d4f61f06ef7cdaab837c19 Mon Sep 17 00:00:00 2001
From: Martin Hierholzer <martin.hierholzer@desy.de>
Date: Thu, 21 Jun 2018 17:21:25 +0200
Subject: [PATCH] ConstantAccessor: implement interrupt() properly

---
 include/ConstantAccessor.h | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/include/ConstantAccessor.h b/include/ConstantAccessor.h
index 238b3592..2fb92fd4 100644
--- a/include/ConstantAccessor.h
+++ b/include/ConstantAccessor.h
@@ -41,7 +41,9 @@ namespace ChimeraTK {
           return;
         }
         // block forever
-        boost::promise<void>().get_future().wait();
+        promise.get_future().wait();
+        // if we get here, interrupt() has been called
+        throw boost::thread_interrupted();
       }
 
       bool doReadTransferNonBlocking() override {
@@ -82,12 +84,16 @@ namespace ChimeraTK {
 
       AccessModeFlags getAccessModeFlags() const override { return {}; }
 
+      void interrupt() override { promise.set_value(); }
+
     protected:
 
       std::vector<UserType> _value;
 
       bool firstRead{true};
 
+      boost::promise<void> promise;
+
   };
 
 } /* namespace ChimeraTK */
-- 
GitLab