mirror of https://github.com/aria2/aria2
Use std::remove_if
parent
7f805df4f0
commit
704eebfac6
|
@ -65,22 +65,34 @@ void UTMetadataRequestTracker::remove(size_t index)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
struct RemoveTimeoutEntry {
|
||||||
|
RemoveTimeoutEntry(std::vector<size_t>& indexes)
|
||||||
|
: indexes(indexes)
|
||||||
|
{}
|
||||||
|
bool operator()(const UTMetadataRequestTracker::RequestEntry& ent) const
|
||||||
|
{
|
||||||
|
if(ent.elapsed(TIMEOUT)) {
|
||||||
|
A2_LOG_DEBUG(fmt("ut_metadata request timeout. index=%lu",
|
||||||
|
static_cast<unsigned long>(ent.index_)));
|
||||||
|
indexes.push_back(ent.index_);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::vector<size_t>& indexes;
|
||||||
|
static const time_t TIMEOUT = 20;
|
||||||
|
};
|
||||||
|
} // namespace
|
||||||
|
|
||||||
std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
|
std::vector<size_t> UTMetadataRequestTracker::removeTimeoutEntry()
|
||||||
{
|
{
|
||||||
std::vector<size_t> indexes;
|
std::vector<size_t> indexes;
|
||||||
const time_t TIMEOUT = 20;
|
trackedRequests_.erase(std::remove_if(trackedRequests_.begin(),
|
||||||
for(std::vector<RequestEntry>::iterator i = trackedRequests_.begin(),
|
trackedRequests_.end(),
|
||||||
eoi = trackedRequests_.end(); i != eoi;) {
|
RemoveTimeoutEntry(indexes)),
|
||||||
if((*i).elapsed(TIMEOUT)) {
|
trackedRequests_.end());
|
||||||
A2_LOG_DEBUG(fmt("ut_metadata request timeout. index=%lu",
|
|
||||||
static_cast<unsigned long>((*i).index_)));
|
|
||||||
indexes.push_back((*i).index_);
|
|
||||||
i = trackedRequests_.erase(i);
|
|
||||||
eoi = trackedRequests_.end();
|
|
||||||
} else {
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return indexes;
|
return indexes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,8 @@
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
class UTMetadataRequestTracker {
|
class UTMetadataRequestTracker {
|
||||||
private:
|
public:
|
||||||
|
// Made public so that unnamed functor can access it
|
||||||
struct RequestEntry {
|
struct RequestEntry {
|
||||||
size_t index_;
|
size_t index_;
|
||||||
Timer dispatchedTime_;
|
Timer dispatchedTime_;
|
||||||
|
@ -62,7 +63,7 @@ private:
|
||||||
return index_ == e.index_;
|
return index_ == e.index_;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
private:
|
||||||
std::vector<RequestEntry> trackedRequests_;
|
std::vector<RequestEntry> trackedRequests_;
|
||||||
public:
|
public:
|
||||||
UTMetadataRequestTracker();
|
UTMetadataRequestTracker();
|
||||||
|
|
Loading…
Reference in New Issue