/** * DdsHandler for DDS * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2015-09-02 */ #include "dds_handler.h" #include "esm_dts.h" #include "esm_fts.h" namespace EffectShowManagement { DdsHandler::DdsHandler(const std::shared_ptr &ddsConnector) : m_ddsConnector(ddsConnector) , m_logger(getLogger("DdsHandler")) { DEBUG_LOG(m_logger) << "DdsHandler(" << m_ddsConnector->getDomainId() << ") for partition: " << m_ddsConnector->getDefaultPartition(); } bool DdsHandler::init(const QStringList &qosFileList) { INFO_LOG(m_logger) << "--- StartEffectShowManagement DDSHandler."; if (!m_ddsConnector->init(qosFileList)) { ERROR_LOG(m_logger) << "Error initializing dds connections - aborting"; return false; } // default initialize Publisher and Subscriber m_ddsConnector->initPublisherSubscriber(); m_topicLockMaster = std::make_shared(m_ddsConnector); m_dtcCore = Core::Interface::Dtc::create(m_ddsConnector); m_dtcCore->enablePartitionTime(); m_ddsDts = EffectShowManagement::Interface::Dts::create(m_ddsConnector); m_ddsFts = EffectShowManagement::Interface::Fts::create(m_ddsConnector); if (!m_ddsDts->enableAll()) { ERROR_LOG(m_logger) << "Could not Dts enableAll"; return false; } if (!m_ddsFts->enableAll()) { ERROR_LOG(m_logger) << "Could not Fts enableAll"; return false; } // Subsribe for AreaEffectSimulation m_dtcAes = AreaEffectSimulation::Interface::Dtc::create(m_ddsConnector); if (!m_dtcAes->enableExplosionArea()) { ERROR_LOG(m_logger) << "Could not initialize enableExplosionArea data topic client"; return false; } if (!m_dtcAes->enableExplosionSingle()) { ERROR_LOG(m_logger) << "Could not initialize enableExplosionArea data topic client"; return false; } if (!m_dtcAes->enableMineArea()) { ERROR_LOG(m_logger) << "Could not initialize enableMineArea data topic client"; return false; } // add FTC for AreaEffectSimulation m_ftcAes = AreaEffectSimulation::Interface::Ftc::create(m_ddsConnector); if (!m_ftcAes->enableSetAesItemEffectorState(true)) { ERROR_LOG(m_logger) << "Could not initialize enableSetAesItemEffectorState data topic client"; return false; } // Subsribe for Participant Management m_dtcPpm = ParticipantManagement::Interface::Dtc::create(m_ddsConnector); if (!m_dtcPpm->enableParticipant()) { ERROR_LOG(m_logger) << "Could not initialize Participant data topic client"; return false; } if (!m_dtcPpm->enableType()) { ERROR_LOG(m_logger) << "Could not initialize Participant type data topic client"; return false; } m_dtcPpm->waitForHistoricalDataType(); // Subscripe for Project Data Management m_dtcPdm = ProjectDataManagement::Interface::Dtc::create(m_ddsConnector); if (!m_dtcPdm->enableChargeType()) { ERROR_LOG(m_logger) << "Error initializing ProjectDataManagement DTC"; return false; } // Subscripe for Meteo Data Management m_dtcMdm = MeteoDataManagement::Interface::Dtc::create(m_ddsConnector); if (!m_dtcMdm->enableMeteoData()) { ERROR_LOG(m_logger) << "Error initializing MeteoDataManagement DTC"; return false; } // Subscripe for Training Area Base m_dtcTab = TrainingAreaBase::Interface::Dtc::create(m_ddsConnector); if (!m_dtcTab->enableFireSmokeMarkerData()) { ERROR_LOG(m_logger) << "Error initializing TrainingAreaBase DTC"; return false; } m_ftcTab = TrainingAreaBase::Interface::Ftc::create(m_ddsConnector); if (!m_ftcTab->enableSendFireSmokeMarkerData()) { ERROR_LOG(m_logger) << "Error initializing TrainingAreaBase FTC"; return false; } if (!m_ftcTab->enableAdlerFqFb()) { ERROR_LOG(m_logger) << "Error initializing TrainingAreaBase FTC"; return false; } return true; } //----------------------------------------------------------------------------- qint64 DdsHandler::currentPartitionTime() const { return m_dtcCore->partitionTime().timeStamp(); } } // namespace EffectShowManagement