diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-09-20 17:18:21 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-09-20 17:18:21 +0200 |
commit | ebc5c48c03b6145e604da7c313b35321d0a71142 (patch) | |
tree | 1cee00a9fa4faa4995c0a50f01703ac5672c8797 /common/datastorequery.h | |
parent | 4a14a6fade947aa830d3f21598a4a6ba7316b933 (diff) | |
download | sink-ebc5c48c03b6145e604da7c313b35321d0a71142.tar.gz sink-ebc5c48c03b6145e604da7c313b35321d0a71142.zip |
A first draft of the threading algorithm.
Diffstat (limited to 'common/datastorequery.h')
-rw-r--r-- | common/datastorequery.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/common/datastorequery.h b/common/datastorequery.h index cf9d9e2..7712ac7 100644 --- a/common/datastorequery.h +++ b/common/datastorequery.h | |||
@@ -27,24 +27,29 @@ | |||
27 | 27 | ||
28 | class DataStoreQuery { | 28 | class DataStoreQuery { |
29 | public: | 29 | public: |
30 | typedef QSharedPointer<DataStoreQuery> Ptr; | ||
31 | |||
30 | DataStoreQuery(const Sink::Query &query, const QByteArray &type, Sink::Storage::Transaction &transaction, TypeIndex &typeIndex, std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> getProperty); | 32 | DataStoreQuery(const Sink::Query &query, const QByteArray &type, Sink::Storage::Transaction &transaction, TypeIndex &typeIndex, std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> getProperty); |
31 | ResultSet execute(); | 33 | ResultSet execute(); |
32 | ResultSet update(qint64 baseRevision); | 34 | ResultSet update(qint64 baseRevision); |
33 | 35 | ||
34 | private: | 36 | protected: |
35 | 37 | ||
36 | typedef std::function<bool(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> FilterFunction; | 38 | typedef std::function<bool(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> FilterFunction; |
37 | typedef std::function<void(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> BufferCallback; | 39 | typedef std::function<void(const QByteArray &uid, const Sink::EntityBuffer &entityBuffer)> BufferCallback; |
38 | 40 | ||
39 | QVariant getProperty(const Sink::Entity &entity, const QByteArray &property); | 41 | virtual QVariant getProperty(const Sink::Entity &entity, const QByteArray &property); |
42 | |||
43 | virtual void readEntity(const QByteArray &key, const BufferCallback &resultCallback); | ||
40 | 44 | ||
41 | void readEntity(const QByteArray &key, const BufferCallback &resultCallback); | 45 | virtual ResultSet loadInitialResultSet(QSet<QByteArray> &remainingFilters, QByteArray &remainingSorting); |
46 | virtual ResultSet loadIncrementalResultSet(qint64 baseRevision, QSet<QByteArray> &remainingFilters); | ||
42 | 47 | ||
43 | ResultSet loadInitialResultSet(QSet<QByteArray> &remainingFilters, QByteArray &remainingSorting); | 48 | virtual ResultSet filterAndSortSet(ResultSet &resultSet, const FilterFunction &filter, const QByteArray &sortProperty); |
44 | ResultSet loadIncrementalResultSet(qint64 baseRevision, QSet<QByteArray> &remainingFilters); | 49 | virtual ResultSet postSortFilter(ResultSet &resultSet); |
50 | virtual FilterFunction getFilter(const QSet<QByteArray> &remainingFilters); | ||
45 | 51 | ||
46 | ResultSet filterAndSortSet(ResultSet &resultSet, const FilterFunction &filter, bool initialQuery, const QByteArray &sortProperty); | 52 | ResultSet createFilteredSet(ResultSet &resultSet, const std::function<bool(const QByteArray &, const Sink::EntityBuffer &buffer)> &); |
47 | FilterFunction getFilter(const QSet<QByteArray> &remainingFilters); | ||
48 | 53 | ||
49 | Sink::Query mQuery; | 54 | Sink::Query mQuery; |
50 | Sink::Storage::Transaction &mTransaction; | 55 | Sink::Storage::Transaction &mTransaction; |
@@ -52,6 +57,7 @@ private: | |||
52 | TypeIndex &mTypeIndex; | 57 | TypeIndex &mTypeIndex; |
53 | Sink::Storage::NamedDatabase mDb; | 58 | Sink::Storage::NamedDatabase mDb; |
54 | std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> mGetProperty; | 59 | std::function<QVariant(const Sink::Entity &entity, const QByteArray &property)> mGetProperty; |
60 | bool mInitialQuery; | ||
55 | }; | 61 | }; |
56 | 62 | ||
57 | 63 | ||