summaryrefslogtreecommitdiffstats
path: root/common/genericresource.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2015-10-19 15:01:02 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2015-10-19 15:01:37 +0200
commit43c4cd555e4a265d3e484dfeea0aa05da0977cd0 (patch)
tree359fe5ffc5d4e3e2e45cd3dc33eabe6dd30ce149 /common/genericresource.cpp
parent7ea7a77aab64ea61d9966caee2b8e7d33d0f5526 (diff)
downloadsink-43c4cd555e4a265d3e484dfeea0aa05da0977cd0.tar.gz
sink-43c4cd555e4a265d3e484dfeea0aa05da0977cd0.zip
Let clients tell the resource when they no longer require a revision.
Diffstat (limited to 'common/genericresource.cpp')
-rw-r--r--common/genericresource.cpp22
1 files changed, 5 insertions, 17 deletions
diff --git a/common/genericresource.cpp b/common/genericresource.cpp
index 2a0d6bd..313d99c 100644
--- a/common/genericresource.cpp
+++ b/common/genericresource.cpp
@@ -187,23 +187,6 @@ GenericResource::GenericResource(const QByteArray &resourceInstanceIdentifier, c
187 QObject::connect(mProcessor, &Processor::error, [this](int errorCode, const QString &msg) { onProcessorError(errorCode, msg); }); 187 QObject::connect(mProcessor, &Processor::error, [this](int errorCode, const QString &msg) { onProcessorError(errorCode, msg); });
188 QObject::connect(mPipeline.data(), &Pipeline::revisionUpdated, this, &Resource::revisionUpdated); 188 QObject::connect(mPipeline.data(), &Pipeline::revisionUpdated, this, &Resource::revisionUpdated);
189 189
190 //We simply drop revisions with 100ms delay until we have better information from clients and writeback
191 //FIXME On startup, read the latest revision that is replayed to initialize. Then bump revision when change-replay and
192 //all clients have advanced to a later revision.
193 QObject::connect(mPipeline.data(), &Pipeline::revisionUpdated, [this](qint64 revision) {
194 QTimer *dropRevisionTimer = new QTimer();
195 dropRevisionTimer->setInterval(100);
196 dropRevisionTimer->setSingleShot(true);
197 auto processor = QPointer<Processor>(mProcessor);
198 QObject::connect(dropRevisionTimer, &QTimer::timeout, dropRevisionTimer, [processor, revision, dropRevisionTimer]() {
199 if (processor) {
200 processor->setOldestUsedRevision(revision);
201 }
202 delete dropRevisionTimer;
203 });
204 dropRevisionTimer->start();
205 });
206
207 mCommitQueueTimer.setInterval(100); 190 mCommitQueueTimer.setInterval(100);
208 mCommitQueueTimer.setSingleShot(true); 191 mCommitQueueTimer.setSingleShot(true);
209 QObject::connect(&mCommitQueueTimer, &QTimer::timeout, &mUserQueue, &MessageQueue::commit); 192 QObject::connect(&mCommitQueueTimer, &QTimer::timeout, &mUserQueue, &MessageQueue::commit);
@@ -283,4 +266,9 @@ KAsync::Job<void> GenericResource::processAllMessages()
283 }); 266 });
284} 267}
285 268
269void GenericResource::setLowerBoundRevision(qint64 revision)
270{
271 mProcessor->setOldestUsedRevision(revision);
272}
273
286#include "genericresource.moc" 274#include "genericresource.moc"