/** * Handler for all oc situation data at the client * $Id: handler_oc_situation_data.h 57655 2022-07-20 11:38:28Z karwat $ * $HeadURL: svn://192.168.133.21/TDS/branches/product/features/3dws_devel/Lts/Services/OcSituationClient/handler_oc_situation_data.h $ * $Author: karwat $ * Created by Philipp Dassow, NLST, 01-03-2018 */ #pragma once #include #include #include #include #include #include #include #include "logger.h" namespace OcSituationClient { class HandlerOcCentralAesData : public QObject , protected AreaEffectSimulation::Interface::Ftc::NContaminationModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::BCContaminationModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::ExplosionAreaModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::ExplosionSingleModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::MineAreaModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::FunctionalAreaModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::BoobyTrapModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::OffRouteMineModifyReplyHandler , protected AreaEffectSimulation::Interface::Ftc::ExplosionClusterOcModifyReplyHandler { Q_OBJECT public: explicit HandlerOcCentralAesData(const std::shared_ptr &aesDtc, const std::shared_ptr &aesFtc, const std::shared_ptr &tabocDts, QObject *parent); ~HandlerOcCentralAesData(); bool init(); void process(const QByteArray &data, bool bIsInitial); void removeAllCentralAesItems(); bool withCompression() const { return m_bWithCompression; } void setWithCompression(bool bOn) { m_bWithCompression = bOn; } bool withVBGTime() const { return m_bWithVBGTime; } void setWithVBGTime(bool bOn) { m_bWithVBGTime = bOn; } private Q_SLOTS: void onNContaminationChanged(const AreaEffectSimulation::NContamination &data, DataModification modType); void onBCContaminationChanged(const AreaEffectSimulation::BCContamination &data, DataModification modType); void onExplosionAreaChanged(const AreaEffectSimulation::ExplosionArea &data, DataModification modType); void onExplosionSingleChanged(const AreaEffectSimulation::ExplosionSingle &data, DataModification modType); void onMineAreaChanged(const AreaEffectSimulation::MineArea &data, DataModification modType); void onFunctionalAreaChanged(const AreaEffectSimulation::FunctionalArea &data, DataModification modType); void onBoobyTrapChanged(const AreaEffectSimulation::BoobyTrap &data, DataModification modType); void onOffRouteMineChanged(const AreaEffectSimulation::OffRouteMine &data, DataModification modType); void onExplosionClusterChanged(const AreaEffectSimulation::ExplosionCluster &data, DataModification modType); private: template void onAesItemChanged(const T &aesItem, DataModification modType, AreaEffectSimulation::AesType aesType); template void checkId(T &aesItem) const; void tryRemoveAesItem(qint32 aesItemId, AreaEffectSimulation::AesType aesType); void removeAesItem(qint32 aesItemId, int64_t (AreaEffectSimulation::Interface::Ftc::*removeFunction)(const Core::RemoveElementRequest &, const std::function &)); void onOffRouteMineModifyReply(const Core::FunctionReplyObject &reply) override final; void onBoobyTrapModifyReply(const Core::FunctionReplyObject &reply) override final; void onFunctionalAreaModifyReply(const Core::FunctionReplyObject &reply) override final; void onMineAreaModifyReply(const Core::FunctionReplyObject &reply) override final; void onExplosionSingleModifyReply(const Core::FunctionReplyObject &reply) override final; void onExplosionAreaModifyReply(const Core::FunctionReplyObject &reply) override final; void onBCContaminationModifyReply(const Core::FunctionReplyObject &reply) override final; void onNContaminationModifyReply(const Core::FunctionReplyObject &reply) override final; void onExplosionClusterOcModifyReply(const Core::FunctionReplyObject &reply) override final; void onReply(const Core::FunctionReplyObject &reply) const; private: std::shared_ptr m_aesDtc; std::shared_ptr m_aesFtc; std::shared_ptr m_tabocDts; // aes item id, paired to AesType QHash m_allCentralAesItems; // options, must be in sync with oss bool m_bWithCompression = true; bool m_bWithVBGTime = true; LOGGER_T &m_logger; }; } // namespace OcSituationClient