diff --git a/docs/Architecture.md b/docs/Architecture.md index dfbb4ba..6bbeb12 100644 --- a/docs/Architecture.md +++ b/docs/Architecture.md @@ -140,7 +140,7 @@ The `NodeContext` provides an event-driven architecture for system-wide communic ```cpp // Subscribe to events -ctx.on("node_discovered", [](void* data) { +ctx.on("node/discovered", [](void* data) { NodeInfo* node = static_cast(data); // Handle new node discovery }); @@ -154,13 +154,13 @@ ctx.on("cluster_updated", [](void* data) { ```cpp // Publish events -ctx.fire("node_discovered", &newNode); +ctx.fire("node/discovered", &newNode); ctx.fire("cluster_updated", &clusterData); ``` ### Available Events -- **`node_discovered`**: New node added or local node refreshed +- **`node/discovered`**: New node added or local node refreshed ## Resource Monitoring diff --git a/src/spore/core/ClusterManager.cpp b/src/spore/core/ClusterManager.cpp index e86982e..50003d3 100644 --- a/src/spore/core/ClusterManager.cpp +++ b/src/spore/core/ClusterManager.cpp @@ -3,8 +3,8 @@ #include "spore/util/Logging.h" ClusterManager::ClusterManager(NodeContext& ctx, TaskManager& taskMgr) : ctx(ctx), taskManager(taskMgr) { - // Register callback for node_discovered event - ctx.on("node_discovered", [this](void* data) { + // Register callback for node/discovered event + ctx.on("node/discovered", [this](void* data) { NodeInfo* node = static_cast(data); this->addOrUpdateNode(node->hostname, node->ip); }); @@ -34,9 +34,8 @@ void ClusterManager::registerTasks() { taskManager.registerTask("cluster_discovery", ctx.config.discovery_interval_ms, [this]() { sendDiscovery(); }); taskManager.registerTask("cluster_listen", ctx.config.cluster_listen_interval_ms, [this]() { listen(); }); taskManager.registerTask("status_update", ctx.config.status_update_interval_ms, [this]() { updateAllNodeStatuses(); removeDeadNodes(); }); - taskManager.registerTask("print_members", ctx.config.print_interval_ms, [this]() { printMemberList(); }); taskManager.registerTask("heartbeat", ctx.config.heartbeat_interval_ms, [this]() { heartbeatTaskCallback(); }); - taskManager.registerTask("cluster_update_members_info", ctx.config.member_info_update_interval_ms, [this]() { updateAllMembersInfoTaskCallback(); }); + //taskManager.registerTask("print_members", ctx.config.print_interval_ms, [this]() { printMemberList(); }); LOG_INFO("ClusterManager", "Registered all cluster tasks"); } @@ -155,7 +154,10 @@ void ClusterManager::onHeartbeat(const char* /*msg*/) { void ClusterManager::onResponse(const char* msg) { char* hostPtr = const_cast(msg) + strlen(ClusterProtocol::RESPONSE_MSG) + 1; String nodeHost = String(hostPtr); - addOrUpdateNode(nodeHost, ctx.udp->remoteIP()); + NodeInfo discovered; + discovered.hostname = nodeHost; + discovered.ip = ctx.udp->remoteIP(); + ctx.fire("node/discovered", &discovered); } void ClusterManager::onNodeInfo(const char* msg) { @@ -169,7 +171,10 @@ void ClusterManager::onNodeInfo(const char* msg) { String nodeHost = String(hostCStr); IPAddress senderIP = ctx.udp->remoteIP(); - addOrUpdateNode(nodeHost, senderIP); + NodeInfo discovered; + discovered.hostname = nodeHost; + discovered.ip = senderIP; + ctx.fire("node/discovered", &discovered); JsonDocument doc; DeserializationError err = deserializeJson(doc, jsonCStr); @@ -392,7 +397,7 @@ void ClusterManager::heartbeatTaskCallback() { node.lastSeen = millis(); node.status = NodeInfo::ACTIVE; updateLocalNodeResources(); - ctx.fire("node_discovered", &node); + ctx.fire("node/discovered", &node); } // Broadcast heartbeat so peers can respond with their node info @@ -403,11 +408,6 @@ void ClusterManager::heartbeatTaskCallback() { ctx.udp->endPacket(); } -void ClusterManager::updateAllMembersInfoTaskCallback() { - // HTTP-based member info fetching disabled; node info is provided via UDP responses to heartbeats - // No-op to reduce network and memory usage -} - void ClusterManager::updateAllNodeStatuses() { auto& memberList = *ctx.memberList; unsigned long now = millis(); diff --git a/src/spore/core/NetworkManager.cpp b/src/spore/core/NetworkManager.cpp index d713fc4..0d17245 100644 --- a/src/spore/core/NetworkManager.cpp +++ b/src/spore/core/NetworkManager.cpp @@ -118,5 +118,5 @@ void NetworkManager::setupWiFi() { } // Notify listeners that the node is (re)discovered - ctx.fire("node_discovered", &ctx.self); + ctx.fire("node/discovered", &ctx.self); } diff --git a/test/ws-cluster-broadcast-rainbow.js b/test/ws-cluster-broadcast-rainbow.js index 9780e04..235135c 100644 --- a/test/ws-cluster-broadcast-rainbow.js +++ b/test/ws-cluster-broadcast-rainbow.js @@ -56,7 +56,7 @@ ws.on('open', () => { ws.on('message', (data) => { // Optionally throttle logs: comment out for quieter output - // console.log('WS:', data.toString()); + //console.log('WS:', data.toString()); }); ws.on('error', (err) => {