dht timeout tweak

pull/1034/head
Jeff Becker 5 years ago
parent ac46d99107
commit 8bb492da6e
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05

@ -13,8 +13,7 @@ namespace llarp
{
namespace dht
{
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS = 30000UL >
template < typename K, typename V, typename K_Hash >
struct TXHolder
{
using TXPtr = std::unique_ptr< TX< K, V > >;
@ -72,7 +71,7 @@ namespace llarp
void
NewTX(const TXOwner& askpeer, const TXOwner& whoasked, const K& k,
TX< K, V >* t);
TX< K, V >* t, llarp_time_t requestTimeoutMS = 15000);
/// mark tx as not fond
void
@ -93,11 +92,9 @@ namespace llarp
Expire(llarp_time_t now);
};
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS >
template < typename K, typename V, typename K_Hash >
const TX< K, V >*
TXHolder< K, V, K_Hash, requestTimeoutMS >::GetPendingLookupFrom(
const TXOwner& owner) const
TXHolder< K, V, K_Hash >::GetPendingLookupFrom(const TXOwner& owner) const
{
auto itr = tx.find(owner);
if(itr == tx.end())
@ -108,12 +105,12 @@ namespace llarp
return itr->second.get();
}
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS >
template < typename K, typename V, typename K_Hash >
void
TXHolder< K, V, K_Hash, requestTimeoutMS >::NewTX(const TXOwner& askpeer,
const TXOwner& whoasked,
const K& k, TX< K, V >* t)
TXHolder< K, V, K_Hash >::NewTX(const TXOwner& askpeer,
const TXOwner& whoasked, const K& k,
TX< K, V >* t,
llarp_time_t requestTimeoutMS)
{
(void)whoasked;
tx.emplace(askpeer, std::unique_ptr< TX< K, V > >(t));
@ -131,11 +128,10 @@ namespace llarp
}
}
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS >
template < typename K, typename V, typename K_Hash >
void
TXHolder< K, V, K_Hash, requestTimeoutMS >::NotFound(
const TXOwner& from, const std::unique_ptr< Key_t >& next)
TXHolder< K, V, K_Hash >::NotFound(const TXOwner& from,
const std::unique_ptr< Key_t >& next)
{
auto txitr = tx.find(from);
if(txitr == tx.end())
@ -148,13 +144,11 @@ namespace llarp
Inform(from, txitr->second->target, {}, true, true);
}
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS >
template < typename K, typename V, typename K_Hash >
void
TXHolder< K, V, K_Hash, requestTimeoutMS >::Inform(TXOwner from, K key,
std::vector< V > values,
bool sendreply,
bool removeTimeouts)
TXHolder< K, V, K_Hash >::Inform(TXOwner from, K key,
std::vector< V > values, bool sendreply,
bool removeTimeouts)
{
auto range = waiting.equal_range(key);
auto itr = range.first;
@ -187,15 +181,14 @@ namespace llarp
}
}
template < typename K, typename V, typename K_Hash,
llarp_time_t requestTimeoutMS >
template < typename K, typename V, typename K_Hash >
void
TXHolder< K, V, K_Hash, requestTimeoutMS >::Expire(llarp_time_t now)
TXHolder< K, V, K_Hash >::Expire(llarp_time_t now)
{
auto itr = timeouts.begin();
while(itr != timeouts.end())
{
if(now > itr->second && now - itr->second >= requestTimeoutMS)
if(now >= itr->second)
{
Inform(TXOwner{}, itr->first, {}, true, false);
itr = timeouts.erase(itr);

@ -36,7 +36,7 @@ namespace llarp
/// determine if this request has timed out
bool
IsTimedOut(llarp_time_t now, llarp_time_t timeout = 60000) const
IsTimedOut(llarp_time_t now, llarp_time_t timeout = 20000) const
{
if(now <= m_created)
return false;

Loading…
Cancel
Save