/** * @RDE_HEADER@ * ISM Handler Main Structure Elements * $Id$ * $HeadURL$ * $Author$ * Created by Iuliana Ojog, SLSE, 2016-11-26 */ #pragma once #include #include #include "main_handler.h" #include "base.h" //------------------------------------------------------------------------------------------------------------- namespace InfrastructureManagement { class ObjectMainStructureElement; class ObjectStructureElement; class MainHandler; class HandlerMainStructureElement : public Base , protected Interface::Fts::MainStructureElementModifyRequestHandler , protected Interface::Fts::MainStructureElementModifyBridgeStatusRequestHandler , protected Interface::Fts::MainStructureElementModifyPositionRequestHandler , protected Interface::Fts::MainStructureElementRemoveRequestHandler , protected Interface::Fts::StructureElementModifyRequestHandler , protected Interface::Fts::StructureElementUpdateEffectOverrideRequestHandler { public: explicit HandlerMainStructureElement(MainHandler *mainHandler); ~HandlerMainStructureElement(); bool init(); QHash getMainStructureElementsMap() const { return m_objectMainStructureElementMap; } ObjectMainStructureElement *getMainStructureElement(int mseId) { return m_objectMainStructureElementMap.value(mseId, nullptr); } QMap getStructureElementMap() const { return m_objectStructureElementMap; } ObjectStructureElement *getStructureElement(int seId) { return m_objectStructureElementMap.value(seId, nullptr); } void publishMainStructureElement(int buildingId); void removedStructureElements(const QMap &removedElements); void addedStructureElements(const QMap &addedElements); public slots: void onExerciseStateChanged(const ExerciseManagement::Exercise &data, DataModification mod); private: void onMainStructureElementModifyRequest(const rti::core::SampleIdentity &cookie, const MainStructureElementModifyRequest &request) override; Core::FunctionReplyObject onMainStructureElementCreate(const MainStructureElementModifyRequest &request); Core::FunctionReplyObject onMainStructureElementModify(const MainStructureElementModifyRequest &request); Core::FunctionReplyObject onStructureElementUpdateEffectOverrideModify(const StructureElementUpdateEffectOverrideRequest &request); void onMainStructureElementRemoveRequest(const rti::core::SampleIdentity &cookie, const MainStructureElementRemoveRequest &request) override; void onMainStructureElementModifyPositionRequest(const rti::core::SampleIdentity &cookie, const MainStructureElementModifyPositionRequest &request) override; void onMainStructureElementModifyBridgeStatusRequest(const rti::core::SampleIdentity &cookie, const MainStructureElementModifyBridgeStatusRequest &request) override; void onStructureElementModifyRequest(const rti::core::SampleIdentity &cookie, const StructureElementModifyRequest &request) override; void onStructureElementUpdateEffectOverrideRequest(const rti::core::SampleIdentity &cookie, const StructureElementUpdateEffectOverrideRequest &request) override; Core::FunctionReplyObject onStructureElementModify(const StructureElementModifyRequest &request); void changeBuildingNameinMountingPoints(const StructureElement &se, MainStructureElementModifyRequest &mseData); static void udpatePropertiesForRelayOverride(const int relay, const InfrastructureManagement::EffectOverride state, InfrastructureManagement::StructureElement &se); private: QHash m_objectMainStructureElementMap; QMap m_objectStructureElementMap; // all structure element of all buildings, must be sorted! }; }