summaryrefslogtreecommitdiff
path: root/platform/default/online_file_source.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'platform/default/online_file_source.cpp')
-rw-r--r--platform/default/online_file_source.cpp33
1 files changed, 20 insertions, 13 deletions
diff --git a/platform/default/online_file_source.cpp b/platform/default/online_file_source.cpp
index 47ebbbeb45..6c930b3fec 100644
--- a/platform/default/online_file_source.cpp
+++ b/platform/default/online_file_source.cpp
@@ -98,7 +98,7 @@ public:
assert(activeRequests.find(request) == activeRequests.end());
assert(!request->request);
- if (activeRequests.size() >= HTTPFileSource::maximumConcurrentRequests()) {
+ if (activeRequests.size() >= getMaximumConcurrentRequests()) {
queueRequest(request);
} else {
activateRequest(request);
@@ -134,7 +134,9 @@ public:
auto request = pendingRequests.pop();
- if (request) activateRequest(*request);
+ if (request) {
+ activateRequest(*request);
+ }
}
bool isPending(OnlineFileRequest* request) {
@@ -154,15 +156,19 @@ public:
networkIsReachableAgain();
}
- void setMaximumConcurrentRequestsOverride(const uint32_t override) {
- maximumConcurrentRequestsOverride = override;
+ void setMaximumConcurrentRequestsOverride(const uint32_t maximumConcurrentRequestsOverride_) {
+ maximumConcurrentRequestsOverride = maximumConcurrentRequestsOverride_;
}
private:
- uint32_t getMaximumConcurrentRequests() {
- if (maximumConcurrentRequestsOverride > 0) return maximumConcurrentRequestsOverride;
- else return HTTPFileSource::maximumConcurrentRequests();
+ uint32_t getMaximumConcurrentRequests() const {
+ if (maximumConcurrentRequestsOverride > 0) {
+ return maximumConcurrentRequestsOverride;
+ }
+ else {
+ return HTTPFileSource::maximumConcurrentRequests();
+ }
}
void networkIsReachableAgain() {
@@ -188,17 +194,13 @@ private:
std::list<OnlineFileRequest*> queue;
std::list<OnlineFileRequest*>::iterator firstLowPriorityRequest;
- void remove(OnlineFileRequest* request) {
+ void remove(const OnlineFileRequest* request) {
auto it = std::find(queue.begin(), queue.end(), request);
if (it != queue.end()) {
if (it == firstLowPriorityRequest) {
firstLowPriorityRequest++;
}
queue.erase(it);
-
- if (queue.empty()) {
- first_low = queue.begin();
- }
}
}
@@ -232,7 +234,7 @@ private:
return optional<OnlineFileRequest*>(next);
}
- bool contains(OnlineFileRequest* request) {
+ bool contains(OnlineFileRequest* request) const {
return (std::find(queue.begin(), queue.end(), request) != queue.end());
}
@@ -258,6 +260,7 @@ private:
std::unordered_set<OnlineFileRequest*> activeRequests;
bool online = true;
+ uint32_t maximumConcurrentRequestsOverride = 0;
HTTPFileSource httpFileSource;
util::AsyncTask reachability { std::bind(&Impl::networkIsReachableAgain, this) };
};
@@ -475,4 +478,8 @@ void OnlineFileSource::setOnlineStatus(const bool status) {
impl->setOnlineStatus(status);
}
+void OnlineFileSource::setMaximumConcurrentRequestsOverride(const uint32_t maximumConcurrentRequestsOverride) {
+ impl->setMaximumConcurrentRequestsOverride(maximumConcurrentRequestsOverride);
+}
+
} // namespace mbgl