diff --git a/include/sas_common/sas_object_client_manager.hpp b/include/sas_common/sas_object_client_manager.hpp index 97becae..b0e3ac0 100644 --- a/include/sas_common/sas_object_client_manager.hpp +++ b/include/sas_common/sas_object_client_manager.hpp @@ -120,6 +120,14 @@ class ObjectClientManager * @return size_t Number of clients currently managed. */ size_t size() const; + + /** + * @brief Check whether all managed clients are enabled. + * + * @return true if every managed client reports is_enabled() == true, + * or if no clients are managed; false otherwise. + */ + bool are_all_clients_enabled() const; }; } diff --git a/src/sas_common_py.cpp b/src/sas_common_py.cpp index fa51f80..11ea4d6 100644 --- a/src/sas_common_py.cpp +++ b/src/sas_common_py.cpp @@ -91,5 +91,7 @@ PYBIND11_MODULE(_sas_common, m) { .def("get_client_names", &OCM::get_client_names, "Return a list of all managed client names.") .def("size", &OCM::size, - "Return the number of managed clients."); + "Return the number of managed clients.") + .def("are_all_clients_enabled", &OCM::are_all_clients_enabled, + "Return True if every managed client is enabled (or if no clients exist)."); } diff --git a/src/sas_object_client_manager.cpp b/src/sas_object_client_manager.cpp index ea40868..9f127f9 100644 --- a/src/sas_object_client_manager.cpp +++ b/src/sas_object_client_manager.cpp @@ -88,4 +88,16 @@ size_t ObjectClientManager::size() const return clients_.size(); } +bool ObjectClientManager::are_all_clients_enabled() const +{ + for (const auto& pair : clients_) + { + if (!pair.second->is_enabled()) + { + return false; + } + } + return true; +} + }