diff options
Diffstat (limited to 'common/datastorequery.h')
-rw-r--r-- | common/datastorequery.h | 18 |
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 | ||
27 | class Source; | 27 | class Source; |
28 | class Bloom; | 28 | class Bloom; |
29 | class Reduce; | ||
29 | class Filter; | 30 | class Filter; |
30 | class FilterBase; | 31 | class 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; |
37 | public: | 39 | public: |
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 | |||
45 | private: | 56 | private: |
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 | ||