reduce CPU usage
This commit is contained in:
40
NetDb.cpp
40
NetDb.cpp
@@ -732,28 +732,13 @@ namespace data
|
||||
if (!replyMsg)
|
||||
{
|
||||
LogPrint ("Requested ", key, " not found. ", numExcluded, " excluded");
|
||||
std::vector<IdentHash> routers;
|
||||
if (numExcluded > 0)
|
||||
{
|
||||
std::set<IdentHash> excludedRouters;
|
||||
for (int i = 0; i < numExcluded; i++)
|
||||
{
|
||||
excludedRouters.insert (excluded);
|
||||
excluded += 32;
|
||||
}
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
auto floodfill = GetClosestFloodfill (ident, excludedRouters);
|
||||
if (floodfill)
|
||||
{
|
||||
routers.push_back (floodfill->GetIdentHash ());
|
||||
excludedRouters.insert (floodfill->GetIdentHash ());
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
routers = GetClosestFloodfills (ident, 3);
|
||||
replyMsg = CreateDatabaseSearchReply (ident, routers);
|
||||
std::set<IdentHash> excludedRouters;
|
||||
for (int i = 0; i < numExcluded; i++)
|
||||
{
|
||||
excludedRouters.insert (excluded);
|
||||
excluded += 32;
|
||||
}
|
||||
replyMsg = CreateDatabaseSearchReply (ident, GetClosestFloodfills (ident, 3, excludedRouters));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -955,7 +940,8 @@ namespace data
|
||||
return r;
|
||||
}
|
||||
|
||||
std::vector<IdentHash> NetDb::GetClosestFloodfills (const IdentHash& destination, size_t num) const
|
||||
std::vector<IdentHash> NetDb::GetClosestFloodfills (const IdentHash& destination, size_t num,
|
||||
std::set<IdentHash>& excluded) const
|
||||
{
|
||||
struct Sorted
|
||||
{
|
||||
@@ -990,8 +976,12 @@ namespace data
|
||||
{
|
||||
if (i < num)
|
||||
{
|
||||
res.push_back (it.r->GetIdentHash ());
|
||||
i++;
|
||||
auto& ident = it.r->GetIdentHash ();
|
||||
if (!excluded.count (ident))
|
||||
{
|
||||
res.push_back (ident);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
else
|
||||
break;
|
||||
|
Reference in New Issue
Block a user