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