diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-01-18 14:29:08 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-01-18 14:29:08 +0100 |
commit | d417f01e2eebeedfaae76b40667372bd0fb21fea (patch) | |
tree | ab0749c576e0c3fe4ff621c50cbdc038beab2185 /dummyresource/facade.cpp | |
parent | 47b4442c585a25b2e4b857f2d9e3ab371d942c19 (diff) | |
download | sink-d417f01e2eebeedfaae76b40667372bd0fb21fea.tar.gz sink-d417f01e2eebeedfaae76b40667372bd0fb21fea.zip |
Use jobs in queries, sync works again.
Diffstat (limited to 'dummyresource/facade.cpp')
-rw-r--r-- | dummyresource/facade.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/dummyresource/facade.cpp b/dummyresource/facade.cpp index 13c174b..b7ba2c2 100644 --- a/dummyresource/facade.cpp +++ b/dummyresource/facade.cpp | |||
@@ -118,22 +118,29 @@ static std::function<bool(const std::string &key, DummyEvent const *buffer)> pre | |||
118 | return preparedQuery; | 118 | return preparedQuery; |
119 | } | 119 | } |
120 | 120 | ||
121 | void DummyResourceFacade::synchronizeResource(const std::function<void()> &continuation) | 121 | Async::Job<void> DummyResourceFacade::synchronizeResource(bool sync) |
122 | { | 122 | { |
123 | //TODO check if a sync is necessary | 123 | //TODO check if a sync is necessary |
124 | //TODO Only sync what was requested | 124 | //TODO Only sync what was requested |
125 | //TODO timeout | 125 | //TODO timeout |
126 | mResourceAccess->synchronizeResource().then<void>([continuation](Async::Future<void> &f){ | 126 | |
127 | continuation(); | 127 | if (sync) { |
128 | f.setFinished(); | 128 | return Async::start<void>([=](Async::Future<void> &future) { |
129 | }).exec(); | 129 | mResourceAccess->open(); |
130 | mResourceAccess->synchronizeResource().then<void>([&future](Async::Future<void> &f) { | ||
131 | future.setFinished(); | ||
132 | f.setFinished(); | ||
133 | }).exec(); | ||
134 | }); | ||
135 | } | ||
136 | return Async::null<void>(); | ||
130 | } | 137 | } |
131 | 138 | ||
132 | void DummyResourceFacade::load(const Akonadi2::Query &query, const std::function<void(const Akonadi2::Domain::Event::Ptr &)> &resultCallback, const std::function<void()> &completeCallback) | 139 | Async::Job<void> DummyResourceFacade::load(const Akonadi2::Query &query, const std::function<void(const Akonadi2::Domain::Event::Ptr &)> &resultCallback) |
133 | { | 140 | { |
134 | qDebug() << "load called"; | 141 | qDebug() << "load called"; |
135 | 142 | ||
136 | synchronizeResource([=]() { | 143 | return synchronizeResource(query.syncOnDemand).then<void>([=](Async::Future<void> &future) { |
137 | qDebug() << "sync complete"; | 144 | qDebug() << "sync complete"; |
138 | //Now that the sync is complete we can execute the query | 145 | //Now that the sync is complete we can execute the query |
139 | const auto preparedQuery = prepareQuery(query); | 146 | const auto preparedQuery = prepareQuery(query); |
@@ -188,7 +195,7 @@ void DummyResourceFacade::load(const Akonadi2::Query &query, const std::function | |||
188 | } | 195 | } |
189 | return true; | 196 | return true; |
190 | }); | 197 | }); |
191 | completeCallback(); | 198 | future.setFinished(); |
192 | }); | 199 | }); |
193 | } | 200 | } |
194 | 201 | ||