diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-20 09:31:25 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-09-15 16:14:19 +0200 |
commit | dc6bc885b70d8dbada622c22f8d620084b798648 (patch) | |
tree | c12f3fdcbea12f172b48a8ba7485cacfd0fc86bf /common/changereplay.h | |
parent | a1b86c269f3d2a64d63f001df33bb3e1932423a0 (diff) | |
download | sink-dc6bc885b70d8dbada622c22f8d620084b798648.tar.gz sink-dc6bc885b70d8dbada622c22f8d620084b798648.zip |
Don't create a transaction for every revision that we don't replay.
This had a significant performance impact when i.e. syncing a folder
with 10k messages.
Diffstat (limited to 'common/changereplay.h')
-rw-r--r-- | common/changereplay.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/common/changereplay.h b/common/changereplay.h index 6c1c1db..88d6ce3 100644 --- a/common/changereplay.h +++ b/common/changereplay.h | |||
@@ -52,12 +52,15 @@ public slots: | |||
52 | 52 | ||
53 | protected: | 53 | protected: |
54 | virtual KAsync::Job<void> replay(const QByteArray &type, const QByteArray &key, const QByteArray &value) = 0; | 54 | virtual KAsync::Job<void> replay(const QByteArray &type, const QByteArray &key, const QByteArray &value) = 0; |
55 | virtual bool canReplay(const QByteArray &type, const QByteArray &key, const QByteArray &value) = 0; | ||
55 | Sink::Storage mStorage; | 56 | Sink::Storage mStorage; |
56 | 57 | ||
57 | private: | 58 | private: |
59 | void recordReplayedRevision(qint64 revision); | ||
58 | KAsync::Job<void> replayNextRevision(); | 60 | KAsync::Job<void> replayNextRevision(); |
59 | Sink::Storage mChangeReplayStore; | 61 | Sink::Storage mChangeReplayStore; |
60 | bool mReplayInProgress; | 62 | bool mReplayInProgress; |
63 | Sink::Storage::Transaction mMainStoreTransaction; | ||
61 | }; | 64 | }; |
62 | 65 | ||
63 | class NullChangeReplay : public ChangeReplay | 66 | class NullChangeReplay : public ChangeReplay |
@@ -65,6 +68,7 @@ class NullChangeReplay : public ChangeReplay | |||
65 | public: | 68 | public: |
66 | NullChangeReplay(const QByteArray &resourceName) : ChangeReplay(resourceName) {} | 69 | NullChangeReplay(const QByteArray &resourceName) : ChangeReplay(resourceName) {} |
67 | KAsync::Job<void> replay(const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE { return KAsync::null<void>(); } | 70 | KAsync::Job<void> replay(const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE { return KAsync::null<void>(); } |
71 | bool canReplay(const QByteArray &type, const QByteArray &key, const QByteArray &value) Q_DECL_OVERRIDE { return false; } | ||
68 | }; | 72 | }; |
69 | 73 | ||
70 | } | 74 | } |