summaryrefslogtreecommitdiffstats
path: root/common/datastorequery.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/datastorequery.h')
-rw-r--r--common/datastorequery.h18
1 files changed, 14 insertions, 4 deletions
diff --git a/common/datastorequery.h b/common/datastorequery.h
index 5a47685..a797782 100644
--- a/common/datastorequery.h
+++ b/common/datastorequery.h
@@ -26,6 +26,7 @@
26 26
27class Source; 27class Source;
28class Bloom; 28class Bloom;
29class Reduce;
29class Filter; 30class Filter;
30class FilterBase; 31class FilterBase;
31 32
@@ -33,15 +34,25 @@ class DataStoreQuery {
33 friend class FilterBase; 34 friend class FilterBase;
34 friend class Source; 35 friend class Source;
35 friend class Bloom; 36 friend class Bloom;
37 friend class Reduce;
36 friend class Filter; 38 friend class Filter;
37public: 39public:
38 typedef QSharedPointer<DataStoreQuery> Ptr; 40 typedef QSharedPointer<DataStoreQuery> Ptr;
39 41
42 struct State {
43 typedef QSharedPointer<State> Ptr;
44 QSharedPointer<FilterBase> mCollector;
45 QSharedPointer<Source> mSource;
46 };
47
40 DataStoreQuery(const Sink::QueryBase &query, const QByteArray &type, Sink::Storage::EntityStore &store); 48 DataStoreQuery(const Sink::QueryBase &query, const QByteArray &type, Sink::Storage::EntityStore &store);
49 DataStoreQuery(const DataStoreQuery::State &state, const QByteArray &type, Sink::Storage::EntityStore &store);
41 ~DataStoreQuery(); 50 ~DataStoreQuery();
42 ResultSet execute(); 51 ResultSet execute();
43 ResultSet update(qint64 baseRevision); 52 ResultSet update(qint64 baseRevision);
44 53
54 State::Ptr getState();
55
45private: 56private:
46 57
47 typedef std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> FilterFunction; 58 typedef std::function<bool(const Sink::ApplicationDomain::ApplicationDomainType &entity, Sink::Operation)> FilterFunction;
@@ -54,12 +65,10 @@ private:
54 ResultSet createFilteredSet(ResultSet &resultSet, const FilterFunction &); 65 ResultSet createFilteredSet(ResultSet &resultSet, const FilterFunction &);
55 QVector<QByteArray> loadIncrementalResultSet(qint64 baseRevision); 66 QVector<QByteArray> loadIncrementalResultSet(qint64 baseRevision);
56 67
57 void setupQuery(); 68 void setupQuery(const Sink::QueryBase &query_);
58 QByteArrayList executeSubquery(const Sink::QueryBase &subquery); 69 QByteArrayList executeSubquery(const Sink::QueryBase &subquery);
59 70
60 Sink::QueryBase mQuery;
61 const QByteArray mType; 71 const QByteArray mType;
62 bool mInitialQuery;
63 QSharedPointer<FilterBase> mCollector; 72 QSharedPointer<FilterBase> mCollector;
64 QSharedPointer<Source> mSource; 73 QSharedPointer<Source> mSource;
65 74
@@ -102,7 +111,8 @@ public:
102 //Returns true for as long as a result is available 111 //Returns true for as long as a result is available
103 virtual bool next(const std::function<void(const ResultSet::Result &)> &callback) = 0; 112 virtual bool next(const std::function<void(const ResultSet::Result &)> &callback) = 0;
104 113
105 QSharedPointer<FilterBase> mSource; 114 FilterBase::Ptr mSource;
106 DataStoreQuery *mDatastore; 115 DataStoreQuery *mDatastore;
116 bool mIncremental = false;
107}; 117};
108 118