diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2016-05-12 15:13:21 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2016-05-12 15:13:21 +0200 |
commit | 3bde525711deee3327c3c4efda831db3e678b1d1 (patch) | |
tree | 4858182faef3b5feb217c9f96914d0af3e24061d /platform/default/default_file_source.cpp | |
parent | 1a030e7c3347f08329d2787cde37cfa0958baad4 (diff) | |
download | qtlocation-mapboxgl-3bde525711deee3327c3c4efda831db3e678b1d1.tar.gz |
[core] remove indirection via Task object in DefaultFileSource
Diffstat (limited to 'platform/default/default_file_source.cpp')
-rw-r--r-- | platform/default/default_file_source.cpp | 41 |
1 files changed, 16 insertions, 25 deletions
diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp index fb42690f02..afcb63e945 100644 --- a/platform/default/default_file_source.cpp +++ b/platform/default/default_file_source.cpp @@ -25,29 +25,6 @@ namespace mbgl { class DefaultFileSource::Impl { public: - class Task { - public: - Task(Resource resource, FileSource::Callback callback, DefaultFileSource::Impl* impl) { - auto offlineResponse = impl->offlineDatabase.get(resource); - - Resource revalidation = resource; - - if (offlineResponse) { - revalidation.priorModified = offlineResponse->modified; - revalidation.priorExpires = offlineResponse->expires; - revalidation.priorEtag = offlineResponse->etag; - callback(*offlineResponse); - } - - onlineRequest = impl->onlineFileSource.request(revalidation, [=] (Response onlineResponse) { - impl->offlineDatabase.put(revalidation, onlineResponse); - callback(onlineResponse); - }); - } - - std::unique_ptr<AsyncRequest> onlineRequest; - }; - Impl(const std::string& cachePath, uint64_t maximumCacheSize) : offlineDatabase(cachePath, maximumCacheSize) { } @@ -105,7 +82,21 @@ public: } void request(AsyncRequest* req, Resource resource, Callback callback) { - tasks[req] = std::make_unique<Task>(resource, callback, this); + auto offlineResponse = offlineDatabase.get(resource); + + Resource revalidation = resource; + + if (offlineResponse) { + revalidation.priorModified = offlineResponse->modified; + revalidation.priorExpires = offlineResponse->expires; + revalidation.priorEtag = offlineResponse->etag; + callback(*offlineResponse); + } + + tasks[req] = onlineFileSource.request(revalidation, [=] (Response onlineResponse) { + this->offlineDatabase.put(revalidation, onlineResponse); + callback(onlineResponse); + }); } void cancel(AsyncRequest* req) { @@ -132,7 +123,7 @@ private: OfflineDatabase offlineDatabase; OnlineFileSource onlineFileSource; - std::unordered_map<AsyncRequest*, std::unique_ptr<Task>> tasks; + std::unordered_map<AsyncRequest*, std::unique_ptr<AsyncRequest>> tasks; std::unordered_map<int64_t, std::unique_ptr<OfflineDownload>> downloads; }; |