diff options
Diffstat (limited to 'render-test/file_source.cpp')
-rw-r--r-- | render-test/file_source.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/render-test/file_source.cpp b/render-test/file_source.cpp new file mode 100644 index 0000000000..0968f1d2f0 --- /dev/null +++ b/render-test/file_source.cpp @@ -0,0 +1,65 @@ +#include <mbgl/storage/resource_options.hpp> + +#include "file_source.hpp" + +namespace mbgl { + +std::atomic_size_t requestCount{0}; +std::atomic_size_t transferredSize{0}; +std::atomic_bool active{false}; + +ProxyFileSource::ProxyFileSource(const std::string& cachePath, + const std::string& assetPath, + bool supportCacheOnlyRequests_) + : DefaultFileSource(cachePath, assetPath, supportCacheOnlyRequests_) {} + +ProxyFileSource::ProxyFileSource(const std::string& cachePath, + std::unique_ptr<FileSource>&& assetFileSource_, + bool supportCacheOnlyRequests_) + : DefaultFileSource(cachePath, std::move(assetFileSource_), supportCacheOnlyRequests_) {} + +ProxyFileSource::~ProxyFileSource() = default; + +std::unique_ptr<AsyncRequest> ProxyFileSource::request(const Resource& resource, Callback callback) { + auto result = DefaultFileSource::request(resource, [=](Response response) { + std::size_t size = response.data != nullptr ? response.data->size() : 0; + if (active) { + requestCount++; + transferredSize += size; + } + callback(response); + }); + return result; +} + +std::shared_ptr<FileSource> FileSource::createPlatformFileSource(const ResourceOptions& options) { + auto fileSource = std::make_shared<ProxyFileSource>( + options.cachePath(), options.assetPath(), options.supportsCacheOnlyRequests()); + fileSource->setAccessToken(options.accessToken()); + fileSource->setAPIBaseURL(options.baseURL()); + return fileSource; +} + +// static +void ProxyFileSource::setTrackingActive(bool active_) { + active = active_; + requestCount = 0; + transferredSize = 0; +} + +// static +bool ProxyFileSource::isTrackingActive() { + return active; +} + +// static +size_t ProxyFileSource::getRequestCount() { + return requestCount; +} + +// static +size_t ProxyFileSource::getTransferredSize() { + return transferredSize; +} + +} // namespace mbgl |