From 89947dfc7142c68bbc0778c9c168fe96218fbeb0 Mon Sep 17 00:00:00 2001 From: Hayodea Hakol Date: Thu, 11 Sep 2025 20:08:35 -0400 Subject: [PATCH] AsyncLoop: Add test for zero-iteration loops This mnemonically ensures that we'll remember to check for these kinds of async loops. --- include/asynchronousLoop.h | 5 +++++ smocore/senseApis/senseApiManager.cpp | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/include/asynchronousLoop.h b/include/asynchronousLoop.h index d04f517..412fbcb 100644 --- a/include/asynchronousLoop.h +++ b/include/asynchronousLoop.h @@ -33,6 +33,11 @@ public: return isComplete(); } + bool nTotalIsZero(void) const + { + return nTotal == 0; + } + public: const unsigned int nTotal; std::atomic nSucceeded, nFailed; diff --git a/smocore/senseApis/senseApiManager.cpp b/smocore/senseApis/senseApiManager.cpp index 3c91208..a62ce8a 100644 --- a/smocore/senseApis/senseApiManager.cpp +++ b/smocore/senseApis/senseApiManager.cpp @@ -363,6 +363,12 @@ void SenseApiManager::attachAllSenseDevicesFromSpecsReq( auto request = std::make_shared( device::DeviceManager::deviceAttachmentSpecs.size(), std::move(cb)); + if (request->loop.nTotalIsZero()) + { + cb(request->loop); + return; + } + for (const auto& spec : device::DeviceManager::deviceAttachmentSpecs) { try { @@ -421,6 +427,12 @@ void SenseApiManager::detachAllSenseDevicesReq( auto request = std::make_shared( device::DeviceManager::deviceAttachmentSpecs.size(), std::move(cb)); + if (request->loop.nTotalIsZero()) + { + cb(request->loop); + return; + } + for (const auto& spec : device::DeviceManager::deviceAttachmentSpecs) { try {