Browse Source

don't pick node for 5 minutes if declined

pull/197/head
orignal 10 years ago
parent
commit
d9c0f52846
  1. 12
      Profiling.cpp
  2. 2
      Profiling.h

12
Profiling.cpp

@ -11,6 +11,7 @@ namespace data @@ -11,6 +11,7 @@ namespace data
{
RouterProfile::RouterProfile (const IdentHash& identHash):
m_IdentHash (identHash), m_LastUpdateTime (boost::posix_time::second_clock::local_time()),
m_LastDeclinedTime (boost::posix_time::min_date_time),
m_NumTunnelsAgreed (0), m_NumTunnelsDeclined (0), m_NumTunnelsNonReplied (0),
m_NumTimesTaken (0), m_NumTimesRejected (0)
{
@ -137,11 +138,14 @@ namespace data @@ -137,11 +138,14 @@ namespace data
void RouterProfile::TunnelBuildResponse (uint8_t ret)
{
UpdateTime ();
if (ret > 0)
{
m_LastDeclinedTime = m_LastUpdateTime;
m_NumTunnelsDeclined++;
}
else
m_NumTunnelsAgreed++;
UpdateTime ();
}
void RouterProfile::TunnelNonReplied ()
@ -163,7 +167,8 @@ namespace data @@ -163,7 +167,8 @@ namespace data
bool RouterProfile::IsBad ()
{
auto elapsedTime = (GetTime () - m_LastUpdateTime).total_seconds ();
auto t = GetTime ();
auto elapsedTime = (t - m_LastUpdateTime).total_seconds ();
if (elapsedTime > 1800)
{
m_NumTunnelsNonReplied = 0; // drop non-replied after 30 minutes of inactivity
@ -173,7 +178,8 @@ namespace data @@ -173,7 +178,8 @@ namespace data
m_NumTunnelsDeclined = 0;
}
}
auto isBad = IsAlwaysDeclining () || IsLowPartcipationRate () || IsLowReplyRate ();
auto isBad = IsAlwaysDeclining () || IsLowPartcipationRate () || IsLowReplyRate () ||
((t - m_LastDeclinedTime).total_seconds () < 300); // declined in last 5 minutes
if (isBad) m_NumTimesRejected++; else m_NumTimesTaken++;
return isBad;
}

2
Profiling.h

@ -51,7 +51,7 @@ namespace data @@ -51,7 +51,7 @@ namespace data
private:
IdentHash m_IdentHash;
boost::posix_time::ptime m_LastUpdateTime;
boost::posix_time::ptime m_LastUpdateTime, m_LastDeclinedTime;
// participation
uint32_t m_NumTunnelsAgreed;
uint32_t m_NumTunnelsDeclined;

Loading…
Cancel
Save