/** * @RDE_HEADER@ * MainDispatcher for AdlerJson Plugin * $Id: main_dispatcher.cpp 62899 2024-05-29 11:08:50Z ewert_j $ * $HeadURL: svn://slssvn/TDS/branches/product/features/ufom/Lts/Proxies/TrainingAreaBase/Plugins/AdlerJson/main_dispatcher.cpp $ * $Author: ewert_j $ * Created by Julius Ewert, ESIM, 2024-03-20 */ #include "main_dispatcher.h" #include "TrainingAreaBase/dds_handler.h" #include "json_dispatcher.h" //#include "json_handler_tx.h" #include #include #include namespace AdlerJson { MainDispatcher::MainDispatcher(TrainingAreaBase::Plugin::DataProvider *pdp, const std::shared_ptr &recvFromTabCb, const std::shared_ptr &sendToTab, const std::shared_ptr &ddsHandler, NGL::Settings *settings) : m_adlerDispatcher(nullptr) , m_recvFromTabCb(recvFromTabCb) , m_sendToTab(sendToTab) , m_mainHandlerTx(nullptr) , m_pdp(pdp) , m_settings(settings) , m_ddsHandler(static_cast>(ddsHandler)) , m_domainId(pdp->domainId()) , m_exerciseId(pdp->exerciseId()) , m_logger(getLogger("MainDispatcher")) { INFO_LOG(m_logger) << "Plugin AdlerJson started"; } MainDispatcher::~MainDispatcher() { m_mainHandlerTx = nullptr; m_recvFromTabCb = nullptr; m_ddsHandler = nullptr; m_ppmHandler = nullptr; m_pdmHandler = nullptr; m_aesHandler = nullptr; m_flmHandler = nullptr; m_asmHandler = nullptr; delete m_adlerDispatcher; } bool MainDispatcher::init() { m_pdmHandler = std::make_shared(this); m_pdmHandler->init(this); m_asmHandler = std::make_shared(this); m_asmHandler->init(this); m_flmHandler = std::make_shared(this); m_flmHandler->init(this); m_ppmHandler = std::make_shared(this); m_ppmHandler->init(this); m_aesHandler = std::make_shared(m_ddsHandler->ftsTab(), this); m_aesHandler->init(this); m_ddsHandler->dtsTab()->enableEquipmentGearChargeState(); m_adlerDispatcher = new JsonDispatcher(m_pdp , m_recvFromTabCb , m_sendToTab , m_settings , m_ddsHandler , m_flmHandler , this); m_mainHandlerTx = m_adlerDispatcher->sendToTab(); m_adlerDispatcher->init(); connect(m_adlerDispatcher, &JsonDispatcher::websocketConnected, this, &MainDispatcher::onWebsocketConnected); m_adlerDispatcher->connectWebsocket(); return true; } void MainDispatcher::onWebsocketConnected(quint16 port) { ERROR_LOG(m_logger) << "ApAdler started, Domain Id: " << QString::number(port); m_ddsHandler->pacemaker()->addPort(port, Core::PortType::WebSocketAdlerServer); m_ddsHandler->pacemaker()->setNewState(Core::RunningState::Running); } std::shared_ptr MainDispatcher::sendToTab() { return std::static_pointer_cast(m_mainHandlerTx); } bool MainDispatcher::canSendData() const { return m_adlerDispatcher->canSendData(); } void MainDispatcher::exerciseChanged() { m_adlerDispatcher->exerciseChanged(); } } // namespace AdlerJson