From 068f773b06cf78449176fff0c5b9ab4f37f2c4f2 Mon Sep 17 00:00:00 2001
From: Jochen Vothknecht <jochen3120@gmail.com>
Date: Mon, 20 Jun 2022 08:23:14 +0200
Subject: [PATCH] ST: Couting started services

---
 .../SiliconTorch/Service/ServiceManager.cpp   | 24 ++++++++++++-------
 .../SiliconTorch/Service/ServiceManager.hpp   |  8 +++----
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
index ec5fe5b..a15fa1f 100644
--- a/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
+++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.cpp
@@ -37,13 +37,14 @@ namespace SiliconTorch {
 
       registrationLocked = true;
 
-      // TODO: start services!
-
       printServiceTable();
 
+      ESP_LOGI(TAG, "Starting services…");
+      u32 started = startEnabledServices();
+      ESP_LOGI(TAG, "Starting services#[ %d ] done.", started);
     }
 
-    std::vector<Service*> ServiceManager::getServicesInStartOrder() {
+    std::vector<Service*> ServiceManager::getServicesInStartOrder() const {
       std::vector<Service*> services;
 
       for (const auto& [_, service] : serviceMap)
@@ -56,15 +57,22 @@ namespace SiliconTorch {
       return services;
     }
 
-    void ServiceManager::startEnabledServices() {
+    u32 ServiceManager::startEnabledServices() {
       std::vector<Service*> services = getServicesInStartOrder();
+      u32 started = 0;
 
-      for (const auto& service : services)
-        if (service->isEnabled()) service->start();
+      for (const auto& service : services) {
+        if (service->isEnabled()) {
+          service->start();
+          started++;
+        }
+      }
+      
+      return started;
     }
 
 
-    void ServiceManager::printServiceTable() {
+    void ServiceManager::printServiceTable() const {
 
       // burn a few cycles because Espressivs logging is mehr :/
       // while (xTaskGetTickCount() * portTICK_PERIOD_MS < 1000) {
@@ -148,7 +156,7 @@ namespace SiliconTorch {
       }
     }
 
-    bool ServiceManager::getServiceEnabled(const str& name) {
+    bool ServiceManager::getServiceEnabled(const str& name) const {
       if (serviceMap.count(name) > 0) {
         return serviceMap.at(name)->isEnabled();
       } else {
diff --git a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
index 3a487b6..32a7dd0 100644
--- a/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
+++ b/CLC-qthing/SiliconTorch/Service/ServiceManager.hpp
@@ -33,15 +33,15 @@ namespace SiliconTorch {
 
         ServiceManager();
 
-        void startEnabledServices();
+        u32 startEnabledServices();
 
-        void printServiceTable();
+        void printServiceTable() const;
 
         void setServiceEnabled(const str& name, bool enabled);
-        bool getServiceEnabled(const str& name);
+        bool getServiceEnabled(const str& name) const;
 
 
-        std::vector<Service*> getServicesInStartOrder();
+        std::vector<Service*> getServicesInStartOrder() const;
 
 
         void registerService(Service* s);
-- 
GitLab