@@ -29,6 +29,7 public: | |||||
29 | explicit VariableAcquisitionWorker(QObject *parent = 0); |
|
29 | explicit VariableAcquisitionWorker(QObject *parent = 0); | |
30 | virtual ~VariableAcquisitionWorker(); |
|
30 | virtual ~VariableAcquisitionWorker(); | |
31 |
|
31 | |||
|
32 | void cancelVariableRequest(std::shared_ptr<Variable> variable); | |||
32 | void pushVariableRequest(std::shared_ptr<Variable> variable, VariableRequest request); |
|
33 | void pushVariableRequest(std::shared_ptr<Variable> variable, VariableRequest request); | |
33 |
|
34 | |||
34 | void abortProgressRequested(QUuid vIdentifier); |
|
35 | void abortProgressRequested(QUuid vIdentifier); |
@@ -48,12 +48,11 public: | |||||
48 | void removeGroup(GroupId groupId) noexcept; |
|
48 | void removeGroup(GroupId groupId) noexcept; | |
49 |
|
49 | |||
50 | /** |
|
50 | /** | |
51 |
* Removes a variable from |
|
51 | * Removes a variable from its synchronization group. If the variable isn't in a synchronization | |
52 |
* |
|
52 | * group, the method does nothing | |
53 | * @param variable the variable to desynchronize |
|
53 | * @param variable the variable to desynchronize | |
54 | * @param groupId the synchronization group identifier |
|
|||
55 | */ |
|
54 | */ | |
56 |
void removeVariable(std::shared_ptr<Variable> variable |
|
55 | void removeVariable(std::shared_ptr<Variable> variable) noexcept; | |
57 |
|
56 | |||
58 | /// @return the variables in the same group than the variable passed as a parameter (including |
|
57 | /// @return the variables in the same group than the variable passed as a parameter (including | |
59 | /// the variable) |
|
58 | /// the variable) |
@@ -83,6 +83,11 VariableAcquisitionWorker::~VariableAcquisitionWorker() | |||||
83 | this->waitForFinish(); |
|
83 | this->waitForFinish(); | |
84 | } |
|
84 | } | |
85 |
|
85 | |||
|
86 | void VariableAcquisitionWorker::cancelVariableRequest(std::shared_ptr<Variable> variable) | |||
|
87 | { | |||
|
88 | /// @todo ALX | |||
|
89 | } | |||
|
90 | ||||
86 | void VariableAcquisitionWorker::pushVariableRequest(std::shared_ptr<Variable> variable, |
|
91 | void VariableAcquisitionWorker::pushVariableRequest(std::shared_ptr<Variable> variable, | |
87 | VariableRequest request) |
|
92 | VariableRequest request) | |
88 | { |
|
93 | { | |
@@ -138,8 +143,6 void VariableAcquisitionWorker::onDataAcquired(QUuid acquisitionId, | |||||
138 | auto &acquisition = it->second; |
|
143 | auto &acquisition = it->second; | |
139 | auto &request = acquisition.m_Request; |
|
144 | auto &request = acquisition.m_Request; | |
140 |
|
145 | |||
141 | qInfo(LOG_VariableAcquisitionWorker()) << "Data acquired for " << printRange(range); |
|
|||
142 |
|
||||
143 | // Store the result |
|
146 | // Store the result | |
144 | request.addResult(dataSeries); |
|
147 | request.addResult(dataSeries); | |
145 |
|
148 |
@@ -250,6 +250,12 void VariableController::deleteVariable(std::shared_ptr<Variable> variable) noex | |||||
250 | // make some treatments before the deletion |
|
250 | // make some treatments before the deletion | |
251 | emit variableAboutToBeDeleted(variable); |
|
251 | emit variableAboutToBeDeleted(variable); | |
252 |
|
252 | |||
|
253 | // Deletes from synchronization group | |||
|
254 | impl->m_VariableSynchronizer->removeVariable(variable); | |||
|
255 | ||||
|
256 | // Cancels pending requests | |||
|
257 | impl->m_VariableAcquisitionWorker->cancelVariableRequest(variable); | |||
|
258 | ||||
253 | // Deletes provider |
|
259 | // Deletes provider | |
254 | auto nbProvidersDeleted = impl->m_Providers.erase(variable); |
|
260 | auto nbProvidersDeleted = impl->m_Providers.erase(variable); | |
255 | qCDebug(LOG_VariableController()) |
|
261 | qCDebug(LOG_VariableController()) | |
@@ -380,7 +386,9 void VariableController::onAddSynchronized(std::shared_ptr<Variable> variable, | |||||
380 | void VariableController::desynchronize(std::shared_ptr<Variable> variable, |
|
386 | void VariableController::desynchronize(std::shared_ptr<Variable> variable, | |
381 | QUuid synchronizationGroupId) |
|
387 | QUuid synchronizationGroupId) | |
382 | { |
|
388 | { | |
383 | impl->m_VariableSynchronizer->removeVariable(variable, synchronizationGroupId); |
|
389 | // As a variable can't be into more than one synchronization group,we don't need group id here | |
|
390 | Q_UNUSED(synchronizationGroupId); | |||
|
391 | impl->m_VariableSynchronizer->removeVariable(variable); | |||
384 | } |
|
392 | } | |
385 |
|
393 | |||
386 | void VariableController::onRequestDataLoading(const QVector<std::shared_ptr<Variable> > &variables, |
|
394 | void VariableController::onRequestDataLoading(const QVector<std::shared_ptr<Variable> > &variables, |
@@ -7,7 +7,10 Q_LOGGING_CATEGORY(LOG_VariableSynchronizer, "VariableSynchronizer") | |||||
7 | namespace { |
|
7 | namespace { | |
8 |
|
8 | |||
9 | using GroupId = VariableSynchronizer::GroupId; |
|
9 | using GroupId = VariableSynchronizer::GroupId; | |
10 | using Group = std::set<std::shared_ptr<Variable> >; |
|
10 | struct Group { | |
|
11 | GroupId m_Id; | |||
|
12 | std::set<std::shared_ptr<Variable> > m_Variables; | |||
|
13 | }; | |||
11 |
|
14 | |||
12 | } // namespace |
|
15 | } // namespace | |
13 |
|
16 | |||
@@ -52,7 +55,7 void VariableSynchronizer::addVariable(std::shared_ptr<Variable> variable, Group | |||||
52 | } |
|
55 | } | |
53 |
|
56 | |||
54 | // Registers variable |
|
57 | // Registers variable | |
55 | groupIt->second.insert(variable); |
|
58 | groupIt->second.m_Variables.insert(variable); | |
56 |
|
59 | |||
57 | // Creates index for variable |
|
60 | // Creates index for variable | |
58 | impl->m_GroupsIndex.insert(std::make_pair(variable, &groupIt->second)); |
|
61 | impl->m_GroupsIndex.insert(std::make_pair(variable, &groupIt->second)); | |
@@ -69,7 +72,7 void VariableSynchronizer::removeGroup(GroupId groupId) noexcept | |||||
69 | } |
|
72 | } | |
70 |
|
73 | |||
71 | // Removes indexes |
|
74 | // Removes indexes | |
72 | for (const auto &variable : groupIt->second) { |
|
75 | for (const auto &variable : groupIt->second.m_Variables) { | |
73 | impl->m_GroupsIndex.erase(variable); |
|
76 | impl->m_GroupsIndex.erase(variable); | |
74 | } |
|
77 | } | |
75 |
|
78 | |||
@@ -77,29 +80,25 void VariableSynchronizer::removeGroup(GroupId groupId) noexcept | |||||
77 | impl->m_Groups.erase(groupIt); |
|
80 | impl->m_Groups.erase(groupIt); | |
78 | } |
|
81 | } | |
79 |
|
82 | |||
80 |
void VariableSynchronizer::removeVariable(std::shared_ptr<Variable> variable |
|
83 | void VariableSynchronizer::removeVariable(std::shared_ptr<Variable> variable) noexcept | |
81 | GroupId groupId) noexcept |
|
|||
82 | { |
|
84 | { | |
83 | auto groupIt = impl->m_Groups.find(groupId); |
|
85 | // Finds group in which the variable is | |
84 |
|
86 | auto variableGroupIt = impl->m_GroupsIndex.find(variable); | ||
85 |
if ( |
|
87 | if (variableGroupIt != impl->m_GroupsIndex.end()) { | |
86 | qCWarning(LOG_VariableSynchronizer()) |
|
88 | auto groupId = variableGroupIt->second->m_Id; | |
87 | << tr("Can't remove variable from synchronization group: no group exists under the " |
|
|||
88 | "passed identifier"); |
|
|||
89 | return; |
|
|||
90 | } |
|
|||
91 |
|
89 | |||
92 | // Removes variable index |
|
90 | // Removes variable index | |
93 | impl->m_GroupsIndex.erase(variable); |
|
91 | impl->m_GroupsIndex.erase(variableGroupIt); | |
94 |
|
92 | |||
95 | // Removes variable from group |
|
93 | // Removes variable from group | |
96 | groupIt->second.erase(variable); |
|
94 | impl->m_Groups[groupId].m_Variables.erase(variable); | |
|
95 | } | |||
97 | } |
|
96 | } | |
98 |
|
97 | |||
99 | std::set<std::shared_ptr<Variable> > |
|
98 | std::set<std::shared_ptr<Variable> > | |
100 | VariableSynchronizer::synchronizedVariables(std::shared_ptr<Variable> variable) const noexcept |
|
99 | VariableSynchronizer::synchronizedVariables(std::shared_ptr<Variable> variable) const noexcept | |
101 | { |
|
100 | { | |
102 | auto groupIndexIt = impl->m_GroupsIndex.find(variable); |
|
101 | auto groupIndexIt = impl->m_GroupsIndex.find(variable); | |
103 |
return groupIndexIt != impl->m_GroupsIndex.end() ? |
|
102 | return groupIndexIt != impl->m_GroupsIndex.end() ? groupIndexIt->second->m_Variables | |
104 | : std::set<std::shared_ptr<Variable> >{}; |
|
103 | : std::set<std::shared_ptr<Variable> >{}; | |
105 | } |
|
104 | } |
General Comments 0
You need to be logged in to leave comments.
Login now