#include #include #include #include #include "Variable/VariableSynchronizationGroup2.h" #include #include #include #include #include #include #include struct VCTransaction { VCTransaction(QUuid refVar, DateTimeRange range, int ready) :refVar{refVar},range{range},ready{ready} {} QUuid refVar; DateTimeRange range; int ready; QReadWriteLock lock; }; class TransactionExe:public QObject,public QRunnable { Q_OBJECT std::shared_ptr _variable; std::shared_ptr _provider; std::vector _ranges; DateTimeRange _range; DateTimeRange _cacheRange; public: TransactionExe(const std::shared_ptr& variable, const std::shared_ptr& provider, const std::vector& ranges, DateTimeRange range, DateTimeRange cacheRange) :_variable{variable}, _provider{provider},_ranges{ranges},_range{range},_cacheRange{cacheRange} { setAutoDelete(true); } void run()override { std::vector data; for(auto range:_ranges) { data.push_back(_provider->getData(DataProviderParameters{{range}, _variable->metadata()})); } _variable->updateData(data, _range, _cacheRange, true); emit transactionComplete(); } signals: void transactionComplete(); };