#pragma once #include #include #include #include #include namespace DDSConnector { class DdsConnector; } class NSqlQuery; namespace RecordReplay { class RecordReplayPlugin { public: RecordReplayPlugin() = default; virtual ~RecordReplayPlugin() = default; virtual QString pluginName() const = 0; virtual bool initDtc(const std::shared_ptr &ddsConnector, int exerciseId) = 0; virtual bool initDts(const std::shared_ptr &ddsConnector, int exerciseId, bool bCanHandleSchemas, NSqlQuery &query) = 0; virtual bool initCopy(int exerciseId, bool bCanHandleSchemasRead, bool bCanHandleSchemasWrite) = 0; virtual bool copyData(NSqlQuery &queryFrom, NSqlQuery &queryTo, qint64 fromTime, qint64 toTime) = 0; virtual QString svcShortName() const = 0; virtual bool ddsTopicsToDatabase(NSqlQuery &query, QHash &minRecordSampleTimes) = 0; virtual bool setReplayStartTime(NSqlQuery &query, qint64 startTime) = 0; virtual bool ddsTopicsFromDatabase(NSqlQuery &query, qint64 fromTime, qint64 toTime) = 0; virtual bool publishData(qint64 desiredTime) = 0; virtual bool waitForAsyncOperations(qint64 desiredTime) { Q_UNUSED(desiredTime); return true; } virtual void clearData() = 0; struct RecSnapshot { qint64 timeStamp = 0; std::map recIdArray; RecSnapshot() = default; RecSnapshot(qint64 timeStamp_, const std::map &recIdArray_) : timeStamp(timeStamp_) , recIdArray(recIdArray_) {} }; virtual std::map> getSnapshotTimes(NSqlQuery &query, qint64 toTime, qint64 interval, const QHash &minRecordedSampleTimes) = 0; virtual QVector getRecordTopicNames() const = 0; virtual QVector getRecordTableNames() const = 0; virtual qint64 getMinimumSampleTime(NSqlQuery &q, const QString &topicName, qint64 defaultValue) const = 0; }; } Q_DECLARE_INTERFACE(RecordReplay::RecordReplayPlugin, "special:3:recordreplay")