diff --git a/include/spinscale/syncCancelerForAsyncWork.h b/include/spinscale/syncCancelerForAsyncWork.h index fd8a89e..e186542 100644 --- a/include/spinscale/syncCancelerForAsyncWork.h +++ b/include/spinscale/syncCancelerForAsyncWork.h @@ -35,6 +35,11 @@ namespace sscl { class SyncCancelerForAsyncWork { public: + struct Resources + { + bool shouldContinue = false; + }; + SyncCancelerForAsyncWork() = default; void startAcceptingWork() @@ -56,9 +61,12 @@ public: bool isCancellationRequested() { sscl::SpinLock::Guard guard(s.lock); - return !s.rsrc.shouldContinue; + return isCancellationRequestedUnlocked(); } + bool isCancellationRequestedUnlocked() const + { return !s.rsrc.shouldContinue; } + template requires std::invocable bool execUncancelableSegmentOrAbort(Body&& body) @@ -71,12 +79,7 @@ public: return true; } -private: - struct Resources - { - bool shouldContinue = false; - }; - +public: sscl::SharedResourceGroup s; };