diff options
author | Juha Alanen <juha.alanen@mapbox.com> | 2019-10-10 12:17:34 +0300 |
---|---|---|
committer | Juha Alanen <juha.alanen@mapbox.com> | 2019-10-16 14:14:46 +0300 |
commit | b53093b5221efb6f98f712f734b823ffce1400e1 (patch) | |
tree | 6050cda5c43b9c84c1273109f5c2e625e8464817 /render-test/file_source.cpp | |
parent | ee2b8033153bff0baeb5973dd400e5f867d86e03 (diff) | |
download | qtlocation-mapboxgl-b53093b5221efb6f98f712f734b823ffce1400e1.tar.gz |
[render-test] Add support for collecting network metrics
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 |