213 lines
5.4 KiB
C++
213 lines
5.4 KiB
C++
#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
|