Files
qt6-migration-pipeline/Lts/Common/PluginInterfaces/record_replay_plugin.h
T

105 lines
2.4 KiB
C++
Executable File

#pragma once
#include <memory>
#include <map>
#include <QObject>
#include <QString>
#include <QHash>
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::DdsConnector> &ddsConnector,
int exerciseId) = 0;
virtual bool initDts(const std::shared_ptr<DDSConnector::DdsConnector> &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<QString, qint64> &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<int64_t, int64_t> recIdArray;
RecSnapshot() = default;
RecSnapshot(qint64 timeStamp_, const std::map<int64_t, int64_t> &recIdArray_)
: timeStamp(timeStamp_)
, recIdArray(recIdArray_)
{}
};
virtual std::map<QString, std::vector<RecSnapshot>> getSnapshotTimes(NSqlQuery &query,
qint64 toTime,
qint64 interval,
const QHash<QString, qint64> &minRecordedSampleTimes) = 0;
virtual QVector<QString> getRecordTopicNames() const = 0;
virtual QVector<QString> getRecordTableNames() const = 0;
virtual qint64 getMinimumSampleTime(NSqlQuery &q, const QString &topicName, qint64 defaultValue) const = 0;
};
}
Q_DECLARE_INTERFACE(RecordReplay::RecordReplayPlugin, "special:3:recordreplay")