diff options
author | Konstantin Käfer <mail@kkaefer.com> | 2015-03-04 12:32:14 +0100 |
---|---|---|
committer | Konstantin Käfer <mail@kkaefer.com> | 2015-03-06 08:21:47 -0800 |
commit | 9781785ab73e8394e8b92625cc4741952f47955d (patch) | |
tree | 1b9e6b86c1c9ca19bb1bf1c52bcd0e41410ced66 /include/mbgl/storage/default_file_source.hpp | |
parent | 8c0acecbe362be4a40638491b67ee5fe3d23a65e (diff) | |
download | qtlocation-mapboxgl-9781785ab73e8394e8b92625cc4741952f47955d.tar.gz |
scope Requests to an Environment object for easier cancelation
we are now scoping all file requests to an environment object. The FileSource implementation treats
this as an opaque pointer, but allows canceling all Requests that are associated with that pointer.
This is necessary to abort all file requests that originated from a particular Map object. Aborting
a file request is different from canceling a file request: A canceled request doesn't have its
callback called, while an aborted request will have its callback called with an error, indicating
that the environment is going to be shut down.
Diffstat (limited to 'include/mbgl/storage/default_file_source.hpp')
-rw-r--r-- | include/mbgl/storage/default_file_source.hpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index 86e2414041..14b4db6eff 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -20,11 +20,14 @@ class DefaultFileSource : public FileSource { public: DefaultFileSource(FileCache *cache, const std::string &root = ""); DefaultFileSource(FileCache *cache, uv_loop_t *loop, const std::string &root = ""); - ~DefaultFileSource(); + ~DefaultFileSource() override; - Request *request(const Resource &resource, uv_loop_t *loop, Callback callback); - void cancel(Request *request); - void request(const Resource &resource, Callback callback); + Request *request(const Resource &resource, uv_loop_t *loop, const Environment &env, + Callback callback) override; + void cancel(Request *request) override; + void request(const Resource &resource, const Environment &env, Callback callback) override; + + void abort(const Environment &env) override; enum class CacheHint : uint8_t { Full, Refresh, No }; void notify(SharedRequestBase *sharedRequest, const std::set<Request *> &observers, @@ -39,14 +42,16 @@ private: struct RemoveRequestAction; struct ResultAction; struct StopAction; - using Action = - mapbox::util::variant<AddRequestAction, RemoveRequestAction, ResultAction, 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); |