dht: try inserting new nodes smarter

Attempt closest search and nearby searches
until we are too far instead of trying every
search.
This commit is contained in:
Adrien Béraud committed 2016-10-27 18:14:42 -04:00
1 parent 274621dcec
commit de82eec516
1 file changed
+22 -6
+22 -6
View File
@@ -815,15 +815,31 @@ Dht::trySearchInsert(const std::shared_ptr<Node>& node)
const auto& now = scheduler.time();
if (not node) return false;
bool inserted = false;
auto family = node->getFamily();
auto& srs = family == AF_INET ? searches4 : searches6;
for (auto& srp : srs) {
auto& s = *srp.second;
auto& srs = searches(node->getFamily());
auto closest = srs.lower_bound(node->id);
bool inserted {false};
// insert forward
auto it = closest;
while (it != srs.end()) {
auto& s = *it->second;
if (s.insertNode(node, now)) {
inserted = true;
scheduler.edit(s.nextSearchStep, s.getNextStepTime(now));
}
} else
break;
++it;
}
// insert backward
it = closest;
while (it != srs.begin()) {
--it;
auto& s = *it->second;
if (s.insertNode(node, now)) {
inserted = true;
scheduler.edit(s.nextSearchStep, s.getNextStepTime(now));
} else
break;
}
return inserted;
}