Build endpoint paths at even[ish] intervals

pull/1127/head
Stephen Shelton 4 years ago
parent a8a6c175fc
commit c2f719c996
No known key found for this signature in database
GPG Key ID: EE4BADACCE8B631C

@ -1,3 +1,4 @@
#include <chrono>
#include <service/endpoint.hpp>
#include <dht/messages/findintro.hpp>
@ -627,6 +628,13 @@ namespace llarp
return path::Builder::SelectHop(db, exclude, cur, hop, roles);
}
void
Endpoint::PathBuildStarted(path::Path_ptr path)
{
m_lastBuildStarted = std::chrono::steady_clock::now();
path::Builder::PathBuildStarted(path);
}
std::set< RouterID >
Endpoint::GetExitRouters() const
{
@ -1266,11 +1274,18 @@ namespace llarp
bool
Endpoint::ShouldBuildMore(llarp_time_t now) const
{
static constexpr auto buildSpread = path::default_lifetime / 4;
if(path::Builder::BuildCooldownHit(now))
return false;
return NumPathsExistingAt(now + buildSpread) < numPaths
and NumInStatus(path::ePathBuilding) == 0;
size_t numBuilding = NumInStatus(path::ePathBuilding);
if (numBuilding > 0)
return false;
static constexpr auto buildSpread = path::default_lifetime / 4;
const auto sinceEpoch = m_lastBuildStarted.time_since_epoch();
const auto sinceEpochMs = std::chrono::duration_cast< std::chrono::milliseconds >(sinceEpoch);
return ((now - sinceEpochMs.count()) > buildSpread);
}
std::shared_ptr< Logic >

@ -355,6 +355,9 @@ namespace llarp
SelectHop(llarp_nodedb* db, const std::set< RouterID >& prev,
RouterContact& cur, size_t hop, path::PathRole roles) override;
virtual void
PathBuildStarted(path::Path_ptr path) override;
virtual void
IntroSetPublishFail();
virtual void
@ -456,6 +459,7 @@ namespace llarp
std::unique_ptr< EndpointState > m_state;
thread::Queue< RecvDataEvent > m_RecvQueue;
std::chrono::steady_clock::time_point m_lastBuildStarted;
};
using Endpoint_ptr = std::shared_ptr< Endpoint >;

Loading…
Cancel
Save