/** * Handler for all oc data at the client * $Id$ * $HeadURL$ * $Author$ * Created by Philipp Dassow, NLST, 20-02-2018 */ #pragma once #include #include #include #include "main_handler.h" #include "logger.h" namespace OcSituationClient { class HandlerOcAesData; class HandlerOcSituationData; class HandlerOcCentralAesData; class HandlerOcData : public QObject , protected Interface::Fts::SendDemandEvaluationSchemaRequestHandler , protected Interface::Fts::SendEvaluationRequestHandler , protected Interface::Fts::SendDemandSituationRequestHandler , protected Interface::Fts::SendEquipmentErrorRegistrationRequestHandler , protected Interface::Fts::SendEquipmentRegistrationRequestHandler , protected OcSituationServer::Interface::Fts::SendEquipmentMessageOcRequestHandler , protected Messaging::Interface::Ftc::CreateOperatorMessageReplyHandler , protected Messaging::Interface::Ftc::ModifyOperatorMessageReplyHandler , protected Evaluations::Interface::Ftc::EvlSchemaModifyReplyHandler , protected TrainingAreaBase::Interface::Ftc::SendOcDataReplyHandler { Q_OBJECT public: explicit HandlerOcData(MainHandler *mainHandler, QObject *parent = nullptr); ~HandlerOcData(); bool init(); protected: void onEvlSchemaModifyReply(const Core::FunctionReplyObject &reply) override final; void onCreateOperatorMessageReply(const Core::FunctionReplyObject &reply) override final; void onModifyOperatorMessageReply(const Core::FunctionReplyObject &reply) override final; void onSendOcDataReply(const Core::FunctionReplyObject &reply) override final; private slots: void onOcDataChanged(const TrainingAreaBase::OcData &data, DataModification modType); void onTechnicalStateSfmChanged(const TrainingAreaBaseOC::TechnicalStateSfm &data, DataModification modType); void onOwnPosition(const TrainingAreaBaseOC::OwnPosition &data, DataModification modType); void onOperatorMessageChanged(const Messaging::OperatorMessage &data, DataModification modType); void situationRequestCycleTimeout(); void onUserChanged(const OperatorManagement::User &data, DataModification modType); private: void onSendDemandEvaluationSchemaRequest(const rti::core::SampleIdentity &cookie, const SendDemandEvaluationSchemaRequest &request) override final; void onSendEvaluationRequest(const rti::core::SampleIdentity &cookie, const SendEvaluationRequest &request) override final; void onSendDemandSituationRequest(const rti::core::SampleIdentity &cookie, const SendDemandSituationRequest &request) override final; void onSendEquipmentMessageOcRequest(const rti::core::SampleIdentity &cookie, const OcSituationServer::SendEquipmentMessageRequest &request) override final; void onSendEquipmentErrorRegistrationRequest(const rti::core::SampleIdentity &cookie, const SendEquipmentErrorRegistrationRequest &request) override final; void onSendEquipmentRegistrationRequest(const rti::core::SampleIdentity &cookie, const SendEquipmentRegistrationRequest &request) override final; void demandEvaluationSchema(int schemaId); void demandSituation(bool initial = false); void demandAesItems(OcSituation::AesType aesType); void sendNewMessages(); void handleMessage(const QByteArray &data); void handleEvaluationSchema(const QByteArray &data); void handleStateInformation(const QByteArray &data); void setResetCnt(OcSituation::AesType aesType, int resetCnt); int getParticipantIdByEquipmentNumber(int eqNumber); std::shared_ptr m_fts; std::shared_ptr m_evlFtc; std::shared_ptr m_msgDtc; std::shared_ptr m_msgFtc; std::shared_ptr m_opmDtc; std::shared_ptr m_ossFts; std::shared_ptr m_ppmDtc; std::shared_ptr m_tabDtc; std::shared_ptr m_tabDts; std::shared_ptr m_tabFtc; std::shared_ptr m_tabocDtc; std::shared_ptr m_dbHandler; HandlerOcAesData *m_handlerOcAesData; HandlerOcSituationData *m_handlerOcSituationData; HandlerOcCentralAesData *m_handlerOcCentralAesData; QTimer *m_situationRequestCycleTimer; struct { unsigned int avticeEvaluationSchemaId; unsigned int resetCounterDangerAreas; unsigned int resetCounterIeds; } m_stateInformation; int m_centerEquipmentId; int m_radius; bool m_useFilter; std::vector m_partyList; std::vector m_typeClassList; dds::core::optional m_position; OperatorManagement::User m_user; bool m_licensed; NGL::INGLLogger &m_logger; }; } // namespace OcSituationClient