summaryrefslogtreecommitdiffstats
path: root/common/changereplay.h
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-07-20 09:31:25 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-09-15 16:14:19 +0200
commitdc6bc885b70d8dbada622c22f8d620084b798648 (patch)
treec12f3fdcbea12f172b48a8ba7485cacfd0fc86bf /common/changereplay.h
parenta1b86c269f3d2a64d63f001df33bb3e1932423a0 (diff)
downloadsink-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.h4
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
53protected: 53protected:
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
57private: 58private:
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
63class NullChangeReplay : public ChangeReplay 66class NullChangeReplay : public ChangeReplay
@@ -65,6 +68,7 @@ class NullChangeReplay : public ChangeReplay
65public: 68public:
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}