XNSim/XNCore_Win/XNFramework/XNFramework.cpp

213 lines
5.4 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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<XNTimeManager>();
d->threadManager = std::make_shared<XNThreadManager>();
d->configManager = std::make_shared<XNConfigManager>();
d->ddsManager = std::make_shared<XNDDSManager>();
d->modelManager = std::make_shared<XNModelManager>();
d->serviceManager = std::make_shared<XNServiceManager>();
d->eventManager = std::make_shared<XNEventManager>();
}
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