From db477b2f35411a55c051d59588b6fabd153e4013 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Mon, 19 Jan 2015 03:16:29 +0100 Subject: Fixed pipeline. Steps are now finally processed as they should be and a job tracks the processing progress. --- dummyresource/resourcefactory.cpp | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'dummyresource') diff --git a/dummyresource/resourcefactory.cpp b/dummyresource/resourcefactory.cpp index dc716ef..6fe10ec 100644 --- a/dummyresource/resourcefactory.cpp +++ b/dummyresource/resourcefactory.cpp @@ -43,19 +43,27 @@ class SimpleProcessor : public Akonadi2::Preprocessor { public: - SimpleProcessor(const std::function &f) + SimpleProcessor(const QString &id, const std::function &f) : Akonadi2::Preprocessor(), - mFunction(f) + mFunction(f), + mId(id) { } - void process(const Akonadi2::PipelineState &state, const Akonadi2::Entity &e) { + void process(const Akonadi2::PipelineState &state, const Akonadi2::Entity &e) Q_DECL_OVERRIDE + { mFunction(state, e); processingCompleted(state); } + QString id() const + { + return mId; + } + protected: std::function mFunction; + QString mId; }; // template @@ -166,7 +174,7 @@ private slots: break; case Akonadi2::Commands::CreateEntityCommand: { //TODO job lifetime management - mPipeline->newEntity(queuedCommand->command()->Data(), queuedCommand->command()->size()).then([&messageQueueCallback, whileCallback](Async::Future &future) { + mPipeline->newEntity(queuedCommand->command()->Data(), queuedCommand->command()->size()).then([messageQueueCallback, whileCallback](Async::Future &future) { messageQueueCallback(true); whileCallback(false); future.setFinished(); @@ -239,7 +247,7 @@ void DummyResource::configurePipeline(Akonadi2::Pipeline *pipeline) //i.e. If a resource stores tags as part of each message it needs to update the tag index //TODO setup preprocessors for each domain type and pipeline type allowing full customization //Eventually the order should be self configuring, for now it's hardcoded. - auto eventIndexer = new SimpleProcessor([eventFactory](const Akonadi2::PipelineState &state, const Akonadi2::Entity &entity) { + auto eventIndexer = new SimpleProcessor("summaryprocessor", [eventFactory](const Akonadi2::PipelineState &state, const Akonadi2::Entity &entity) { auto adaptor = eventFactory->createAdaptor(entity); qDebug() << "Summary preprocessor: " << adaptor->getProperty("summary").toString(); }); -- cgit v1.2.3