#include "XNFramework.h" #include "XNFramework_p.h" #include "XNConfigManager/XNConfigManager.h" #include "XNDDSManager/XNDDSManager.h" #include "XNEventManager/XNEventManager.h" #include "XNModelManager/XNModelManager.h" #include "XNServiceManager/XNServiceManager.h" #include "XNThreadManager/XNThreadManager.h" #include "XNTimeManager/XNTimeManager.h" namespace XNSim { XNFramework::XNFramework() : XNObject(new XNFrameworkPrivate()) { SetObjectName("XNFramework"); SetUniqueId(1); T_D(); d->timeManager = std::make_shared(); d->threadManager = std::make_shared(); d->configManager = std::make_shared(); d->ddsManager = std::make_shared(); d->modelManager = std::make_shared(); d->serviceManager = std::make_shared(); d->eventManager = std::make_shared(); } XNFramework::XNFramework(PrivateType *p) : XNObject(p) {} XNFramework::~XNFramework() {} XN_STRING XNFramework::GetWorkPath() { T_D(); return d->workPath; } void XNFramework::SetWorkPath(const XN_STRING &workPath) { T_D(); d->workPath = workPath; } XN_STRING XNFramework::GetModelPath() { T_D(); return d->modelPath; } void XNFramework::SetModelPath(const XN_STRING &modelPath) { T_D(); d->modelPath = modelPath; } XN_STRING XNFramework::GetServicePath() { T_D(); return d->servicePath; } void XNFramework::SetServicePath(const XN_STRING &servicePath) { T_D(); d->servicePath = servicePath; } XN_UINT32 XNFramework::GetCpuAffinity() { T_D(); return d->uCpuAffinity; } void XNFramework::SetCpuAffinity(XN_UINT32 cpuAffinity) { T_D(); d->uCpuAffinity = cpuAffinity; } XN_BOOL XNFramework::Initialize(XN_UINT32 initialType) { T_D(); LOG_INFO("D01054001:主框架正在初始化..."); d->ddsManager->SetFramework(XN_THISPTR); d->timeManager->SetFramework(XN_THISPTR); d->threadManager->SetFramework(XN_THISPTR); d->configManager->SetFramework(XN_THISPTR); d->modelManager->SetFramework(XN_THISPTR); d->serviceManager->SetFramework(XN_THISPTR); d->eventManager->SetFramework(XN_THISPTR); XN_BOOL ret = d->eventManager->Initialize(); if (!ret) { LOG_ERROR("B01052001:主框架初始化失败!"); return false; } ret = d->timeManager->Initialize(); if (!ret) { LOG_ERROR("B01052002:主框架初始化失败!"); return false; } ret = d->ddsManager->Initialize(); if (!ret) { LOG_ERROR("B01052003:主框架初始化失败!"); return false; } ret = d->serviceManager->Initialize(); if (!ret) { LOG_ERROR("B01052004:主框架初始化失败!"); return false; } ret = d->threadManager->Initialize(); if (!ret) { LOG_ERROR("B01052005:主框架初始化失败!"); return false; } ret = d->modelManager->Initialize(); if (!ret) { LOG_ERROR("B01052006:主框架初始化失败!"); return false; } ret = d->configManager->Initialize(); if (!ret) { LOG_ERROR("B01052007:主框架初始化失败!"); return false; } LOG_INFO("D01054002:主框架初始化成功!"); LOG_INFO("D01054003:开始解析构型文件 ..."); ret = d->configManager->AnalysisScenarioXml(d->scenarioXml, initialType); if (!ret) { LOG_ERROR("B01052008:主框架解析构型文件失败!"); return false; } LOG_INFO("D01054004:解析构型文件成功!"); return true; } XN_BOOL XNFramework::PrepareForExecute() { T_D(); XN_BOOL ret = d->eventManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->timeManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->ddsManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->serviceManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->threadManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->modelManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } ret = d->configManager->PrepareForExecute(); if (!ret) { LOG_ERROR("XNFramework PrepareForExecute Failed!"); return false; } LOG_INFO("XNCore is prepared for execute! Simulation will start soon..."); return true; } void XNFramework::SetScenarioXml(const XN_STRING &scenarioXml) { T_D(); d->scenarioXml = scenarioXml; } void XNFramework::SimControl(XN_UINT32 objectId, SimControlCmd cmd) { T_D(); d->timeManager->SimControl(objectId, cmd); d->threadManager->SimControl(objectId, cmd); } XNTimeManagerPtr XNFramework::GetTimeManager() { T_D(); return d->timeManager; } XNThreadManagerPtr XNFramework::GetThreadManager() { T_D(); return d->threadManager; } XNConfigManagerPtr XNFramework::GetConfigManager() { T_D(); return d->configManager; } XNDDSManagerPtr XNFramework::GetDDSManager() { T_D(); return d->ddsManager; } XNEventManagerPtr XNFramework::GetEventManager() { T_D(); return d->eventManager; } XNModelManagerPtr XNFramework::GetModelManager() { T_D(); return d->modelManager; } XNServiceManagerPtr XNFramework::GetServiceManager() { T_D(); return d->serviceManager; } } // namespace XNSim