XNSim/XNCore/XNFramework.cpp

234 lines
4.9 KiB
C++
Executable File

#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>();
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);
}
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;
}
void XNFramework::Initialize(uint32_t initialType)
{
T_D();
LOG_INFO("XNFramework Initialize ...");
bool ret = d->eventManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->timeManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->ddsManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->serviceManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->threadManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->modelManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
ret = d->scenarioManager->Initialize();
if (!ret) {
LOG_ERROR("XNFramework Initialize Failed!");
return;
}
LOG_INFO("XNFramework Initialize Success!");
LOG_INFO("XNFramework Analyze Scenario Xml ...");
ret = d->scenarioManager->AnalysisScenarioXml(d->scenarioXml, initialType);
if (!ret) {
LOG_ERROR("XNFramework Analyze Scenario Xml Failed!");
return;
}
LOG_INFO("XNFramework Analyze Scenario Xml Success!");
}
void XNFramework::PrepareForExecute()
{
T_D();
bool ret = d->eventManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->timeManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->ddsManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->serviceManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->threadManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->modelManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
ret = d->scenarioManager->PrepareForExecute();
if (!ret) {
LOG_ERROR("XNFramework PrepareForExecute Failed!");
return;
}
LOG_INFO("XNCore is prepared for execute! Simulation will start soon...");
}
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;
}