mirror of
https://github.com/PurpleI2P/i2pd.git
synced 2025-01-19 01:09:58 +00:00
move router's tags cleanup to router's thread
This commit is contained in:
parent
441e847de8
commit
900153765a
@ -106,7 +106,7 @@ namespace data
|
|||||||
{
|
{
|
||||||
i2p::util::SetThreadName("NetDB");
|
i2p::util::SetThreadName("NetDB");
|
||||||
|
|
||||||
uint64_t lastManage = 0, lastExploratory = 0, lastManageRequest = 0, lastDestinationCleanup = 0;
|
uint64_t lastManage = 0, lastExploratory = 0, lastManageRequest = 0;
|
||||||
uint64_t lastProfilesCleanup = i2p::util::GetSecondsSinceEpoch ();
|
uint64_t lastProfilesCleanup = i2p::util::GetSecondsSinceEpoch ();
|
||||||
int16_t profilesCleanupVariance = 0;
|
int16_t profilesCleanupVariance = 0;
|
||||||
|
|
||||||
@ -165,13 +165,6 @@ namespace data
|
|||||||
lastManage = ts;
|
lastManage = ts;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ts - lastDestinationCleanup >= i2p::garlic::INCOMING_TAGS_EXPIRATION_TIMEOUT ||
|
|
||||||
ts + i2p::garlic::INCOMING_TAGS_EXPIRATION_TIMEOUT < lastDestinationCleanup)
|
|
||||||
{
|
|
||||||
i2p::context.CleanupDestination ();
|
|
||||||
lastDestinationCleanup = ts;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ts - lastProfilesCleanup >= (uint64_t)(i2p::data::PEER_PROFILE_AUTOCLEAN_TIMEOUT + profilesCleanupVariance) ||
|
if (ts - lastProfilesCleanup >= (uint64_t)(i2p::data::PEER_PROFILE_AUTOCLEAN_TIMEOUT + profilesCleanupVariance) ||
|
||||||
ts + i2p::data::PEER_PROFILE_AUTOCLEAN_TIMEOUT < lastProfilesCleanup)
|
ts + i2p::data::PEER_PROFILE_AUTOCLEAN_TIMEOUT < lastProfilesCleanup)
|
||||||
{
|
{
|
||||||
|
@ -61,9 +61,11 @@ namespace i2p
|
|||||||
{
|
{
|
||||||
m_PublishTimer.reset (new boost::asio::deadline_timer (m_Service->GetService ()));
|
m_PublishTimer.reset (new boost::asio::deadline_timer (m_Service->GetService ()));
|
||||||
ScheduleInitialPublish ();
|
ScheduleInitialPublish ();
|
||||||
m_CongestionUpdateTimer.reset (new boost::asio::deadline_timer (m_Service->GetService ()));
|
|
||||||
ScheduleCongestionUpdate ();
|
|
||||||
}
|
}
|
||||||
|
m_CongestionUpdateTimer.reset (new boost::asio::deadline_timer (m_Service->GetService ()));
|
||||||
|
ScheduleCongestionUpdate ();
|
||||||
|
m_CleanupTimer.reset (new boost::asio::deadline_timer (m_Service->GetService ()));
|
||||||
|
ScheduleCleanupTimer ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1223,17 +1225,6 @@ namespace i2p
|
|||||||
else
|
else
|
||||||
LogPrint (eLogError, "Router: service is NULL");
|
LogPrint (eLogError, "Router: service is NULL");
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouterContext::CleanupDestination ()
|
|
||||||
{
|
|
||||||
if (m_Service)
|
|
||||||
m_Service->GetService ().post ([this]()
|
|
||||||
{
|
|
||||||
this->i2p::garlic::GarlicDestination::CleanupExpiredTags ();
|
|
||||||
});
|
|
||||||
else
|
|
||||||
LogPrint (eLogError, "Router: service is NULL");
|
|
||||||
}
|
|
||||||
|
|
||||||
uint32_t RouterContext::GetUptime () const
|
uint32_t RouterContext::GetUptime () const
|
||||||
{
|
{
|
||||||
@ -1465,4 +1456,26 @@ namespace i2p
|
|||||||
ScheduleCongestionUpdate ();
|
ScheduleCongestionUpdate ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RouterContext::ScheduleCleanupTimer ()
|
||||||
|
{
|
||||||
|
if (m_CleanupTimer)
|
||||||
|
{
|
||||||
|
m_CleanupTimer->cancel ();
|
||||||
|
m_CleanupTimer->expires_from_now (boost::posix_time::minutes(ROUTER_INFO_CLEANUP_INTERVAL));
|
||||||
|
m_CleanupTimer->async_wait (std::bind (&RouterContext::HandleCleanupTimer,
|
||||||
|
this, std::placeholders::_1));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
LogPrint (eLogError, "Router: Cleanup timer is NULL");
|
||||||
|
}
|
||||||
|
|
||||||
|
void RouterContext::HandleCleanupTimer (const boost::system::error_code& ecode)
|
||||||
|
{
|
||||||
|
if (ecode != boost::asio::error::operation_aborted)
|
||||||
|
{
|
||||||
|
CleanupExpiredTags ();
|
||||||
|
ScheduleCleanupTimer ();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2013-2023, The PurpleI2P Project
|
* Copyright (c) 2013-2024, The PurpleI2P Project
|
||||||
*
|
*
|
||||||
* This file is part of Purple i2pd project and licensed under BSD3
|
* This file is part of Purple i2pd project and licensed under BSD3
|
||||||
*
|
*
|
||||||
@ -38,6 +38,7 @@ namespace garlic
|
|||||||
const int ROUTER_INFO_CONFIRMATION_TIMEOUT = 5; // in seconds
|
const int ROUTER_INFO_CONFIRMATION_TIMEOUT = 5; // in seconds
|
||||||
const int ROUTER_INFO_MAX_PUBLISH_EXCLUDED_FLOODFILLS = 15;
|
const int ROUTER_INFO_MAX_PUBLISH_EXCLUDED_FLOODFILLS = 15;
|
||||||
const int ROUTER_INFO_CONGESTION_UPDATE_INTERVAL = 12*60; // in seconds
|
const int ROUTER_INFO_CONGESTION_UPDATE_INTERVAL = 12*60; // in seconds
|
||||||
|
const int ROUTER_INFO_CLEANUP_INTERVAL = 5; // in minutes
|
||||||
|
|
||||||
enum RouterStatus
|
enum RouterStatus
|
||||||
{
|
{
|
||||||
@ -181,7 +182,6 @@ namespace garlic
|
|||||||
void UpdateNTCP2V6Address (const boost::asio::ip::address& host); // called from Daemon. TODO: remove
|
void UpdateNTCP2V6Address (const boost::asio::ip::address& host); // called from Daemon. TODO: remove
|
||||||
void UpdateStats ();
|
void UpdateStats ();
|
||||||
void UpdateTimestamp (uint64_t ts); // in seconds, called from NetDb before publishing
|
void UpdateTimestamp (uint64_t ts); // in seconds, called from NetDb before publishing
|
||||||
void CleanupDestination (); // garlic destination
|
|
||||||
|
|
||||||
// implements LocalDestination
|
// implements LocalDestination
|
||||||
std::shared_ptr<const i2p::data::IdentityEx> GetIdentity () const { return m_Keys.GetPublic (); };
|
std::shared_ptr<const i2p::data::IdentityEx> GetIdentity () const { return m_Keys.GetPublic (); };
|
||||||
@ -230,6 +230,8 @@ namespace garlic
|
|||||||
void HandlePublishResendTimer (const boost::system::error_code& ecode);
|
void HandlePublishResendTimer (const boost::system::error_code& ecode);
|
||||||
void ScheduleCongestionUpdate ();
|
void ScheduleCongestionUpdate ();
|
||||||
void HandleCongestionUpdateTimer (const boost::system::error_code& ecode);
|
void HandleCongestionUpdateTimer (const boost::system::error_code& ecode);
|
||||||
|
void ScheduleCleanupTimer ();
|
||||||
|
void HandleCleanupTimer (const boost::system::error_code& ecode);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
@ -253,7 +255,7 @@ namespace garlic
|
|||||||
i2p::crypto::NoiseSymmetricState m_InitialNoiseState, m_CurrentNoiseState;
|
i2p::crypto::NoiseSymmetricState m_InitialNoiseState, m_CurrentNoiseState;
|
||||||
// publish
|
// publish
|
||||||
std::unique_ptr<RouterService> m_Service;
|
std::unique_ptr<RouterService> m_Service;
|
||||||
std::unique_ptr<boost::asio::deadline_timer> m_PublishTimer, m_CongestionUpdateTimer;
|
std::unique_ptr<boost::asio::deadline_timer> m_PublishTimer, m_CongestionUpdateTimer, m_CleanupTimer;
|
||||||
std::set<i2p::data::IdentHash> m_PublishExcluded;
|
std::set<i2p::data::IdentHash> m_PublishExcluded;
|
||||||
uint32_t m_PublishReplyToken;
|
uint32_t m_PublishReplyToken;
|
||||||
bool m_IsHiddenMode; // not publish
|
bool m_IsHiddenMode; // not publish
|
||||||
|
Loading…
x
Reference in New Issue
Block a user