/** * @RDE_HEADER@ * Handler for all situation replay objects * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, SLSE, 2016-01-13 */ #pragma once #include #include #include #include "logger.h" namespace SituationReplay { namespace Database { struct SrpSituationReplay; } class DatabaseInterface; class DbReader; class DdsHandler; class ObjectSituationReplay; class HandlerSituationReplay final : public QObject , protected Interface::Fts::ChangeReplayStateRequestHandler { Q_OBJECT public: explicit HandlerSituationReplay(const std::shared_ptr &ddsHandler, const std::shared_ptr &db, const std::shared_ptr &dbReader); ~HandlerSituationReplay(); bool init(int exerciseId, int partitionId); private: bool createObject(const Database::SrpSituationReplay &newData); Core::FunctionReplyObject startReplayRequest(const ChangeReplayStateRequest &request); Core::FunctionReplyObject stopReplayRequest(const ChangeReplayStateRequest &request); Core::FunctionReplyObject changeReplayStateRequest(const ChangeReplayStateRequest &request); void onChangeReplayStateRequest(const rti::core::SampleIdentity &cookie, const ChangeReplayStateRequest &request) override; private: ObjectSituationReplay *m_objSrp; // only one (!) replay per partition possible const std::shared_ptr m_ddsHandler; const std::shared_ptr m_db; const std::shared_ptr m_dbReader; int m_exerciseId; int m_partitionId; NGL::INGLLogger &m_logger; }; }