seperate logic into IsDone()

pull/1541/head
Jeff Becker 3 years ago
parent 88ddcceca4
commit 6c1d18412c
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -11,12 +11,21 @@ namespace llarp::service
m_PendingLookups.emplace(name, LookupInfo{numPeers, resultHandler});
return [name, this](std::optional<Address> found) {
auto itr = m_PendingLookups.find(name);
if (itr != m_PendingLookups.end() and itr->second.HandleOneResult(found))
if (itr == m_PendingLookups.end())
return;
itr->second.HandleOneResult(found);
if (itr->second.IsDone())
m_PendingLookups.erase(itr);
};
}
bool
LNSLookupTracker::LookupInfo::IsDone() const
{
return m_ResultsGotten == m_ResultsNeeded;
}
void
LNSLookupTracker::LookupInfo::HandleOneResult(std::optional<Address> result)
{
if (result)
@ -24,7 +33,7 @@ namespace llarp::service
m_CurrentValues.insert(*result);
}
m_ResultsGotten++;
if (m_ResultsGotten == m_ResultsNeeded)
if (IsDone())
{
if (m_CurrentValues.size() == 1)
{
@ -34,8 +43,6 @@ namespace llarp::service
{
m_HandleResult(std::nullopt);
}
return true;
}
return false;
}
} // namespace llarp::service

@ -24,8 +24,10 @@ namespace llarp::service
: m_HandleResult{std::move(resultHandler)}, m_ResultsNeeded{wantResults}
{}
/// return true to remove self
bool
IsDone() const;
void
HandleOneResult(std::optional<Address> result);
};

Loading…
Cancel
Save