summaryrefslogtreecommitdiffstats
path: root/common/queryrunner.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'common/queryrunner.cpp')
-rw-r--r--common/queryrunner.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/common/queryrunner.cpp b/common/queryrunner.cpp
index fd966a9..b304384 100644
--- a/common/queryrunner.cpp
+++ b/common/queryrunner.cpp
@@ -70,9 +70,12 @@ private:
70 DomainTypeAdaptorFactoryInterface::Ptr mDomainTypeAdaptorFactory; 70 DomainTypeAdaptorFactoryInterface::Ptr mDomainTypeAdaptorFactory;
71 QByteArray mResourceInstanceIdentifier; 71 QByteArray mResourceInstanceIdentifier;
72 QByteArray mBufferType; 72 QByteArray mBufferType;
73 QByteArray mId; //Used for identification in debug output
73 Sink::Query mQuery; 74 Sink::Query mQuery;
74}; 75};
75 76
77#undef Trace
78#define Trace() Trace_area(DEBUG_AREA)
76 79
77template <class DomainType> 80template <class DomainType>
78QueryRunner<DomainType>::QueryRunner(const Sink::Query &query, const Sink::ResourceAccessInterface::Ptr &resourceAccess, const QByteArray &instanceIdentifier, 81QueryRunner<DomainType>::QueryRunner(const Sink::Query &query, const Sink::ResourceAccessInterface::Ptr &resourceAccess, const QByteArray &instanceIdentifier,
@@ -170,11 +173,13 @@ static inline ResultSet fullScan(const Sink::Storage::Transaction &transaction,
170 return ResultSet(keys.toList().toVector()); 173 return ResultSet(keys.toList().toVector());
171} 174}
172 175
176#undef Trace
177#define Trace() Trace_area("client.queryrunner." + mId)
173 178
174template <class DomainType> 179template <class DomainType>
175QueryWorker<DomainType>::QueryWorker(const Sink::Query &query, const QByteArray &instanceIdentifier, const DomainTypeAdaptorFactoryInterface::Ptr &factory, 180QueryWorker<DomainType>::QueryWorker(const Sink::Query &query, const QByteArray &instanceIdentifier, const DomainTypeAdaptorFactoryInterface::Ptr &factory,
176 const QByteArray &bufferType, const QueryRunnerBase::ResultTransformation &transformation) 181 const QByteArray &bufferType, const QueryRunnerBase::ResultTransformation &transformation)
177 : QObject(), mResultTransformation(transformation), mDomainTypeAdaptorFactory(factory), mResourceInstanceIdentifier(instanceIdentifier), mBufferType(bufferType), mQuery(query) 182 : QObject(), mResultTransformation(transformation), mDomainTypeAdaptorFactory(factory), mResourceInstanceIdentifier(instanceIdentifier), mBufferType(bufferType), mId(QUuid::createUuid().toByteArray()), mQuery(query)
178{ 183{
179 Trace() << "Starting query worker"; 184 Trace() << "Starting query worker";
180} 185}
@@ -274,7 +279,7 @@ ResultSet QueryWorker<DomainType>::loadIncrementalResultSet(qint64 baseRevision,
274 const auto bufferType = mBufferType; 279 const auto bufferType = mBufferType;
275 auto revisionCounter = QSharedPointer<qint64>::create(baseRevision); 280 auto revisionCounter = QSharedPointer<qint64>::create(baseRevision);
276 remainingFilters = query.propertyFilter.keys().toSet(); 281 remainingFilters = query.propertyFilter.keys().toSet();
277 return ResultSet([bufferType, revisionCounter, &transaction]() -> QByteArray { 282 return ResultSet([this, bufferType, revisionCounter, &transaction]() -> QByteArray {
278 const qint64 topRevision = Sink::Storage::maxRevision(transaction); 283 const qint64 topRevision = Sink::Storage::maxRevision(transaction);
279 // Spit out the revision keys one by one. 284 // Spit out the revision keys one by one.
280 while (*revisionCounter <= topRevision) { 285 while (*revisionCounter <= topRevision) {
@@ -379,7 +384,7 @@ template <class DomainType>
379std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &domainObject)> 384std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType::Ptr &domainObject)>
380QueryWorker<DomainType>::getFilter(const QSet<QByteArray> remainingFilters, const Sink::Query &query) 385QueryWorker<DomainType>::getFilter(const QSet<QByteArray> remainingFilters, const Sink::Query &query)
381{ 386{
382 return [remainingFilters, query](const Sink::ApplicationDomain::ApplicationDomainType::Ptr &domainObject) -> bool { 387 return [this, remainingFilters, query](const Sink::ApplicationDomain::ApplicationDomainType::Ptr &domainObject) -> bool {
383 if (!query.ids.isEmpty()) { 388 if (!query.ids.isEmpty()) {
384 if (!query.ids.contains(domainObject->identifier())) { 389 if (!query.ids.contains(domainObject->identifier())) {
385 return false; 390 return false;