Modified the way content passed between connectors, now content is passed via "Package" && Improved the execution flow of MSG_Input_Node && Fixed the workflow execution.

This commit is contained in:
2026-05-07 13:04:11 +08:00
parent 3ec4327d45
commit 68fba7efd5
3 changed files with 148 additions and 33 deletions
+34 -6
View File
@@ -6,6 +6,7 @@
#include "imgui.h"
#include "imnodes.h"
#include "ID_Generator.hpp"
#include "DLT_Utilities.hpp"
#include "Json_Utilities.hpp"
// =====================================接口抽象======================================================
@@ -20,6 +21,14 @@ public:
CONNECTOR_TYPE_INPUT, // 输入
} Connector_Type_Enum; // 接口类型枚举
typedef struct
{
size_t package_count = 0; // 包计数 (常规非0)
size_t total_count = 0; // 总计数 (常规非0,不定长包时为0)
void *p_content_mem = nullptr; // 包存储
size_t content_size = 0; // 包大小
} Package; // 接口包定义
protected:
// ID 分配器
Independent_ID_Generator *ID_Generator;
@@ -29,7 +38,7 @@ protected:
const char *socket_str; // 套接字字符串
std::vector<Abs_Connector *> related_connector_list; // 关联列表
void *product; // 产物(仅输出类节点持有)
Package pkg; // 接口包(仅输出类节点持有)
public:
// 显式禁用默认构造
@@ -50,15 +59,21 @@ public:
// 与指定的接口断开连接
virtual bool Disconnect_To(Abs_Connector *target);
// 注册产物
virtual bool Register_Product(void *product, size_t size);
/**
* 注册包
* @param p_content 目标容物指针
* @param content_size 容物大小
* @param count 当前包位置
* @param total_count 包流总长度
*/
virtual bool Register_Package(void *p_content, size_t content_size, size_t count, size_t total_count);
// 获取包
virtual const Package Get_Package(void);
// 获取关联接口列表
virtual std::vector<Abs_Connector *> Get_Related_List(void);
// 获取产物
virtual void *Get_Product(void);
// 获取ID
virtual int Get_ID(void);
@@ -222,7 +237,20 @@ class MSG_Input_Node : public Abs_Node
private:
float node_width = 0;
DLT_Log log;
// 执行相关
bool excute_flag = false;
size_t private_excute_count = 0;
size_t private_excute_end_count = 0;
bool private_finish_flag = false;
public:
// 只读引用
const bool &finish_flag = this->private_finish_flag;
const size_t &excute_count = this->private_excute_count;
const size_t &excute_end_count = this->private_excute_end_count;
// 显式禁用默认构造
MSG_Input_Node() = delete;