9#include "../system/system_utils.h"
16 : m_stepCount(0), m_executionComplete(
false), m_executionSuccess(
false)
37 event.nodeId = nodeId;
38 event.nodeName = nodeName;
39 event.nodeType = nodeType;
41 event.message =
"Entering node";
49 event.nodeId = nodeId;
53 event.message =
"Exiting node, next: " + std::to_string(
nextNodeId);
57 event.message =
"Exiting node";
63 bool result,
const std::string& message)
67 event.nodeId = nodeId;
69 event.conditionResult = result;
71 event.message =
"Condition '" +
expression +
"' = " + (result ?
"TRUE" :
"FALSE");
74 event.message +=
" (" + message +
")";
83 event.nodeId = nodeId;
90 const std::string& errorMessage,
const std::string& severity)
94 event.nodeId = nodeId;
95 event.nodeName = nodeName;
97 event.message =
"[" + severity +
"] " + errorMessage;
110 event.nodeId = nodeId;
112 event.message =
"Execution blocked: " +
reason;
125 event.nodeId = nodeId;
127 event.message =
"Data pin '" + pinName +
"' = " + value;
140 event.message = message;
146 std::ostringstream
oss;
148 oss <<
"=== EXECUTION TRACE ===\n";
152 oss <<
"\n--- Event Log ---\n";
157 oss << std::setw(3) << (
i + 1) <<
". ";
190 if (
event.nodeId >= 0)
192 oss <<
"Node " << std::setw(3) <<
event.
nodeId;
193 if (!
event.nodeName.empty())
194 oss <<
" (" <<
event.nodeName <<
")";
198 oss <<
event.message <<
"\n";
206 std::ostringstream
oss;
208 oss <<
"Execution Summary:\n";
215 oss <<
" Error nodes: ";
218 if (
i > 0)
oss <<
", ";
ComponentTypeID GetComponentTypeID_Static()
Graph execution tracing for simulation and validation.
void RecordExecutionCompleted(bool success, const std::string &message)
Records graph execution completion.
void RecordBranchTaken(int32_t nodeId, const std::string &branchName, int32_t nextNodeId)
Records that a branch was taken based on condition.
void RecordNodeExited(int32_t nodeId, int32_t nextNodeId)
Records that execution exited a node successfully.
std::string GetTraceLog() const
Returns a formatted trace log as a multi-line string.
void Reset()
Clears all recorded events and resets state.
void RecordError(int32_t nodeId, const std::string &nodeName, const std::string &errorMessage, const std::string &severity="Error")
Records an execution error.
std::vector< int32_t > m_errorNodes
void RecordConditionEvaluated(int32_t nodeId, const std::string &expression, bool result, const std::string &message="")
Records a condition evaluation result.
void RecordExecutionBlocked(int32_t nodeId, const std::string &reason)
Records that execution was blocked (dead-end, etc.).
void RecordNodeEntered(int32_t nodeId, const std::string &nodeName, const std::string &nodeType)
Records that execution entered a node.
void AddEvent(const ExecutionEvent &event)
void RecordDataPinResolved(int32_t nodeId, const std::string &pinName, const std::string &value)
Records data pin resolution.
std::vector< ExecutionEvent > m_events
std::string GetExecutionSummary() const
Returns a summary of the execution (steps, errors, etc.).
< Provides AssetID and INVALID_ASSET_ID
@ ExecutionBlocked
Execution was blocked (dead-end path, etc.)
@ BranchTaken
A branch condition was true.
@ NodeEntered
Execution entered a node.
@ DataPinResolved
A data pin was resolved.
@ ConditionEvaluated
A condition was evaluated.
@ ErrorOccurred
An error happened during execution.
@ ExecutionCompleted
Graph execution completed.
@ NodeExited
Execution exited a node.
A single event recorded during graph execution trace.