/** * @file XNEngine.h * @author jinchao * @brief 引擎类 * @version 1.0 * @date 2025-02-14 * * @copyright Copyright (c) 2025 COMAC * */ #include "../XNCore/XNFramework.h" #include #include "../XNCore/XNIDL/XNSimStatusPubSubTypes.hpp" /** * @brief 引擎类 */ class XNEngine { public: /** * @brief 构造函数 * @param parent 父对象 */ explicit XNEngine(); /** * @brief 析构函数 */ ~XNEngine(); /** * @brief 仿真控制监听器 * @param cmd 仿真控制命令 */ void SimControlListener(const XNSim::XNSimControl::XNRuntimeControl &cmd); public: /** * @brief 运行引擎 * @param XmlPath 场景XML路径 * @return 是否成功 */ bool Run(const std::string &XmlPath); /** * @brief 运行引擎 * @param ConfigId 构型ID * @return 是否成功 */ bool Run(const uint32_t &ConfigId); /** * @brief 设置测试模式 * @param isTestMode 是否为测试模式 */ void SetTestMode(bool isTestMode); private: /** * @brief 设置日志级别 * @param XmlPath 场景XML路径 * @return 是否成功 */ bool SetLogLevel(const std::string &XmlPath); /** * @brief 发布引擎状态 */ void PublishEngineStatus(); /** * @brief 是否为测试模式 */ bool isTestMode; /** * @brief 初始化类型 */ uint32_t initializeType; /** * @brief 主框架 */ XNFrameworkPtr framework; /** * @brief 主框架状态 */ XNFrameObjectStatus frameworkStatus; /** * @brief 引擎状态写入器 */ eprosima::fastdds::dds::DataWriter *engineStatusWriter; /** * @brief CPU亲和性 */ unsigned int CPUAffinity; /** * @brief 引擎运行标志 */ std::atomic engineRunning{false}; };