#include #include "Globals.h" #include "NodeContext.h" #include "NetworkManager.h" #include "ClusterManager.h" #include "RestApiServer.h" NodeContext ctx; NetworkManager network(ctx); ClusterManager cluster(ctx); RestApiServer apiServer(ctx); Task tSendDiscovery(TaskIntervals::SEND_DISCOVERY, TASK_FOREVER, [](){ cluster.sendDiscovery(); }); Task tListenForDiscovery(TaskIntervals::LISTEN_FOR_DISCOVERY, TASK_FOREVER, [](){ cluster.listenForDiscovery(); }); Task tUpdateStatus(TaskIntervals::UPDATE_STATUS, TASK_FOREVER, [](){ cluster.updateAllNodeStatuses(); cluster.removeDeadNodes(); }); Task tPrintMemberList(TaskIntervals::PRINT_MEMBER_LIST, TASK_FOREVER, [](){ cluster.printMemberList(); }); Task tHeartbeat(TaskIntervals::HEARTBEAT, TASK_FOREVER, [](){ cluster.heartbeatTaskCallback(); }); Task tUpdateAllMembersInfo(TaskIntervals::UPDATE_ALL_MEMBERS_INFO, TASK_FOREVER, [](){ cluster.updateAllMembersInfoTaskCallback(); }); void setup() { network.setupWiFi(); ctx.scheduler->init(); ctx.scheduler->addTask(tSendDiscovery); ctx.scheduler->addTask(tListenForDiscovery); ctx.scheduler->addTask(tUpdateStatus); ctx.scheduler->addTask(tPrintMemberList); ctx.scheduler->addTask(tHeartbeat); ctx.scheduler->addTask(tUpdateAllMembersInfo); tSendDiscovery.enable(); tListenForDiscovery.enable(); tUpdateStatus.enable(); tPrintMemberList.enable(); tHeartbeat.enable(); tUpdateAllMembersInfo.enable(); apiServer.begin(); } void loop() { ctx.scheduler->execute(); }