Files
qt5-legatus-legacy/Lts/Services/AreaEffectSimulation/dds_handler.h
T

103 lines
3.9 KiB
C++
Executable File

/**
* DdsInterface for Aes
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <DDS/DDSConnector/dds_connector.h>
#include <AreaEffectSimulation/aes_dts.h>
#include <AreaEffectSimulation/aes_fts.h>
#include <Core/core_dtc.h>
#include <Core/topic_lock_master.h>
#include <ProjectDataManagement/pdm_dtc.h>
#include <ParticipantManagement/ppm_dtc.h>
#include <TrainingAreaBase/tab_ftc.h>
#include <CentralEffectSimulation/ces_ftc.h>
#include <AssetManagement/asm_dtc.h> // For Elevation
#include <ExerciseManagement/exm_dtc.h> // For Elevation
#include <InfrastructureManagement/ism_dtc.h>
#include "logger.h"
#include <QDateTime>
#include <QElapsedTimer>
namespace Core
{
class Pacemaker;
namespace Interface
{
class Dts;
}
}
namespace TrainingAreaBase
{
class EquipmentState;
namespace Interface
{
class Dtc;
}
}
namespace AreaEffectSimulation
{
class DdsHandler : public QObject
{
Q_OBJECT
public:
DdsHandler(int domainId,
int exerciseId,
QObject *parent = nullptr);
~DdsHandler();
bool init(const QStringList &qosFileList = QStringList());
std::shared_ptr<Core::Pacemaker> pacemaker() const { return m_pacemaker; }
QDateTime currentPartitionTime() const;
qint64 currentPartitionTimeMSec() const;
std::shared_ptr<AreaEffectSimulation::Interface::Dts> dts() const { return m_ddsDts; }
std::shared_ptr<AreaEffectSimulation::Interface::Fts> fts() const { return m_ddsFts; }
std::shared_ptr<TrainingAreaBase::Interface::Dtc> tabDtc() const { return m_tabDtc; }
std::shared_ptr<TrainingAreaBase::Interface::Ftc> tabFtc() const { return m_tabFtc; }
std::shared_ptr<ProjectDataManagement::Interface::Dtc> pdmDtc() const { return m_pdmDtc; }
std::shared_ptr<ParticipantManagement::Interface::Dtc> ppmDtc() const { return m_ppmDtc; }
std::shared_ptr<CentralEffectSimulation::Interface::Ftc> cesFtc() const { return m_cesFtc; }
std::shared_ptr<AssetManagement::Interface::Dtc> asmDtc() const { return m_asmDtc; }
std::shared_ptr<ExerciseManagement::Interface::Dtc> exmDtc() const { return m_exmDtc; }
std::shared_ptr<InfrastructureManagement::Interface::Dtc> ismDtc() const{ return m_ismDtc; }
std::shared_ptr<DDSConnector::DdsConnector> ddsConnector() const { return m_ddsConnector; }
std::shared_ptr<Core::TopicLockMaster> topicLockMaster() const { return m_topicLockMaster; }
int exerciseId() const { return ddsConnector()->getPartitionId(); }
ProjectDataManagement::ChargeType getChargeType(int chargeTypeId);
private slots:
void onPartitionTimeChanged(const Core::PartitionTime &currentTime);
private:
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
std::shared_ptr<Core::Interface::Dtc> m_dtcCore;
std::shared_ptr<Core::Pacemaker> m_pacemaker;
std::shared_ptr<Core::TopicLockMaster> m_topicLockMaster;
std::shared_ptr<AreaEffectSimulation::Interface::Dts> m_ddsDts;
std::shared_ptr<AreaEffectSimulation::Interface::Fts> m_ddsFts;
std::shared_ptr<TrainingAreaBase::Interface::Dtc> m_tabDtc;
std::shared_ptr<TrainingAreaBase::Interface::Ftc> m_tabFtc;
std::shared_ptr<ProjectDataManagement::Interface::Dtc> m_pdmDtc;
std::shared_ptr<ParticipantManagement::Interface::Dtc> m_ppmDtc;
std::shared_ptr<CentralEffectSimulation::Interface::Ftc> m_cesFtc;
std::shared_ptr<AssetManagement::Interface::Dtc> m_asmDtc;
std::shared_ptr<ExerciseManagement::Interface::Dtc> m_exmDtc;
std::shared_ptr<InfrastructureManagement::Interface::Dtc> m_ismDtc;
QElapsedTimer m_elapsedTimer;
qint64 m_currentTimeMSec;
NGL::INGLLogger &m_logger;
};
}