diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-04-10 22:37:27 +0200 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-04-10 22:37:27 +0200 |
commit | 4c7132337f96486a154e75efe394f5a1c06a77a7 (patch) | |
tree | a1b49335556b5f09bd51173344899e9f2446597d /include/mbgl/storage/default_file_source.hpp | |
parent | bd531b9e080f3300c6947b0e0e515218bb395f45 (diff) | |
download | qtlocation-mapboxgl-4c7132337f96486a154e75efe394f5a1c06a77a7.tar.gz |
convert DefaultFileSource to use util::Thread<>
Diffstat (limited to 'include/mbgl/storage/default_file_source.hpp')
-rw-r--r-- | include/mbgl/storage/default_file_source.hpp | 45 |
1 files changed, 15 insertions, 30 deletions
diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index 7aab54f731..f6028217ea 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -3,25 +3,25 @@ #include <mbgl/storage/file_source.hpp> #include <mbgl/storage/file_cache.hpp> +#include <mbgl/util/run_loop.hpp> #include <set> #include <unordered_map> -#include <thread> - -namespace mapbox { namespace util { template<typename... Types> class variant; } } namespace mbgl { -namespace util { template <typename T> class AsyncQueue; } - class SharedRequestBase; -class DefaultFileSource : public FileSource { -public: +class DefaultFileSource : public FileSource, protected util::RunLoop { + friend class util::Thread<DefaultFileSource>; + friend class SharedRequestBase; + +private: DefaultFileSource(FileCache *cache, const std::string &root = ""); - DefaultFileSource(FileCache *cache, uv_loop_t *loop, const std::string &root = ""); ~DefaultFileSource() override; +public: + // FileSource API Request *request(const Resource &resource, uv_loop_t *loop, const Environment &env, Callback callback) override; void cancel(Request *request) override; @@ -29,37 +29,22 @@ 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; private: - struct ActionDispatcher; - struct AddRequestAction; - struct RemoveRequestAction; - struct ResultAction; - struct StopAction; - struct AbortAction; - using Action = mapbox::util::variant<AddRequestAction, RemoveRequestAction, ResultAction, - StopAction, AbortAction>; - using Queue = util::AsyncQueue<Action>; - - void process(AddRequestAction &action); - void process(RemoveRequestAction &action); - void process(ResultAction &action); - void process(StopAction &action); - void process(AbortAction &action); - - SharedRequestBase *find(const Resource &resource); - std::unordered_map<Resource, SharedRequestBase *, Resource::Hash> pending; - - uv_loop_t *loop = nullptr; FileCache *cache = nullptr; - Queue *queue = nullptr; - std::thread thread; }; } |