summaryrefslogtreecommitdiff
path: root/platform/default/default_file_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/default_file_source.cpp')
-rw-r--r--platform/default/default_file_source.cpp41
1 files changed, 32 insertions, 9 deletions
diff --git a/platform/default/default_file_source.cpp b/platform/default/default_file_source.cpp
index c4222b5a12..20a3eadc8b 100644
--- a/platform/default/default_file_source.cpp
+++ b/platform/default/default_file_source.cpp
@@ -29,11 +29,11 @@ public:
Impl(const std::string& cachePath, uint64_t maximumCacheSize)
: offlineDatabase(cachePath, maximumCacheSize) {
}
-
+
void setAPIBaseURL(const std::string& url) {
onlineFileSource.setAPIBaseURL(url);
}
-
+
std::string getAPIBaseURL() const{
return onlineFileSource.getAPIBaseURL();
}
@@ -46,6 +46,10 @@ public:
return onlineFileSource.getAccessToken();
}
+ void setResourceTransform(OnlineFileSource::ResourceTransform&& transform) {
+ onlineFileSource.setResourceTransform(std::move(transform));
+ }
+
void listRegions(std::function<void (std::exception_ptr, optional<std::vector<OfflineRegion>>)> callback) {
try {
callback({}, offlineDatabase.listRegions());
@@ -63,7 +67,7 @@ public:
callback(std::current_exception(), {});
}
}
-
+
void updateMetadata(const int64_t regionID,
const OfflineRegionMetadata& metadata,
std::function<void (std::exception_ptr, optional<OfflineRegionMetadata>)> callback) {
@@ -172,19 +176,30 @@ DefaultFileSource::DefaultFileSource(const std::string& cachePath,
DefaultFileSource::~DefaultFileSource() = default;
void DefaultFileSource::setAPIBaseURL(const std::string& baseURL) {
- thread->invokeSync(&Impl::setAPIBaseURL, baseURL);
+ thread->invoke(&Impl::setAPIBaseURL, baseURL);
+ cachedBaseURL = baseURL;
}
-
+
std::string DefaultFileSource::getAPIBaseURL() const {
- return thread->invokeSync(&Impl::getAPIBaseURL);
+ return cachedBaseURL;
}
-
+
void DefaultFileSource::setAccessToken(const std::string& accessToken) {
- thread->invokeSync(&Impl::setAccessToken, accessToken);
+ thread->invoke(&Impl::setAccessToken, accessToken);
+ cachedAccessToken = accessToken;
}
std::string DefaultFileSource::getAccessToken() const {
- return thread->invokeSync(&Impl::getAccessToken);
+ return cachedAccessToken;
+}
+
+void DefaultFileSource::setResourceTransform(std::function<std::string(Resource::Kind, std::string&&)> transform) {
+ auto loop = util::RunLoop::Get();
+ thread->invoke(&Impl::setResourceTransform, [loop, transform](Resource::Kind kind_, std::string&& url_, auto callback_) {
+ return loop->invokeWithCallback([transform](Resource::Kind kind, std::string&& url, auto callback) {
+ callback(transform(kind, std::move(url)));
+ }, kind_, std::move(url_), callback_);
+ });
}
std::unique_ptr<AsyncRequest> DefaultFileSource::request(const Resource& resource, Callback callback) {
@@ -248,6 +263,14 @@ void DefaultFileSource::setOfflineMapboxTileCountLimit(uint64_t limit) const {
thread->invokeSync(&Impl::setOfflineMapboxTileCountLimit, limit);
}
+void DefaultFileSource::pause() {
+ thread->pause();
+}
+
+void DefaultFileSource::resume() {
+ thread->resume();
+}
+
// For testing only:
void DefaultFileSource::put(const Resource& resource, const Response& response) {