From daae29dd3fc6bd1dc5bae24fac07ea68954e7b6c Mon Sep 17 00:00:00 2001 From: 0x1d Date: Mon, 20 Oct 2025 21:35:08 +0200 Subject: [PATCH] refactor: update local node --- include/spore/core/ClusterManager.h | 2 +- src/spore/core/ClusterManager.cpp | 41 +++++++++++++---------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/include/spore/core/ClusterManager.h b/include/spore/core/ClusterManager.h index c93fbb2..3b0fbb2 100644 --- a/include/spore/core/ClusterManager.h +++ b/include/spore/core/ClusterManager.h @@ -20,7 +20,7 @@ public: void removeDeadNodes(); void printMemberList(); const std::map& getMemberList() const { return *ctx.memberList; } - void updateLocalNodeResources(); + void updateLocalNodeResources(NodeInfo& node); void heartbeatTaskCallback(); void updateAllMembersInfoTaskCallback(); void broadcastNodeUpdate(); diff --git a/src/spore/core/ClusterManager.cpp b/src/spore/core/ClusterManager.cpp index 1d2360c..bbdf02c 100644 --- a/src/spore/core/ClusterManager.cpp +++ b/src/spore/core/ClusterManager.cpp @@ -380,10 +380,7 @@ void ClusterManager::heartbeatTaskCallback() { auto it = memberList.find(ctx.hostname); if (it != memberList.end()) { NodeInfo& node = it->second; - node.lastSeen = millis(); - node.status = NodeInfo::ACTIVE; - node.uptime = millis(); // Update uptime - updateLocalNodeResources(); + updateLocalNodeResources(node); addOrUpdateNode(ctx.hostname, ctx.localIP); } @@ -481,23 +478,23 @@ void ClusterManager::printMemberList() { } } -void ClusterManager::updateLocalNodeResources() { - auto& memberList = *ctx.memberList; - auto it = memberList.find(ctx.hostname); - if (it != memberList.end()) { - NodeInfo& node = it->second; - uint32_t freeHeap = ESP.getFreeHeap(); - node.resources.freeHeap = freeHeap; - node.resources.chipId = ESP.getChipId(); - node.resources.sdkVersion = String(ESP.getSdkVersion()); - node.resources.cpuFreqMHz = ESP.getCpuFreqMHz(); - node.resources.flashChipSize = ESP.getFlashChipSize(); - - // Log memory warnings if heap is getting low - if (freeHeap < ctx.config.low_memory_threshold_bytes) { - LOG_WARN("Cluster", "Low memory warning: " + String(freeHeap) + " bytes free"); - } else if (freeHeap < ctx.config.critical_memory_threshold_bytes) { - LOG_ERROR("Cluster", "Critical memory warning: " + String(freeHeap) + " bytes free"); - } +void ClusterManager::updateLocalNodeResources(NodeInfo& node) { + // Update node status and timing + node.lastSeen = millis(); + node.status = NodeInfo::ACTIVE; + node.uptime = millis(); + + uint32_t freeHeap = ESP.getFreeHeap(); + node.resources.freeHeap = freeHeap; + node.resources.chipId = ESP.getChipId(); + node.resources.sdkVersion = String(ESP.getSdkVersion()); + node.resources.cpuFreqMHz = ESP.getCpuFreqMHz(); + node.resources.flashChipSize = ESP.getFlashChipSize(); + + // Log memory warnings if heap is getting low + if (freeHeap < ctx.config.low_memory_threshold_bytes) { + LOG_WARN("Cluster", "Low memory warning: " + String(freeHeap) + " bytes free"); + } else if (freeHeap < ctx.config.critical_memory_threshold_bytes) { + LOG_ERROR("Cluster", "Critical memory warning: " + String(freeHeap) + " bytes free"); } }