Pārlūkot izejas kodu

common: scope_exit: Implement mechanism for canceling a scope exit.

bunnei 6 gadi atpakaļ
vecāks
revīzija
4df6ef04ac
1 mainītis faili ar 8 papildinājumiem un 1 dzēšanām
  1. 8 1
      src/common/scope_exit.h

+ 8 - 1
src/common/scope_exit.h

@@ -12,10 +12,17 @@ template <typename Func>
 struct ScopeExitHelper {
 struct ScopeExitHelper {
     explicit ScopeExitHelper(Func&& func) : func(std::move(func)) {}
     explicit ScopeExitHelper(Func&& func) : func(std::move(func)) {}
     ~ScopeExitHelper() {
     ~ScopeExitHelper() {
-        func();
+        if (active) {
+            func();
+        }
+    }
+
+    void Cancel() {
+        active = false;
     }
     }
 
 
     Func func;
     Func func;
+    bool active{true};
 };
 };
 
 
 template <typename Func>
 template <typename Func>