Skip to content

EntropyEngine::Core::Concurrency::NodeReadyEvent

EntropyEngine::Core::Concurrency::NodeReadyEvent

Section titled “EntropyEngine::Core::Concurrency::NodeReadyEvent”

All dependencies satisfied - this node is ready to rock! More…

#include <WorkGraphEvents.h>

Inherits from EntropyEngine::Core::Concurrency::WorkGraphEvent

Name
NodeReadyEvent(const WorkGraph * g, NodeHandle n)
Name
NodeHandlenode
The node that’s ready to execute.

Public Functions inherited from EntropyEngine::Core::Concurrency::WorkGraphEvent

Name
WorkGraphEvent(const WorkGraph * g)

Public Attributes inherited from EntropyEngine::Core::Concurrency::WorkGraphEvent

Name
std::chrono::steady_clock::time_pointtimestamp
When this event was created.
const WorkGraph *graph
Which graph emitted this event.
struct EntropyEngine::Core::Concurrency::NodeReadyEvent;

All dependencies satisfied - this node is ready to rock!

Fired when a node transitions from Pending to Ready. This means all its parent nodes have completed successfully and it’s eligible for scheduling. The actual scheduling might be delayed if the work queue is full.

// Track scheduling latency
std::unordered_map<NodeHandle, TimePoint> readyTimes;
eventBus->subscribe<NodeReadyEvent>([&readyTimes](const auto& event) {
readyTimes[event.node] = std::chrono::steady_clock::now();
});
eventBus->subscribe<NodeScheduledEvent>([&readyTimes](const auto& event) {
auto it = readyTimes.find(event.node);
if (it != readyTimes.end()) {
auto delay = std::chrono::steady_clock::now() - it->second;
LOG_DEBUG("Scheduling delay: {}μs",
std::chrono::duration_cast<std::chrono::microseconds>(delay).count());
}
});
inline NodeReadyEvent(
const WorkGraph * g,
NodeHandle n
)
NodeHandle node;

The node that’s ready to execute.


Updated on 2026-01-26 at 17:14:35 -0500