reduce calls in link pump

pull/935/head
Jeff Becker 5 years ago committed by Jason Rhinelander
parent d13a3d2b62
commit 1a06da9c3d

@ -20,34 +20,6 @@ namespace llarp
LinkLayer::~LinkLayer() = default;
void
LinkLayer::Pump()
{
std::unordered_set< RouterID, RouterID::Hash > sessions;
{
ACQUIRE_LOCK(Lock_t l, m_AuthedLinksMutex);
auto itr = m_AuthedLinks.begin();
while(itr != m_AuthedLinks.end())
{
const RouterID r{itr->first};
sessions.emplace(r);
++itr;
}
}
ILinkLayer::Pump();
{
ACQUIRE_LOCK(Lock_t l, m_AuthedLinksMutex);
for(const auto& pk : sessions)
{
if(m_AuthedLinks.count(pk) == 0)
{
// all sessions were removed
SessionClosed(pk);
}
}
}
}
const char*
LinkLayer::Name() const
{

@ -26,9 +26,6 @@ namespace llarp
NewOutboundSession(const RouterContact &rc,
const AddressInfo &ai) override;
void
Pump() override;
bool
KeyGen(SecretKey &k) override;

@ -3,6 +3,7 @@
#include <crypto/crypto.hpp>
#include <util/fs.hpp>
#include <utility>
#include <unordered_set>
namespace llarp
{
@ -125,6 +126,7 @@ namespace llarp
void
ILinkLayer::Pump()
{
std::unordered_set< RouterID, RouterID::Hash > closedSessions;
auto _now = Now();
{
ACQUIRE_LOCK(Lock_t l, m_AuthedLinksMutex);
@ -141,6 +143,7 @@ namespace llarp
llarp::LogInfo("session to ", RouterID(itr->second->GetPubKey()),
" timed out");
itr->second->Close();
closedSessions.emplace(itr->first);
itr = m_AuthedLinks.erase(itr);
}
}
@ -169,6 +172,16 @@ namespace llarp
}
}
}
{
ACQUIRE_LOCK(Lock_t l, m_AuthedLinksMutex);
for(const auto& r : closedSessions)
{
if(m_AuthedLinks.count(r) == 0)
{
SessionClosed(r);
}
}
}
}
bool

Loading…
Cancel
Save