summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-20 01:24:17 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-20 01:24:17 +0200
commit703b72511488068bdbc5e81172e674d0f07349ed (patch)
tree8fad8483c02bce7210401dd128cd1473c530d8d0 /common
parentb10ca588b7a8a5e3bec22b9e683b4a4dbd5bc889 (diff)
downloadsink-703b72511488068bdbc5e81172e674d0f07349ed.tar.gz
sink-703b72511488068bdbc5e81172e674d0f07349ed.zip
Commit all databases in the same interval
Diffstat (limited to 'common')
-rw-r--r--common/synchronizer.cpp10
-rw-r--r--common/synchronizer.h2
2 files changed, 7 insertions, 5 deletions
diff --git a/common/synchronizer.cpp b/common/synchronizer.cpp
index cf50b0b..1374d00 100644
--- a/common/synchronizer.cpp
+++ b/common/synchronizer.cpp
@@ -240,24 +240,26 @@ void Synchronizer::modify(const DomainType &entity)
240KAsync::Job<void> Synchronizer::synchronize() 240KAsync::Job<void> Synchronizer::synchronize()
241{ 241{
242 Trace() << "Synchronizing"; 242 Trace() << "Synchronizing";
243 mSyncInProgress = true;
243 mMessageQueue->startTransaction(); 244 mMessageQueue->startTransaction();
244 return synchronizeWithSource().then<void>([this]() { 245 return synchronizeWithSource().then<void>([this]() {
245 mSyncStore.clear(); 246 mSyncStore.clear();
246 mEntityStore.clear(); 247 mEntityStore.clear();
247 mMessageQueue->commit(); 248 mMessageQueue->commit();
249 mSyncInProgress = false;
248 }); 250 });
249} 251}
250 252
251void Synchronizer::commit() 253void Synchronizer::commit()
252{ 254{
255 mMessageQueue->commit();
253 mTransaction.abort(); 256 mTransaction.abort();
254 mEntityStore.clear(); 257 mEntityStore.clear();
255}
256
257void Synchronizer::commitSync()
258{
259 mSyncTransaction.commit(); 258 mSyncTransaction.commit();
260 mSyncStore.clear(); 259 mSyncStore.clear();
260 if (mSyncInProgress) {
261 mMessageQueue->startTransaction();
262 }
261} 263}
262 264
263Sink::Storage::Transaction &Synchronizer::transaction() 265Sink::Storage::Transaction &Synchronizer::transaction()
diff --git a/common/synchronizer.h b/common/synchronizer.h
index 9c0e2e2..81d4f27 100644
--- a/common/synchronizer.h
+++ b/common/synchronizer.h
@@ -50,7 +50,6 @@ public:
50 RemoteIdMap &syncStore(); 50 RemoteIdMap &syncStore();
51 51
52 void commit(); 52 void commit();
53 void commitSync();
54 Sink::Storage::Transaction &transaction(); 53 Sink::Storage::Transaction &transaction();
55 Sink::Storage::Transaction &syncTransaction(); 54 Sink::Storage::Transaction &syncTransaction();
56 55
@@ -106,6 +105,7 @@ private:
106 Sink::Storage::Transaction mSyncTransaction; 105 Sink::Storage::Transaction mSyncTransaction;
107 std::function<void(int commandId, const QByteArray &data)> mEnqueue; 106 std::function<void(int commandId, const QByteArray &data)> mEnqueue;
108 MessageQueue *mMessageQueue; 107 MessageQueue *mMessageQueue;
108 bool mSyncInProgress;
109}; 109};
110 110
111} 111}