XNSim/XNCore/XNFramework.cpp

236 lines
5.1 KiB
C++
Executable File
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 "XNTimeManager.h"
#include "XNThreadManager.h"
#include "XNScenarioManager.h"
#include "XNDDSManager.h"
#include "XNModelManager.h"
#include "XNServiceManager.h"
#include "XNEventManager.h"
XNFramework::XNFramework() : XNObject(new XNFrameworkPrivate())
{
SetObjectName("XNFramework");
SetUniqueId(1);
T_D();
d->timeManager = std::make_shared<XNTimeManager>();
d->threadManager = std::make_shared<XNThreadManager>();
d->scenarioManager = std::make_shared<XNScenarioManager>();
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()
{
}
std::string XNFramework::GetWorkPath()
{
T_D();
return d->workPath;
}
void XNFramework::SetWorkPath(const std::string &workPath)
{
T_D();
d->workPath = workPath;
}
std::string XNFramework::GetModelPath()
{
T_D();
return d->modelPath;
}
void XNFramework::SetModelPath(const std::string &modelPath)
{
T_D();
d->modelPath = modelPath;
}
std::string XNFramework::GetServicePath()
{
T_D();
return d->servicePath;
}
void XNFramework::SetServicePath(const std::string &servicePath)
{
T_D();
d->servicePath = servicePath;
}
uint32_t XNFramework::GetCpuAffinity()
{
T_D();
return d->uCpuAffinity;
}
void XNFramework::SetCpuAffinity(uint32_t cpuAffinity)
{
T_D();
d->uCpuAffinity = cpuAffinity;
}
bool XNFramework::Initialize(uint32_t initialType)
{
T_D();
LOG_INFO("D01054001主框架正在初始化...");
d->ddsManager->SetFramework(XN_THISPTR);
d->timeManager->SetFramework(XN_THISPTR);
d->threadManager->SetFramework(XN_THISPTR);
d->scenarioManager->SetFramework(XN_THISPTR);
d->modelManager->SetFramework(XN_THISPTR);
d->serviceManager->SetFramework(XN_THISPTR);
d->eventManager->SetFramework(XN_THISPTR);
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->scenarioManager->Initialize();
if (!ret) {
LOG_ERROR("B01052007主框架初始化失败");
return false;
}
LOG_INFO("D01054002主框架初始化成功");
LOG_INFO("D01054003开始解析构型文件 ...");
ret = d->scenarioManager->AnalysisScenarioXml(d->scenarioXml, initialType);
if (!ret) {
LOG_ERROR("B01052008主框架解析构型文件失败");
return false;
}
LOG_INFO("D01054004解析构型文件成功");
return true;
}
bool XNFramework::PrepareForExecute()
{
T_D();
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->scenarioManager->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 std::string &scenarioXml)
{
T_D();
d->scenarioXml = scenarioXml;
}
void XNFramework::SimControl(uint32_t 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;
}
XNScenarioManagerPtr XNFramework::GetScenarioManager()
{
T_D();
return d->scenarioManager;
}
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;
}