/** * Send / Receive telegrams to/from Hla * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-09-26 */ #include "main_dispatcher.h" #include "main_handler_tx.h" #include "hla_dispatcher.h" #include "hla_handler_tx.h" #include #include namespace ApHlaJson { MainDispatcher::MainDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb, const std::shared_ptr &sendToTab, NGL::Settings *settings) : m_hlaDispatcher(nullptr) , m_recvFromTabCb(recvFromTabCb) , m_sendToTab(sendToTab) , m_mainHandlerTx(nullptr) , m_pdp(pdp) , m_settings(settings) , m_logger(getLogger("MainDispatcher")) , m_domainId(pdp->domainId()) , m_exerciseId(pdp->exerciseId()) { INFO_LOG(m_logger) << "ApHla started, Domain Id: " << m_domainId << " ExerciseId: " << m_exerciseId; } MainDispatcher::~MainDispatcher() { m_mainHandlerTx = nullptr; m_recvFromTabCb = nullptr; m_ddsHandler = nullptr; m_ppmHandler = nullptr; m_pdmHandler = nullptr; m_aesHandler = nullptr; delete m_hlaDispatcher; } bool MainDispatcher::init() { m_ddsHandler = std::make_shared(m_domainId, m_exerciseId); if (!m_ddsHandler->init()) return false; m_pdmHandler = std::make_shared(); m_pdmHandler->init(this); m_ppmHandler = std::make_shared(); m_ppmHandler->init(this); m_aesHandler = std::make_shared(); m_aesHandler->init(this); m_hlaDispatcher = new HlaDispatcher(m_pdp, m_recvFromTabCb, m_sendToTab, m_settings, m_ppmHandler, m_pdmHandler, m_aesHandler); m_mainHandlerTx = std::make_shared(std::dynamic_pointer_cast(m_hlaDispatcher->sendToTab())); m_hlaDispatcher->init(); m_hlaDispatcher->connectWebsocket(); return true; } std::shared_ptr MainDispatcher::sendToTab() { return std::static_pointer_cast(m_mainHandlerTx); } bool MainDispatcher::canSendData() const { return m_hlaDispatcher->canSendData(); } void MainDispatcher::exerciseChanged() { m_hlaDispatcher->exerciseChanged(); } } // namespace ApHlaJson