From 3e1ed974ea5f370a29e5e93404b10188f817771e 2017-08-24 07:58:46 From: mperrinel Date: 2017-08-24 07:58:46 Subject: [PATCH] Merge branch 'feature/SynchroImpl' into develop --- diff --git a/core/include/Data/AcquisitionRequest.h b/core/include/Data/AcquisitionRequest.h index f1cc89d..d9d338a 100644 --- a/core/include/Data/AcquisitionRequest.h +++ b/core/include/Data/AcquisitionRequest.h @@ -14,16 +14,16 @@ #include /** - * @brief The AcquisitionRequest struct holds the information of an acquisition request + * @brief The AcquisitionRequest struct holds the information of an variable request */ struct AcquisitionRequest { AcquisitionRequest() { - m_AcqIdentifier = QUuid::createUuid(); m_Size = 0; } + QUuid m_VarRequestId; QUuid m_AcqIdentifier; QUuid m_vIdentifier; DataProviderParameters m_DataProviderParameters; diff --git a/core/include/Data/VariableRequest.h b/core/include/Data/VariableRequest.h new file mode 100644 index 0000000..4356735 --- /dev/null +++ b/core/include/Data/VariableRequest.h @@ -0,0 +1,28 @@ +#ifndef SCIQLOP_VARIABLEREQUEST_H +#define SCIQLOP_VARIABLEREQUEST_H + +#include + +#include + +#include +#include +#include + +#include + +/** + * @brief The VariableRequest struct holds the information of an acquisition request + */ +struct VariableRequest { + VariableRequest() { m_CanUpdate = false; } + + SqpRange m_RangeRequested; + SqpRange m_CacheRangeRequested; + std::shared_ptr m_DataSeries; + bool m_CanUpdate; +}; + +SCIQLOP_REGISTER_META_TYPE(VARIABLEREQUEST_REGISTRY, VariableRequest) + +#endif // SCIQLOP_VARIABLEREQUEST_H diff --git a/core/include/Variable/VariableAcquisitionWorker.h b/core/include/Variable/VariableAcquisitionWorker.h index d2adf83..4c76379 100644 --- a/core/include/Variable/VariableAcquisitionWorker.h +++ b/core/include/Variable/VariableAcquisitionWorker.h @@ -28,9 +28,9 @@ public: explicit VariableAcquisitionWorker(QObject *parent = 0); virtual ~VariableAcquisitionWorker(); - void pushVariableRequest(QUuid vIdentifier, SqpRange rangeRequested, - SqpRange cacheRangeRequested, DataProviderParameters parameters, - std::shared_ptr provider); + QUuid pushVariableRequest(QUuid varRequestId, QUuid vIdentifier, SqpRange rangeRequested, + SqpRange cacheRangeRequested, DataProviderParameters parameters, + std::shared_ptr provider); void abortProgressRequested(QUuid vIdentifier); diff --git a/core/include/Variable/VariableCacheStrategy.h b/core/include/Variable/VariableCacheStrategy.h index 50f417e..da94ff4 100644 --- a/core/include/Variable/VariableCacheStrategy.h +++ b/core/include/Variable/VariableCacheStrategy.h @@ -29,8 +29,8 @@ class SCIQLOP_CORE_EXPORT VariableCacheStrategy : public QObject { public: explicit VariableCacheStrategy(QObject *parent = 0); - std::pair computeCacheRange(const SqpRange &vRange, - const SqpRange &rangeRequested); + std::pair computeStrategyRanges(const SqpRange &vRange, + const SqpRange &rangeRequested); private: class VariableCacheStrategyPrivate; diff --git a/core/src/Variable/VariableAcquisitionWorker.cpp b/core/src/Variable/VariableAcquisitionWorker.cpp index 3d10846..93aa9bb 100644 --- a/core/src/Variable/VariableAcquisitionWorker.cpp +++ b/core/src/Variable/VariableAcquisitionWorker.cpp @@ -46,16 +46,19 @@ VariableAcquisitionWorker::~VariableAcquisitionWorker() } -void VariableAcquisitionWorker::pushVariableRequest(QUuid vIdentifier, SqpRange rangeRequested, - SqpRange cacheRangeRequested, - DataProviderParameters parameters, - std::shared_ptr provider) +QUuid VariableAcquisitionWorker::pushVariableRequest(QUuid varRequestId, QUuid vIdentifier, + SqpRange rangeRequested, + SqpRange cacheRangeRequested, + DataProviderParameters parameters, + std::shared_ptr provider) { - qCInfo(LOG_VariableAcquisitionWorker()) + qCDebug(LOG_VariableAcquisitionWorker()) << tr("TORM VariableAcquisitionWorker::pushVariableRequest ") << cacheRangeRequested; + auto varRequestIdCanceled = QUuid(); // Request creation auto acqRequest = AcquisitionRequest{}; + acqRequest.m_VarRequestId = varRequestId; acqRequest.m_vIdentifier = vIdentifier; acqRequest.m_DataProviderParameters = parameters; acqRequest.m_RangeRequested = rangeRequested; @@ -63,6 +66,7 @@ void VariableAcquisitionWorker::pushVariableRequest(QUuid vIdentifier, SqpRange acqRequest.m_Size = parameters.m_Times.size(); acqRequest.m_Provider = provider; + // Register request impl->lockWrite(); impl->m_AcqIdentifierToAcqRequestMap.insert( @@ -71,6 +75,13 @@ void VariableAcquisitionWorker::pushVariableRequest(QUuid vIdentifier, SqpRange auto it = impl->m_VIdentifierToCurrrentAcqIdNextIdPairMap.find(vIdentifier); if (it != impl->m_VIdentifierToCurrrentAcqIdNextIdPairMap.cend()) { // A current request already exists, we can replace the next one + auto nextAcqId = it->second.second; + auto acqIdentifierToAcqRequestMapIt = impl->m_AcqIdentifierToAcqRequestMap.find(nextAcqId); + if (acqIdentifierToAcqRequestMapIt != impl->m_AcqIdentifierToAcqRequestMap.cend()) { + auto request = acqIdentifierToAcqRequestMapIt->second; + varRequestIdCanceled = request.m_VarRequestId; + } + it->second.second = acqRequest.m_AcqIdentifier; impl->unlock(); } @@ -83,6 +94,8 @@ void VariableAcquisitionWorker::pushVariableRequest(QUuid vIdentifier, SqpRange QMetaObject::invokeMethod(this, "onExecuteRequest", Qt::QueuedConnection, Q_ARG(QUuid, acqRequest.m_AcqIdentifier)); } + + return varRequestIdCanceled; } void VariableAcquisitionWorker::abortProgressRequested(QUuid vIdentifier) @@ -173,7 +186,7 @@ void VariableAcquisitionWorker::onVariableDataAcquired(QUuid acqIdentifier, void VariableAcquisitionWorker::onExecuteRequest(QUuid acqIdentifier) { - qCInfo(LOG_VariableAcquisitionWorker()) << tr("onExecuteRequest") << QThread::currentThread(); + qCDebug(LOG_VariableAcquisitionWorker()) << tr("onExecuteRequest") << QThread::currentThread(); impl->lockRead(); auto it = impl->m_AcqIdentifierToAcqRequestMap.find(acqIdentifier); if (it != impl->m_AcqIdentifierToAcqRequestMap.cend()) { diff --git a/core/src/Variable/VariableCacheStrategy.cpp b/core/src/Variable/VariableCacheStrategy.cpp index 8ab1a85..962c5b6 100644 --- a/core/src/Variable/VariableCacheStrategy.cpp +++ b/core/src/Variable/VariableCacheStrategy.cpp @@ -20,7 +20,7 @@ VariableCacheStrategy::VariableCacheStrategy(QObject *parent) } std::pair -VariableCacheStrategy::computeCacheRange(const SqpRange &vRange, const SqpRange &rangeRequested) +VariableCacheStrategy::computeStrategyRanges(const SqpRange &vRange, const SqpRange &rangeRequested) { auto varRanges = std::pair{}; diff --git a/core/src/Variable/VariableController.cpp b/core/src/Variable/VariableController.cpp index 1df9fed..fa8e248 100644 --- a/core/src/Variable/VariableController.cpp +++ b/core/src/Variable/VariableController.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include #include @@ -9,6 +8,7 @@ #include #include #include +#include #include