Auto status change to "Under Review"
@@ -102,7 +102,6 QUuid VariableAcquisitionWorker::pushVariableRequest(QUuid varRequestId, QUuid v | |||
|
102 | 102 | |
|
103 | 103 | // remove old acqIdentifier from the worker |
|
104 | 104 | impl->cancelVarRequest(varRequestIdCanceled); |
|
105 | // impl->m_AcqIdentifierToAcqRequestMap.erase(oldAcqId); | |
|
106 | 105 | } |
|
107 | 106 | else { |
|
108 | 107 | // First request for the variable, it must be stored and executed |
@@ -115,7 +115,7 struct VariableController::VariableControllerPrivate { | |||
|
115 | 115 | QUuid acceptVariableRequest(QUuid varId, std::shared_ptr<IDataSeries> dataSeries); |
|
116 | 116 | void updateVariableRequest(QUuid varRequestId); |
|
117 | 117 | void cancelVariableRequest(QUuid varRequestId); |
|
118 | ||
|
118 | void abortVariableRequest(QUuid varRequestId); | |
|
119 | 119 | SqpRange getLastRequestedRange(QUuid varId); |
|
120 | 120 | |
|
121 | 121 | QMutex m_WorkingMutex; |
@@ -593,6 +593,9 void VariableController::VariableControllerPrivate::processRequest(std::shared_p | |||
|
593 | 593 | auto varStrategyRangesRequested |
|
594 | 594 | = m_VariableCacheStrategy->computeRange(oldRange, rangeRequested); |
|
595 | 595 | |
|
596 | // Use commented lines to remove the cache (run time) | |
|
597 | // auto notInCacheRangeList = QVector<SqpRange>{varStrategyRangesRequested.second}; | |
|
598 | // auto inCacheRangeList = QVector<SqpRange>{}; | |
|
596 | 599 | auto notInCacheRangeList |
|
597 | 600 | = Variable::provideNotInCacheRangeList(oldRange, varStrategyRangesRequested.second); |
|
598 | 601 | auto inCacheRangeList |
@@ -616,7 +619,8 void VariableController::VariableControllerPrivate::processRequest(std::shared_p | |||
|
616 | 619 | if (!varRequestIdCanceled.isNull()) { |
|
617 | 620 | qCInfo(LOG_VariableAcquisitionWorker()) << tr("varRequestIdCanceled: ") |
|
618 | 621 | << varRequestIdCanceled; |
|
619 | cancelVariableRequest(varRequestIdCanceled); | |
|
622 | // cancelVariableRequest(varRequestIdCanceled); | |
|
623 | abortVariableRequest(varRequestIdCanceled); | |
|
620 | 624 | } |
|
621 | 625 | } |
|
622 | 626 | else { |
@@ -851,6 +855,69 void VariableController::VariableControllerPrivate::cancelVariableRequest(QUuid | |||
|
851 | 855 | } |
|
852 | 856 | } |
|
853 | 857 | |
|
858 | void VariableController::VariableControllerPrivate::abortVariableRequest(QUuid varRequestId) | |
|
859 | { | |
|
860 | auto varRequestIdsMap = std::map<QUuid, VariableRequest>{}; | |
|
861 | auto varRequestIdToVarIdVarRequestMapIt = m_VarRequestIdToVarIdVarRequestMap.find(varRequestId); | |
|
862 | if (varRequestIdToVarIdVarRequestMapIt != m_VarRequestIdToVarIdVarRequestMap.cend()) { | |
|
863 | varRequestIdsMap = varRequestIdToVarIdVarRequestMapIt->second; | |
|
864 | } | |
|
865 | ||
|
866 | auto nextUuidToRemove = QSet<QUuid>{}; | |
|
867 | auto varIdEnd = varRequestIdsMap.end(); | |
|
868 | for (auto varIdIt = varRequestIdsMap.begin(); varIdIt != varIdEnd;) { | |
|
869 | auto currentVarId = varIdIt->first; | |
|
870 | auto varIdToVarRequestIdQueueMapIt = m_VarIdToVarRequestIdQueueMap.find(currentVarId); | |
|
871 | if (varIdToVarRequestIdQueueMapIt != m_VarIdToVarRequestIdQueueMap.cend()) { | |
|
872 | ||
|
873 | auto &varRequestIdQueue = varIdToVarRequestIdQueueMapIt->second; | |
|
874 | ||
|
875 | auto varReqIdQueueEnd = varRequestIdQueue.end(); | |
|
876 | for (auto varReqIdQueueIt = varRequestIdQueue.begin(); | |
|
877 | varReqIdQueueIt != varRequestIdQueue.end(); ++varReqIdQueueIt) { | |
|
878 | if (*varReqIdQueueIt == varRequestId) { | |
|
879 | auto nextVarRequestIdToRm = varReqIdQueueIt; | |
|
880 | ++nextVarRequestIdToRm; | |
|
881 | ||
|
882 | if (nextVarRequestIdToRm == varReqIdQueueEnd) { | |
|
883 | // The varRequestId is in progress for the current var, let's aborting it. | |
|
884 | m_VariableAcquisitionWorker->abortProgressRequested(currentVarId); | |
|
885 | } | |
|
886 | else { | |
|
887 | // There is at least one Request after | |
|
888 | // let's add only new id to remove | |
|
889 | if (!nextUuidToRemove.contains(*nextVarRequestIdToRm)) { | |
|
890 | nextUuidToRemove << *nextVarRequestIdToRm; | |
|
891 | } | |
|
892 | } | |
|
893 | ||
|
894 | varReqIdQueueIt = varRequestIdQueue.erase(varReqIdQueueIt); | |
|
895 | // break is necessary here, we don"t need to iterate on the dequeue anymore and | |
|
896 | // the iteration is broken because of the erase | |
|
897 | break; | |
|
898 | } | |
|
899 | } | |
|
900 | ||
|
901 | // beacause the process can modify the map under the iteration, we need to update the | |
|
902 | // iterator only if no erase has been done | |
|
903 | if (varRequestIdQueue.empty()) { | |
|
904 | varIdIt = varRequestIdsMap.erase(varIdIt); | |
|
905 | } | |
|
906 | else { | |
|
907 | ++varIdIt; | |
|
908 | } | |
|
909 | } | |
|
910 | } | |
|
911 | ||
|
912 | if (varRequestIdToVarIdVarRequestMapIt != m_VarRequestIdToVarIdVarRequestMap.cend()) { | |
|
913 | m_VarRequestIdToVarIdVarRequestMap.erase(varRequestIdToVarIdVarRequestMapIt); | |
|
914 | } | |
|
915 | ||
|
916 | for (auto nextVarRequestIdToRm : nextUuidToRemove) { | |
|
917 | abortVariableRequest(nextVarRequestIdToRm); | |
|
918 | } | |
|
919 | } | |
|
920 | ||
|
854 | 921 | SqpRange VariableController::VariableControllerPrivate::getLastRequestedRange(QUuid varId) |
|
855 | 922 | { |
|
856 | 923 | auto lastRangeRequested = SqpRange{INVALID_RANGE}; |
@@ -241,7 +241,7 void testSyncCase1() | |||
|
241 | 241 | // Zoom in |
|
242 | 242 | moveVar0(range({16, 30}, {16, 45}), range({15, 30}, {15, 45})); |
|
243 | 243 | // Zoom out |
|
244 |
moveVar0(range({1 |
|
|
244 | moveVar0(range({16, 15}, {17, 0}), range({15, 15}, {16, 0})); | |
|
245 | 245 | |
|
246 | 246 | QTest::newRow("sync1") << syncId << initialRange << std::move(iterations) << 200; |
|
247 | 247 | } |
@@ -322,7 +322,7 void TestVariableSync::testSync_data() | |||
|
322 | 322 | // ////////// // |
|
323 | 323 | |
|
324 | 324 | testSyncCase1(); |
|
325 | testSyncCase2(); | |
|
325 | // testSyncCase2(); | |
|
326 | 326 | } |
|
327 | 327 | |
|
328 | 328 | void TestVariableSync::testSync() |
General Comments 3
Merge lasted acquisition developpement on main Sciqlop branch
You need to be logged in to leave comments.
Login now