From dabd408dcd372f16c7934597db30346869cd8ad8 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sun, 29 May 2016 15:19:21 +0200 Subject: Fixed genericresource so it works with the maildirresourcetest --- common/genericresource.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'common/genericresource.cpp') diff --git a/common/genericresource.cpp b/common/genericresource.cpp index 568e066..cd3ea02 100644 --- a/common/genericresource.cpp +++ b/common/genericresource.cpp @@ -233,22 +233,17 @@ private: #undef DEBUG_AREA #define DEBUG_AREA "resource" -GenericResource::GenericResource(const QByteArray &resourceType, const QByteArray &resourceInstanceIdentifier, const QSharedPointer &pipeline, const QSharedPointer &changeReplay, const QSharedPointer &synchronizer) +GenericResource::GenericResource(const QByteArray &resourceType, const QByteArray &resourceInstanceIdentifier, const QSharedPointer &pipeline ) : Sink::Resource(), mUserQueue(Sink::storageLocation(), resourceInstanceIdentifier + ".userqueue"), mSynchronizerQueue(Sink::storageLocation(), resourceInstanceIdentifier + ".synchronizerqueue"), mResourceType(resourceType), mResourceInstanceIdentifier(resourceInstanceIdentifier), mPipeline(pipeline ? pipeline : QSharedPointer::create(resourceInstanceIdentifier)), - mChangeReplay(changeReplay), - mSynchronizer(synchronizer), mError(0), mClientLowerBoundRevision(std::numeric_limits::max()) { mPipeline->setResourceType(mResourceType); - mSynchronizer->setup([this](int commandId, const QByteArray &data) { - enqueueCommand(mSynchronizerQueue, commandId, data); - }); mProcessor = new CommandProcessor(mPipeline.data(), QList() << &mUserQueue << &mSynchronizerQueue); mProcessor->setInspectionCommand([this](void const *command, size_t size) { flatbuffers::Verifier verifier((const uint8_t *)command, size); @@ -290,9 +285,7 @@ GenericResource::GenericResource(const QByteArray &resourceType, const QByteArra }); QObject::connect(mProcessor, &CommandProcessor::error, [this](int errorCode, const QString &msg) { onProcessorError(errorCode, msg); }); QObject::connect(mPipeline.data(), &Pipeline::revisionUpdated, this, &Resource::revisionUpdated); - enableChangeReplay(true); mClientLowerBoundRevision = mPipeline->cleanedUpRevision(); - mProcessor->setOldestUsedRevision(mChangeReplay->getLastReplayedRevision()); mCommitQueueTimer.setInterval(sCommitInterval); mCommitQueueTimer.setSingleShot(true); @@ -313,6 +306,7 @@ KAsync::Job GenericResource::inspect( void GenericResource::enableChangeReplay(bool enable) { + Q_ASSERT(mChangeReplay); if (enable) { QObject::connect(mPipeline.data(), &Pipeline::revisionUpdated, mChangeReplay.data(), &ChangeReplay::revisionChanged, Qt::QueuedConnection); QObject::connect(mChangeReplay.data(), &ChangeReplay::changesReplayed, this, &GenericResource::updateLowerBoundRevision); @@ -323,11 +317,25 @@ void GenericResource::enableChangeReplay(bool enable) } } -void GenericResource::addType(const QByteArray &type, DomainTypeAdaptorFactoryInterface::Ptr factory, const QVector &preprocessors) +void GenericResource::setupPreprocessors(const QByteArray &type, const QVector &preprocessors) { mPipeline->setPreprocessors(type, preprocessors); } +void GenericResource::setupSynchronizer(const QSharedPointer &synchronizer) +{ + mSynchronizer = synchronizer; + mSynchronizer->setup([this](int commandId, const QByteArray &data) { + enqueueCommand(mSynchronizerQueue, commandId, data); + }); +} + +void GenericResource::setupChangereplay(const QSharedPointer &changeReplay) +{ + mChangeReplay = changeReplay; + mProcessor->setOldestUsedRevision(mChangeReplay->getLastReplayedRevision()); + enableChangeReplay(true); +} void GenericResource::removeDataFromDisk() { @@ -406,11 +414,6 @@ KAsync::Job GenericResource::synchronizeWithSource() }); } -KAsync::Job GenericResource::synchronizeWithSource(Sink::Storage &mainStore, Sink::Storage &synchronizationStore) -{ - return KAsync::null(); -} - static void waitForDrained(KAsync::Future &f, MessageQueue &queue) { if (queue.isEmpty()) { -- cgit v1.2.3