summaryrefslogtreecommitdiff
path: root/platform/default/default_file_source.cpp
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2016-05-12 15:13:21 +0200
committerKonstantin Käfer <mail@kkaefer.com>2016-05-12 15:13:21 +0200
commit3bde525711deee3327c3c4efda831db3e678b1d1 (patch)
tree4858182faef3b5feb217c9f96914d0af3e24061d /platform/default/default_file_source.cpp
parent1a030e7c3347f08329d2787cde37cfa0958baad4 (diff)
downloadqtlocation-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.cpp41
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;
};