From 1e3a744d2296feb2fd6b5d7da324bb31b6ee17c6 Mon Sep 17 00:00:00 2001 From: Huyen Chau Nguyen Date: Wed, 17 Oct 2018 20:12:28 +0200 Subject: [core] add priorities to resources - priorities can be low or regular - offline downloads should have low priority to not throttle "regular requests" --- include/mbgl/storage/resource.hpp | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'include') diff --git a/include/mbgl/storage/resource.hpp b/include/mbgl/storage/resource.hpp index 318fa389f4..97b9fbcaf0 100644 --- a/include/mbgl/storage/resource.hpp +++ b/include/mbgl/storage/resource.hpp @@ -24,6 +24,11 @@ public: Image }; + enum class Priority : bool { + Regular, + Low + }; + struct TileData { std::string urlTemplate; uint8_t pixelRatio; @@ -44,34 +49,41 @@ public: Resource(Kind kind_, std::string url_, + Priority priority_ = Resource::Priority::Regular, optional tileData_ = {}, LoadingMethod loadingMethod_ = LoadingMethod::All) : kind(kind_), loadingMethod(loadingMethod_), + priority(priority_), url(std::move(url_)), tileData(std::move(tileData_)) { } + void setPriority(Priority p) { priority = p; } + bool hasLoadingMethod(LoadingMethod method); - static Resource style(const std::string& url); - static Resource source(const std::string& url); + static Resource style(const std::string& url, const Priority priority = Resource::Priority::Regular); + static Resource source(const std::string& url, const Priority priority = Resource::Priority::Regular); static Resource tile(const std::string& urlTemplate, float pixelRatio, int32_t x, int32_t y, int8_t z, Tileset::Scheme scheme, + const Priority priority = Resource::Priority::Regular, LoadingMethod = LoadingMethod::All); static Resource glyphs(const std::string& urlTemplate, const FontStack& fontStack, - const std::pair& glyphRange); - static Resource spriteImage(const std::string& base, float pixelRatio); - static Resource spriteJSON(const std::string& base, float pixelRatio); - static Resource image(const std::string& url); - + const std::pair& glyphRange, + const Priority priority = Resource::Priority::Regular); + static Resource spriteImage(const std::string& base, float pixelRatio, const Priority priority = Resource::Priority::Regular); + static Resource spriteJSON(const std::string& base, float pixelRatio, const Priority priority = Resource::Priority::Regular); + static Resource image(const std::string& url, const Priority priority = Resource::Priority::Regular); + Kind kind; LoadingMethod loadingMethod; + Priority priority; std::string url; // Includes auxiliary data if this is a tile request. -- cgit v1.2.1