97 lines
4.1 KiB
C++
Executable File
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!
|
|
|
|
};
|
|
}
|