Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

Commit

Permalink
[core] OnlineFileSource - prevent double scheduling of requests
Browse files Browse the repository at this point in the history
  • Loading branch information
ivovandongen committed Sep 22, 2016
1 parent 1075a1b commit 4a41e34
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion platform/default/online_file_source.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ class OnlineFileSource::Impl {
pendingRequestsMap.erase(it);
}
}
assert(pendingRequestsMap.size() == pendingRequestsList.size());
}

void activateOrQueueRequest(OnlineFileRequest* request) {
Expand All @@ -94,6 +95,7 @@ class OnlineFileSource::Impl {
void queueRequest(OnlineFileRequest* request) {
auto it = pendingRequestsList.insert(pendingRequestsList.end(), request);
pendingRequestsMap.emplace(request, std::move(it));
assert(pendingRequestsMap.size() == pendingRequestsList.size());
}

void activateRequest(OnlineFileRequest* request) {
Expand All @@ -104,6 +106,7 @@ class OnlineFileSource::Impl {
request->request.reset();
request->completed(response);
});
assert(pendingRequestsMap.size() == pendingRequestsList.size());
}

void activatePendingRequest() {
Expand All @@ -117,6 +120,15 @@ class OnlineFileSource::Impl {
pendingRequestsMap.erase(request);

activateRequest(request);
assert(pendingRequestsMap.size() == pendingRequestsList.size());
}

bool isPending(OnlineFileRequest* request) {
return pendingRequestsMap.find(request) != pendingRequestsMap.end();
}

bool isActive(OnlineFileRequest* request) {
return activeRequests.find(request) != activeRequests.end();
}

private:
Expand Down Expand Up @@ -238,7 +250,7 @@ Timestamp interpolateExpiration(const Timestamp& current,
}

void OnlineFileRequest::schedule(optional<Timestamp> expires) {
if (request) {
if (impl.isPending(this) || impl.isActive(this)) {
// There's already a request in progress; don't start another one.
return;
}
Expand Down

0 comments on commit 4a41e34

Please sign in to comment.