diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-04-13 17:57:45 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-04-13 17:57:45 +0200 |
commit | 16849a341b72c0633be1e3c89498c883d6efb000 (patch) | |
tree | 7450e1c745c8dcd48af809a116bf4899cbc33608 /include/mbgl | |
parent | 278e6bd556865aa8cad688d4c671d19a1f5e6871 (diff) | |
download | qtlocation-mapboxgl-16849a341b72c0633be1e3c89498c883d6efb000.tar.gz |
hide Thread<> and separate the Implementation object
Diffstat (limited to 'include/mbgl')
-rw-r--r-- | include/mbgl/android/native_map_view.hpp | 5 | ||||
-rw-r--r-- | include/mbgl/storage/default/asset_request.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/storage/default/http_request.hpp | 2 | ||||
-rw-r--r-- | include/mbgl/storage/default/shared_request_base.hpp | 6 | ||||
-rw-r--r-- | include/mbgl/storage/default/sqlite_cache.hpp | 30 | ||||
-rw-r--r-- | include/mbgl/storage/default_file_source.hpp | 29 |
6 files changed, 19 insertions, 55 deletions
diff --git a/include/mbgl/android/native_map_view.hpp b/include/mbgl/android/native_map_view.hpp index 817b6bc8bb..21784f5315 100644 --- a/include/mbgl/android/native_map_view.hpp +++ b/include/mbgl/android/native_map_view.hpp @@ -4,7 +4,6 @@ #include <mbgl/map/map.hpp> #include <mbgl/map/view.hpp> #include <mbgl/util/noncopyable.hpp> -#include <mbgl/util/thread.hpp> #include <mbgl/storage/default/sqlite_cache.hpp> #include <mbgl/storage/default_file_source.hpp> @@ -62,8 +61,8 @@ private: ANativeWindow *window = nullptr; - mbgl::util::Thread<mbgl::SQLiteCache> fileCache; - mbgl::util::Thread<mbgl::DefaultFileSource> fileSource; + mbgl::SQLiteCache fileCache; + mbgl::DefaultFileSource fileSource; mbgl::Map map; EGLDisplay display = EGL_NO_DISPLAY; diff --git a/include/mbgl/storage/default/asset_request.hpp b/include/mbgl/storage/default/asset_request.hpp index 48f402fefe..48d421c3be 100644 --- a/include/mbgl/storage/default/asset_request.hpp +++ b/include/mbgl/storage/default/asset_request.hpp @@ -7,7 +7,7 @@ namespace mbgl { class AssetRequest : public SharedRequestBase { public: - AssetRequest(DefaultFileSource *source, const Resource &resource); + AssetRequest(DefaultFileSource::Impl *source, const Resource &resource); void start(uv_loop_t *loop, std::shared_ptr<const Response> response = nullptr); void cancel(); diff --git a/include/mbgl/storage/default/http_request.hpp b/include/mbgl/storage/default/http_request.hpp index 1cd38a8281..54e9a77ef0 100644 --- a/include/mbgl/storage/default/http_request.hpp +++ b/include/mbgl/storage/default/http_request.hpp @@ -7,7 +7,7 @@ namespace mbgl { class HTTPRequest : public SharedRequestBase { public: - HTTPRequest(DefaultFileSource *source, const Resource &resource); + HTTPRequest(DefaultFileSource::Impl *source, const Resource &resource); void start(uv_loop_t *loop, std::shared_ptr<const Response> response = nullptr); void cancel(); diff --git a/include/mbgl/storage/default/shared_request_base.hpp b/include/mbgl/storage/default/shared_request_base.hpp index 9c5f87b33d..efc78f603d 100644 --- a/include/mbgl/storage/default/shared_request_base.hpp +++ b/include/mbgl/storage/default/shared_request_base.hpp @@ -3,7 +3,7 @@ #include <mbgl/storage/resource.hpp> #include <mbgl/storage/file_cache.hpp> -#include <mbgl/storage/default_file_source.hpp> +#include <mbgl/storage/default_file_source_impl.hpp> #include <mbgl/storage/default/request.hpp> #include <mbgl/util/util.hpp> #include <mbgl/util/noncopyable.hpp> @@ -26,7 +26,7 @@ protected: MBGL_STORE_THREAD(tid) public: - SharedRequestBase(DefaultFileSource *source_, const Resource &resource_) + SharedRequestBase(DefaultFileSource::Impl *source_, const Resource &resource_) : resource(resource_), source(source_) {} virtual void start(uv_loop_t *loop, std::shared_ptr<const Response> response = nullptr) = 0; @@ -95,7 +95,7 @@ public: const Resource resource; protected: - DefaultFileSource *source = nullptr; + DefaultFileSource::Impl *source = nullptr; private: std::set<Request *> observers; diff --git a/include/mbgl/storage/default/sqlite_cache.hpp b/include/mbgl/storage/default/sqlite_cache.hpp index 899cc8a892..db672b222b 100644 --- a/include/mbgl/storage/default/sqlite_cache.hpp +++ b/include/mbgl/storage/default/sqlite_cache.hpp @@ -2,41 +2,27 @@ #define MBGL_STORAGE_DEFAULT_SQLITE_CACHE #include <mbgl/storage/file_cache.hpp> -#include <mbgl/util/run_loop.hpp> #include <string> -namespace mapbox { namespace sqlite { class Database; class Statement; } } - namespace mbgl { -class SQLiteCache : public FileCache, protected util::RunLoop { - friend class util::Thread<SQLiteCache>; +namespace util { +template <typename T> class Thread; +} -private: +class SQLiteCache : public FileCache { +public: SQLiteCache(const std::string &path = ":memory:"); - ~SQLiteCache(); + ~SQLiteCache() override; -public: // FileCache API void get(const Resource &resource, Callback callback) override; void put(const Resource &resource, std::shared_ptr<const Response> response, Hint hint) override; private: - void createDatabase(); - void createSchema(); - - void processGet(const Resource& resource, Callback callback); - void processPut(const Resource& resource, std::shared_ptr<const Response> response); - void processRefresh(const Resource& resource, int64_t expires); - -private: - const std::string path; - std::unique_ptr<::mapbox::sqlite::Database> db; - std::unique_ptr<::mapbox::sqlite::Statement> getStmt; - std::unique_ptr<::mapbox::sqlite::Statement> putStmt; - std::unique_ptr<::mapbox::sqlite::Statement> refreshStmt; - bool schema = false; + class Thread; + const std::unique_ptr<util::Thread<Thread>> thread; }; } diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index f6028217ea..372dee909b 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -5,22 +5,13 @@ #include <mbgl/storage/file_cache.hpp> #include <mbgl/util/run_loop.hpp> -#include <set> -#include <unordered_map> - namespace mbgl { -class SharedRequestBase; - -class DefaultFileSource : public FileSource, protected util::RunLoop { - friend class util::Thread<DefaultFileSource>; - friend class SharedRequestBase; - -private: +class DefaultFileSource : public FileSource { +public: DefaultFileSource(FileCache *cache, const std::string &root = ""); ~DefaultFileSource() override; -public: // FileSource API Request *request(const Resource &resource, uv_loop_t *loop, const Environment &env, Callback callback) override; @@ -29,22 +20,10 @@ public: void abort(const Environment &env) override; -private: - void notify(SharedRequestBase *sharedRequest, const std::set<Request *> &observers, - std::shared_ptr<const Response> response, FileCache::Hint hint); - SharedRequestBase *find(const Resource &resource); - - void processAdd(Request* request); - void processCancel(Request* request); - void processResult(const Resource& resource, std::shared_ptr<const Response> response); - void processAbort(const Environment& env); - public: - const std::string assetRoot; - + class Impl; private: - std::unordered_map<Resource, SharedRequestBase *, Resource::Hash> pending; - FileCache *cache = nullptr; + const std::unique_ptr<util::Thread<Impl>> thread; }; } |