/** * Handler for all oc data at the server * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLST, 14-02-2018 */ #pragma once #include "main_handler.h" #include "logger.h" #include #include #include namespace OcSituationServer { class ThreadOcCentralAesData; class ThreadOcSituationData; class HandlerOcAesData; class HandlerOcData : public QObject , protected Interface::Fts::SendEquipmentMessageOcRequestHandler , protected Interface::Fts::EquipmentErrorRequestHandler , protected Evaluations::Interface::Ftc::EvlCommentModifyReplyHandler , protected Messaging::Interface::Ftc::CreateOperatorMessageReplyHandler , protected ParticipantManagement::Interface::Ftc::RegisterParticipantReplyHandler , protected TrainingAreaBase::Interface::Ftc::SendOcDataReplyHandler { Q_OBJECT public: explicit HandlerOcData(MainHandler *mainHandler, QObject *parent = nullptr); ~HandlerOcData(); bool init(); protected: void onEvlCommentModifyReply(const Core::FunctionReplyObject &reply) override final; void onCreateOperatorMessageReply(const Core::FunctionReplyObject &reply) override final; void onSendOcDataReply(const Core::FunctionReplyObject &reply) override final; void onRegisterParticipantReply(const ParticipantManagement::RegisterReply &reply) override final; private slots: void onEvaluationSchemaChanged(const Evaluations::EvaluationSchema &data, DataModification modType); void onOcDataChanged(const TrainingAreaBase::OcData &data, DataModification modType); void onSendOcData(const TrainingAreaBase::SendOcDataRequest &req); void sendStateInformation(); void onSituationThreadExit(); void onCentralAesThreadExit(); private: void onSendEquipmentMessageOcRequest(const rti::core::SampleIdentity &cookie, const SendEquipmentMessageRequest &request) override final; void onEquipmentErrorRequest(const rti::core::SampleIdentity &cookie, const EquipmentErrorRequest &request) override final; void handleDemandSituation(const QByteArray &data, int equipmentId); void handleDemandEvaluationSchema(const QByteArray &data, int equipmentNumber); void handleEvaluation(const QByteArray &data); void handleMessage(const QByteArray &data); void handleEquipmentErrorRegistration(const QByteArray &data); void handleEquipmentRegistration(const QByteArray &data); MainHandler *m_mainHandler; HandlerOcAesData *m_handlerOcAesData; std::shared_ptr m_dts; std::shared_ptr m_fts; std::shared_ptr m_evlDtc; std::shared_ptr m_evlFtc; std::shared_ptr m_msgFtc; std::shared_ptr m_ppmDtc; std::shared_ptr m_ppmFtc; std::shared_ptr m_tabDtc; std::shared_ptr m_tabFtc; int m_currentActiveEvaluationSchemaId; QMap m_situationThreads; // equipmentId, thread for situation data handling QMap m_centralAesDataThreads; // equipmentId, thread for central aes data handling QMutex m_accessMutex; // Mutex-Object QTimer *m_stateInformationTimer; NGL::INGLLogger &m_logger; }; }