diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-05-14 14:54:24 +0200 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-05-21 12:17:23 +0200 |
commit | 81e84432ae0aa8b2f3bb52e85c3b99afbadd17da (patch) | |
tree | 613fca75769bef8ea6bb3fe20b4c3f7c3090917b | |
parent | f210bbbb6c9532c5bdcf176e191bef9a0a9858c7 (diff) | |
download | qtlocation-mapboxgl-81e84432ae0aa8b2f3bb52e85c3b99afbadd17da.tar.gz |
[core] invoke optional resource path change completion listener
-rw-r--r-- | include/mbgl/storage/default_file_source.hpp | 3 | ||||
-rw-r--r-- | platform/default/src/mbgl/storage/default_file_source.cpp | 9 | ||||
-rw-r--r-- | test/storage/default_file_source.test.cpp | 12 |
3 files changed, 20 insertions, 4 deletions
diff --git a/include/mbgl/storage/default_file_source.hpp b/include/mbgl/storage/default_file_source.hpp index 10a836094c..35bddf024a 100644 --- a/include/mbgl/storage/default_file_source.hpp +++ b/include/mbgl/storage/default_file_source.hpp @@ -17,6 +17,7 @@ template <typename T> class Thread; } // namespace util class ResourceTransform; +using PathChangeCallback = std::function<void ()>; class DefaultFileSource : public FileSource { public: @@ -47,7 +48,7 @@ public: void setResourceTransform(optional<ActorRef<ResourceTransform>>&&); - void setResourceCachePath(const std::string&); + void setResourceCachePath(const std::string&, optional<ActorRef<PathChangeCallback>>&&); std::unique_ptr<AsyncRequest> request(const Resource&, Callback) override; diff --git a/platform/default/src/mbgl/storage/default_file_source.cpp b/platform/default/src/mbgl/storage/default_file_source.cpp index 2768f9d113..eabb7b45c3 100644 --- a/platform/default/src/mbgl/storage/default_file_source.cpp +++ b/platform/default/src/mbgl/storage/default_file_source.cpp @@ -46,8 +46,11 @@ public: onlineFileSource.setResourceTransform(std::move(transform)); } - void setResourceCachePath(const std::string& path) { + void setResourceCachePath(const std::string& path, optional<ActorRef<PathChangeCallback>>&& callback) { offlineDatabase->changePath(path); + if (callback) { + callback->invoke(&PathChangeCallback::operator()); + } } void listRegions(std::function<void (expected<OfflineRegions, std::exception_ptr>)> callback) { @@ -252,8 +255,8 @@ void DefaultFileSource::setResourceTransform(optional<ActorRef<ResourceTransform impl->actor().invoke(&Impl::setResourceTransform, std::move(transform)); } -void DefaultFileSource::setResourceCachePath(const std::string& path) { - impl->actor().invoke(&Impl::setResourceCachePath, path); +void DefaultFileSource::setResourceCachePath(const std::string& path, optional<ActorRef<PathChangeCallback>>&& callback) { + impl->actor().invoke(&Impl::setResourceCachePath, path, std::move(callback)); } std::unique_ptr<AsyncRequest> DefaultFileSource::request(const Resource& resource, Callback callback) { diff --git a/test/storage/default_file_source.test.cpp b/test/storage/default_file_source.test.cpp index e1c5df6895..64b23e315c 100644 --- a/test/storage/default_file_source.test.cpp +++ b/test/storage/default_file_source.test.cpp @@ -572,6 +572,18 @@ TEST(DefaultFileSource, TEST_REQUIRES_SERVER(SetResourceTransform)) { loop.run(); } +TEST(DefaultFileSource, SetResourceCachePath) { + util::RunLoop loop; + DefaultFileSource fs(":memory:", "."); + + Actor<PathChangeCallback> callback(loop, [&]() -> void { + loop.stop(); + }); + + fs.setResourceCachePath("./new_offline.db", callback.self()); + loop.run(); +} + // Test that a stale cache file that has must-revalidate set will trigger a response. TEST(DefaultFileSource, TEST_REQUIRES_SERVER(RespondToStaleMustRevalidate)) { util::RunLoop loop; |