diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-11-30 11:09:31 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2015-11-30 11:09:31 +0100 |
commit | b5648af02ea7246b41d24e242c5f94e43e43980e (patch) | |
tree | 141fa70a3336bde700b232e5d978b04c3eb8a887 /common/resultprovider.h | |
parent | f715898a1b6781e2860727942ce510f324a23c71 (diff) | |
download | sink-b5648af02ea7246b41d24e242c5f94e43e43980e.tar.gz sink-b5648af02ea7246b41d24e242c5f94e43e43980e.zip |
Provide status information about children fetch state
The fetch state is per parent.
Diffstat (limited to 'common/resultprovider.h')
-rw-r--r-- | common/resultprovider.h | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/common/resultprovider.h b/common/resultprovider.h index 6d7867a..d50f3f6 100644 --- a/common/resultprovider.h +++ b/common/resultprovider.h | |||
@@ -50,7 +50,7 @@ public: | |||
50 | virtual void add(const T &value) = 0; | 50 | virtual void add(const T &value) = 0; |
51 | virtual void modify(const T &value) = 0; | 51 | virtual void modify(const T &value) = 0; |
52 | virtual void remove(const T &value) = 0; | 52 | virtual void remove(const T &value) = 0; |
53 | virtual void initialResultSetComplete() = 0; | 53 | virtual void initialResultSetComplete(const T &parent) = 0; |
54 | virtual void complete() = 0; | 54 | virtual void complete() = 0; |
55 | virtual void clear() = 0; | 55 | virtual void clear() = 0; |
56 | virtual void setFetcher(const std::function<void(const T &parent)> &fetcher) = 0; | 56 | virtual void setFetcher(const std::function<void(const T &parent)> &fetcher) = 0; |
@@ -144,9 +144,15 @@ public: | |||
144 | }); | 144 | }); |
145 | } | 145 | } |
146 | 146 | ||
147 | void initialResultSetComplete() | 147 | void initialResultSetComplete(const T &parent) |
148 | { | 148 | { |
149 | callInMainThreadOnEmitter(&ResultEmitter<T>::initialResultSetComplete); | 149 | //Because I don't know how to use bind |
150 | auto weakEmitter = mResultEmitter; | ||
151 | callInMainThreadOnEmitter([weakEmitter, parent](){ | ||
152 | if (auto strongRef = weakEmitter.toStrongRef()) { | ||
153 | strongRef->initialResultSetComplete(parent); | ||
154 | } | ||
155 | }); | ||
150 | } | 156 | } |
151 | 157 | ||
152 | //Called from worker thread | 158 | //Called from worker thread |
@@ -244,7 +250,7 @@ public: | |||
244 | removeHandler = handler; | 250 | removeHandler = handler; |
245 | } | 251 | } |
246 | 252 | ||
247 | void onInitialResultSetComplete(const std::function<void(void)> &handler) | 253 | void onInitialResultSetComplete(const std::function<void(const DomainType&)> &handler) |
248 | { | 254 | { |
249 | initialResultSetCompleteHandler = handler; | 255 | initialResultSetCompleteHandler = handler; |
250 | } | 256 | } |
@@ -274,19 +280,25 @@ public: | |||
274 | removeHandler(value); | 280 | removeHandler(value); |
275 | } | 281 | } |
276 | 282 | ||
277 | void initialResultSetComplete() | 283 | void initialResultSetComplete(const DomainType &parent) |
278 | { | 284 | { |
279 | initialResultSetCompleteHandler(); | 285 | if (initialResultSetCompleteHandler) { |
286 | initialResultSetCompleteHandler(parent); | ||
287 | } | ||
280 | } | 288 | } |
281 | 289 | ||
282 | void complete() | 290 | void complete() |
283 | { | 291 | { |
284 | completeHandler(); | 292 | if (completeHandler) { |
293 | completeHandler(); | ||
294 | } | ||
285 | } | 295 | } |
286 | 296 | ||
287 | void clear() | 297 | void clear() |
288 | { | 298 | { |
289 | clearHandler(); | 299 | if (clearHandler) { |
300 | clearHandler(); | ||
301 | } | ||
290 | } | 302 | } |
291 | 303 | ||
292 | void setFetcher(const std::function<void(const DomainType &parent)> &fetcher) | 304 | void setFetcher(const std::function<void(const DomainType &parent)> &fetcher) |
@@ -302,7 +314,7 @@ private: | |||
302 | std::function<void(const DomainType&)> addHandler; | 314 | std::function<void(const DomainType&)> addHandler; |
303 | std::function<void(const DomainType&)> modifyHandler; | 315 | std::function<void(const DomainType&)> modifyHandler; |
304 | std::function<void(const DomainType&)> removeHandler; | 316 | std::function<void(const DomainType&)> removeHandler; |
305 | std::function<void(void)> initialResultSetCompleteHandler; | 317 | std::function<void(const DomainType&)> initialResultSetCompleteHandler; |
306 | std::function<void(void)> completeHandler; | 318 | std::function<void(void)> completeHandler; |
307 | std::function<void(void)> clearHandler; | 319 | std::function<void(void)> clearHandler; |
308 | ThreadBoundary mThreadBoundary; | 320 | ThreadBoundary mThreadBoundary; |