mirror of https://github.com/aria2/aria2
Use std::remove_if
parent
4ac4fdf1e9
commit
7f805df4f0
|
@ -135,19 +135,29 @@ void DHTMessageTracker::handleTimeoutEntry
|
|||
}
|
||||
}
|
||||
|
||||
void DHTMessageTracker::handleTimeout()
|
||||
{
|
||||
for(std::deque<SharedHandle<DHTMessageTrackerEntry> >::iterator i =
|
||||
entries_.begin(), eoi = entries_.end(); i != eoi;) {
|
||||
if((*i)->isTimeout()) {
|
||||
SharedHandle<DHTMessageTrackerEntry> entry = *i;
|
||||
i = entries_.erase(i);
|
||||
eoi = entries_.end();
|
||||
handleTimeoutEntry(entry);
|
||||
namespace {
|
||||
struct HandleTimeout {
|
||||
HandleTimeout(DHTMessageTracker* tracker)
|
||||
: tracker(tracker)
|
||||
{}
|
||||
bool operator()(const SharedHandle<DHTMessageTrackerEntry>& ent) const
|
||||
{
|
||||
if(ent->isTimeout()) {
|
||||
tracker->handleTimeoutEntry(ent);
|
||||
return true;
|
||||
} else {
|
||||
++i;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
DHTMessageTracker* tracker;
|
||||
};
|
||||
} // namespace
|
||||
|
||||
void DHTMessageTracker::handleTimeout()
|
||||
{
|
||||
entries_.erase(std::remove_if(entries_.begin(), entries_.end(),
|
||||
HandleTimeout(this)),
|
||||
entries_.end());
|
||||
}
|
||||
|
||||
SharedHandle<DHTMessageTrackerEntry>
|
||||
|
|
|
@ -60,8 +60,6 @@ private:
|
|||
SharedHandle<DHTRoutingTable> routingTable_;
|
||||
|
||||
SharedHandle<DHTMessageFactory> factory_;
|
||||
|
||||
void handleTimeoutEntry(const SharedHandle<DHTMessageTrackerEntry>& entry);
|
||||
public:
|
||||
DHTMessageTracker();
|
||||
|
||||
|
@ -78,6 +76,9 @@ public:
|
|||
|
||||
void handleTimeout();
|
||||
|
||||
// Made public to make unnamed functor can access it
|
||||
void handleTimeoutEntry(const SharedHandle<DHTMessageTrackerEntry>& entry);
|
||||
|
||||
SharedHandle<DHTMessageTrackerEntry> getEntryFor
|
||||
(const SharedHandle<DHTMessage>& message) const;
|
||||
|
||||
|
|
Loading…
Reference in New Issue