/** * Handler for table-io message data request * $Id$ * $HeadURL$ * $Author$ * Created by hjl, SLSE, 2016-10-12 */ #pragma once #include #include "dds_handler.h" #include "exercises_handler.h" #include "logger.h" #include #include #include #include namespace Messaging { class HandlerOperatorMessage final : public QObject , protected Interface::Fts::CreateOperatorMessageRequestHandler , protected Interface::Fts::ModifyOperatorMessageRequestHandler { Q_OBJECT public: explicit HandlerOperatorMessage(const std::shared_ptr &ddsHandler, const std::shared_ptr &db, const std::shared_ptr &exercisesHandler, QObject *parent = nullptr); bool init(); private Q_SLOTS: void onMesssageFromTrainingArea(const TrainingAreaBase::EquipmentMessage &data); void onEquipmentMessageChanged(const TrainingAreaBase::EquipmentMessage &data, const DataModification modType); void onOperatorChanged(const OperatorManagement::User &data); private: // methods void onCreateOperatorMessageRequest(const rti::core::SampleIdentity &cookie, const CreateOperatorMessageRequest &request) override; Core::FunctionReplyObject createOperatorMessageRequest(const CreateOperatorMessageRequest &request); void onModifyOperatorMessageRequest(const rti::core::SampleIdentity &cookie, const ModifyOperatorMessageRequest &request) override; // convert methodes static OperatorMessage toDdsData(const Database::MsgMessageData &dbData); // db -> dds QString toAddressStr(const AddressType addressType, const qint32 addressId, int exerciseId); Core::FunctionReplyObject insertInDbAndPublish(Database::MsgMessageData newMsg); Core::FunctionReplyObject modifyDbAndPublish(const Database::MsgMessageData &modMsg); private: // attributes std::shared_ptr m_ddsHandler; std::shared_ptr m_db; std::shared_ptr m_exercisesHandler; QMap m_dbOperatorMessageData; std::shared_ptr m_opmDtc; //std::shared_ptr m_ppmDtc; QMap m_operatorMap; NGL::INGLLogger &m_logger; static const unsigned int m_maxSubjectLength = 80; static const unsigned int m_maxOcContentLength = 1024; }; } // namespace Messaging