/** * DdsHandler for DDS * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2016-01-13 */ #pragma once #include #include #include #include #include #include "logger.h" namespace SituationReplay { struct ConnectionParams { int domainId = 0; int partitionId = 0; int exerciseId = 0; QUrl discoveryPeer; }; class DdsHandler final { public: explicit DdsHandler(const SituationReplay::ConnectionParams &output); DdsHandler(const SituationReplay::ConnectionParams &input, const SituationReplay::ConnectionParams &output); ~DdsHandler(); bool init(const QStringList &qosFileList = QStringList()); void publishPartitionTime(const Core::PartitionTime &partitionTime); std::shared_ptr dts() const { return m_ddsDts; } std::shared_ptr fts() const { return m_ddsFts; } std::shared_ptr ddsExercise() const { return m_ddsConnectorExercise; } std::shared_ptr ddsReplay() const { return m_ddsConnectorReplay; } static bool parseOptions(const QString &opts, ConnectionParams ¶ms); private: void initReplayRouting(); private: std::shared_ptr m_ddsConnectorExercise; std::shared_ptr m_ddsConnectorReplay; std::shared_ptr m_ddsDts; std::shared_ptr m_ddsFts; std::unique_ptr m_dtsPartitionTime; std::unique_ptr m_sessionRouting; NGL::INGLLogger &m_logger; }; }