Files
qt5-legatus-legacy/Lts/Services/InfrastructureManagement/handler_main_structure_element.h
T
2026-08-13 18:33:10 +02:00

97 lines
4.1 KiB
C++
Executable File

/**
* @RDE_HEADER@
* ISM Handler Main Structure Elements
* $Id$
* $HeadURL$
* $Author$
* Created by Iuliana Ojog, SLSE, 2016-11-26
*/
#pragma once
#include <QMap>
#include <QSet>
#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<int, ObjectMainStructureElement *> getMainStructureElementsMap() const
{
return m_objectMainStructureElementMap;
}
ObjectMainStructureElement *getMainStructureElement(int mseId)
{
return m_objectMainStructureElementMap.value(mseId, nullptr);
}
QMap<int, ObjectStructureElement *> getStructureElementMap() const
{
return m_objectStructureElementMap;
}
ObjectStructureElement *getStructureElement(int seId)
{
return m_objectStructureElementMap.value(seId, nullptr);
}
void publishMainStructureElement(int buildingId);
void removedStructureElements(const QMap<int, ObjectStructureElement *> &removedElements);
void addedStructureElements(const QMap<int, ObjectStructureElement *> &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<int, ObjectMainStructureElement *> m_objectMainStructureElementMap;
QMap<int, ObjectStructureElement *> m_objectStructureElementMap; // all structure element of all buildings, must be sorted!
};
}