#pragma once #include "Globals.h" #include "NodeContext.h" #include "NodeInfo.h" #include "TaskManager.h" #include #include #include #include #include class ClusterManager { public: ClusterManager(NodeContext& ctx, TaskManager& taskMgr); void registerTasks(); void sendDiscovery(); void listenForDiscovery(); void addOrUpdateNode(const String& nodeHost, IPAddress nodeIP); void updateAllNodeStatuses(); void removeDeadNodes(); void printMemberList(); const std::map& getMemberList() const { return *ctx.memberList; } void fetchNodeInfo(const IPAddress& ip); void updateLocalNodeResources(); void heartbeatTaskCallback(); void updateAllMembersInfoTaskCallback(); private: NodeContext& ctx; TaskManager& taskManager; };