summaryrefslogtreecommitdiff
path: root/src/mbgl/storage
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-12-18 15:27:00 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-12-18 15:48:20 -0800
commitec5afdd8b78224593bc9f29ef2c6e7c6cde60579 (patch)
tree15f26f76604e20ec0379d5c86867ebbaf4f91662 /src/mbgl/storage
parent20d2ceef4b6c74c83dd1d77648ee46f3e593d268 (diff)
downloadqtlocation-mapboxgl-ec5afdd8b78224593bc9f29ef2c6e7c6cde60579.tar.gz
[core] Merge default_file_source_impl.hpp into default_file_source.cpp
After previous refactors, no other files include default_file_source_imp.hpp.
Diffstat (limited to 'src/mbgl/storage')
-rw-r--r--src/mbgl/storage/default_file_source.cpp103
-rw-r--r--src/mbgl/storage/default_file_source_impl.hpp115
2 files changed, 102 insertions, 116 deletions
diff --git a/src/mbgl/storage/default_file_source.cpp b/src/mbgl/storage/default_file_source.cpp
index 367c083360..3a8a09a99c 100644
--- a/src/mbgl/storage/default_file_source.cpp
+++ b/src/mbgl/storage/default_file_source.cpp
@@ -1,4 +1,4 @@
-#include <mbgl/storage/default_file_source_impl.hpp>
+#include <mbgl/storage/default_file_source.hpp>
#include <mbgl/storage/asset_context_base.hpp>
#include <mbgl/storage/http_context_base.hpp>
#include <mbgl/storage/network_status.hpp>
@@ -11,6 +11,9 @@
#include <mbgl/util/mapbox.hpp>
#include <mbgl/util/exception.hpp>
#include <mbgl/util/chrono.hpp>
+#include <mbgl/util/async_task.hpp>
+#include <mbgl/util/noncopyable.hpp>
+#include <mbgl/util/timer.hpp>
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wshadow"
@@ -21,11 +24,109 @@
#include <algorithm>
#include <cassert>
+#include <set>
+#include <unordered_map>
namespace algo = boost::algorithm;
namespace mbgl {
+class RequestBase;
+
+class DefaultFileRequest : public FileRequest {
+public:
+ DefaultFileRequest(const Resource& resource_,
+ DefaultFileSource& fileSource_)
+ : resource(resource_),
+ fileSource(fileSource_) {
+ }
+
+ ~DefaultFileRequest() {
+ fileSource.cancel(resource, this);
+ }
+
+ Resource resource;
+ DefaultFileSource& fileSource;
+
+ std::unique_ptr<WorkRequest> workRequest;
+};
+
+class DefaultFileRequestImpl : public util::noncopyable {
+public:
+ using Callback = std::function<void (Response)>;
+
+ const Resource resource;
+ std::unique_ptr<WorkRequest> cacheRequest;
+ RequestBase* realRequest = nullptr;
+ std::unique_ptr<util::Timer> timerRequest;
+
+ inline DefaultFileRequestImpl(const Resource& resource_)
+ : resource(resource_) {}
+
+ ~DefaultFileRequestImpl();
+
+ // Observer accessors.
+ void addObserver(FileRequest*, Callback);
+ void removeObserver(FileRequest*);
+ bool hasObservers() const;
+
+ // Updates/gets the response of this request object.
+ void setResponse(const std::shared_ptr<const Response>&);
+ const std::shared_ptr<const Response>& getResponse() const;
+
+ // Returns the seconds we have to wait until we need to redo this request. A value of 0
+ // means that we need to redo it immediately, and a negative value means that we're not setting
+ // a timeout at all.
+ Seconds getRetryTimeout() const;
+
+ // Checks the currently stored response and replaces it with an idential one, except with the
+ // stale flag set, if the response is expired.
+ void checkResponseFreshness();
+
+ // Notifies all observers.
+ void notify();
+
+
+private:
+ // Stores a set of all observing Request objects.
+ std::unordered_map<FileRequest*, Callback> observers;
+
+ // The current response data. We're storing it because we can satisfy requests for the same
+ // resource directly by returning this response object. We also need it to create conditional
+ // HTTP requests, and to check whether new responses we got changed any data.
+ std::shared_ptr<const Response> response;
+
+ // Counts the number of subsequent failed requests. We're using this value for exponential
+ // backoff when retrying requests.
+ int failedRequests = 0;
+};
+
+class DefaultFileSource::Impl {
+public:
+ using Callback = std::function<void (Response)>;
+
+ Impl(FileCache*, const std::string& = "");
+ ~Impl();
+
+ void networkIsReachableAgain();
+
+ void add(Resource, FileRequest*, Callback);
+ void cancel(Resource, FileRequest*);
+
+private:
+ void update(DefaultFileRequestImpl&);
+ void startCacheRequest(DefaultFileRequestImpl&);
+ void startRealRequest(DefaultFileRequestImpl&);
+ void reschedule(DefaultFileRequestImpl&);
+
+ std::unordered_map<Resource, std::unique_ptr<DefaultFileRequestImpl>, Resource::Hash> pending;
+ FileCache* const cache;
+ const std::string assetRoot;
+ const std::unique_ptr<AssetContextBase> assetContext;
+ const std::unique_ptr<HTTPContextBase> httpContext;
+ util::AsyncTask reachability;
+};
+
DefaultFileSource::DefaultFileSource(FileCache* cache, const std::string& root)
: thread(std::make_unique<util::Thread<Impl>>(
util::ThreadContext{ "FileSource", util::ThreadType::Unknown, util::ThreadPriority::Low },
diff --git a/src/mbgl/storage/default_file_source_impl.hpp b/src/mbgl/storage/default_file_source_impl.hpp
deleted file mode 100644
index 9b5f97332a..0000000000
--- a/src/mbgl/storage/default_file_source_impl.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-#ifndef MBGL_STORAGE_DEFAULT_DEFAULT_FILE_SOURCE_IMPL
-#define MBGL_STORAGE_DEFAULT_DEFAULT_FILE_SOURCE_IMPL
-
-#include <mbgl/storage/default_file_source.hpp>
-#include <mbgl/storage/asset_context_base.hpp>
-#include <mbgl/storage/http_context_base.hpp>
-#include <mbgl/util/async_task.hpp>
-#include <mbgl/util/noncopyable.hpp>
-#include <mbgl/util/chrono.hpp>
-#include <mbgl/util/timer.hpp>
-
-#include <set>
-#include <unordered_map>
-
-namespace mbgl {
-
-class RequestBase;
-
-class DefaultFileRequest : public FileRequest {
-public:
- DefaultFileRequest(const Resource& resource_,
- DefaultFileSource& fileSource_)
- : resource(resource_),
- fileSource(fileSource_) {
- }
-
- ~DefaultFileRequest() {
- fileSource.cancel(resource, this);
- }
-
- Resource resource;
- DefaultFileSource& fileSource;
-
- std::unique_ptr<WorkRequest> workRequest;
-};
-
-class DefaultFileRequestImpl : public util::noncopyable {
-public:
- using Callback = std::function<void (Response)>;
-
- const Resource resource;
- std::unique_ptr<WorkRequest> cacheRequest;
- RequestBase* realRequest = nullptr;
- std::unique_ptr<util::Timer> timerRequest;
-
- inline DefaultFileRequestImpl(const Resource& resource_)
- : resource(resource_) {}
-
- ~DefaultFileRequestImpl();
-
- // Observer accessors.
- void addObserver(FileRequest*, Callback);
- void removeObserver(FileRequest*);
- bool hasObservers() const;
-
- // Updates/gets the response of this request object.
- void setResponse(const std::shared_ptr<const Response>&);
- const std::shared_ptr<const Response>& getResponse() const;
-
- // Returns the seconds we have to wait until we need to redo this request. A value of 0
- // means that we need to redo it immediately, and a negative value means that we're not setting
- // a timeout at all.
- Seconds getRetryTimeout() const;
-
- // Checks the currently stored response and replaces it with an idential one, except with the
- // stale flag set, if the response is expired.
- void checkResponseFreshness();
-
- // Notifies all observers.
- void notify();
-
-
-private:
- // Stores a set of all observing Request objects.
- std::unordered_map<FileRequest*, Callback> observers;
-
- // The current response data. We're storing it because we can satisfy requests for the same
- // resource directly by returning this response object. We also need it to create conditional
- // HTTP requests, and to check whether new responses we got changed any data.
- std::shared_ptr<const Response> response;
-
- // Counts the number of subsequent failed requests. We're using this value for exponential
- // backoff when retrying requests.
- int failedRequests = 0;
-};
-
-class DefaultFileSource::Impl {
-public:
- using Callback = std::function<void (Response)>;
-
- Impl(FileCache*, const std::string& = "");
- ~Impl();
-
- void networkIsReachableAgain();
-
- void add(Resource, FileRequest*, Callback);
- void cancel(Resource, FileRequest*);
-
-private:
- void update(DefaultFileRequestImpl&);
- void startCacheRequest(DefaultFileRequestImpl&);
- void startRealRequest(DefaultFileRequestImpl&);
- void reschedule(DefaultFileRequestImpl&);
-
- std::unordered_map<Resource, std::unique_ptr<DefaultFileRequestImpl>, Resource::Hash> pending;
- FileCache* const cache;
- const std::string assetRoot;
- const std::unique_ptr<AssetContextBase> assetContext;
- const std::unique_ptr<HTTPContextBase> httpContext;
- util::AsyncTask reachability;
-};
-
-} // namespace mbgl
-
-#endif