From d9911f4314dae17ef43258a307a6984f19e531fc Mon Sep 17 00:00:00 2001 From: orignal Date: Mon, 30 Mar 2015 21:05:04 -0400 Subject: [PATCH] save last update time --- Profiling.cpp | 14 +++++++++++++- Profiling.h | 7 +++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Profiling.cpp b/Profiling.cpp index 65eb1260..19c9e2e7 100644 --- a/Profiling.cpp +++ b/Profiling.cpp @@ -10,10 +10,16 @@ namespace i2p namespace data { RouterProfile::RouterProfile (const IdentHash& identHash): - m_IdentHash (identHash), m_NumTunnelsAgreed (0), m_NumTunnelsDeclined (0), + m_IdentHash (identHash), m_LastUpdateTime (boost::posix_time::second_clock::local_time()), + m_NumTunnelsAgreed (0), m_NumTunnelsDeclined (0), m_NumTunnelsNonReplied (0) { } + + void RouterProfile::UpdateTime () + { + m_LastUpdateTime = boost::posix_time::second_clock::local_time(); + } void RouterProfile::Save () { @@ -24,6 +30,7 @@ namespace data participation.put (PEER_PROFILE_PARTICIPATION_NON_REPLIED, m_NumTunnelsNonReplied); // fill property tree boost::property_tree::ptree pt; + pt.put (PEER_PROFILE_LAST_UPDATE_TIME, boost::posix_time::to_simple_string (m_LastUpdateTime)); pt.put_child (PEER_PROFILE_SECTION_PARTICIPATION, participation); // save to file @@ -80,6 +87,9 @@ namespace data } try { + auto t = pt.get (PEER_PROFILE_LAST_UPDATE_TIME, ""); + if (t.length () > 0) + m_LastUpdateTime = boost::posix_time::time_from_string (t); // read participations auto participations = pt.get_child (PEER_PROFILE_SECTION_PARTICIPATION); m_NumTunnelsAgreed = participations.get (PEER_PROFILE_PARTICIPATION_AGREED, 0); @@ -99,11 +109,13 @@ namespace data m_NumTunnelsDeclined++; else m_NumTunnelsAgreed++; + UpdateTime (); } void RouterProfile::TunnelNonReplied () { m_NumTunnelsNonReplied++; + UpdateTime (); } std::shared_ptr GetRouterProfile (const IdentHash& identHash) diff --git a/Profiling.h b/Profiling.h index f130e1e1..03928925 100644 --- a/Profiling.h +++ b/Profiling.h @@ -2,6 +2,7 @@ #define PROFILING_H__ #include +#include #include "Identity.h" namespace i2p @@ -13,6 +14,7 @@ namespace data // sections const char PEER_PROFILE_SECTION_PARTICIPATION[] = "participation"; // params + const char PEER_PROFILE_LAST_UPDATE_TIME[] = "lastupdatetime"; const char PEER_PROFILE_PARTICIPATION_AGREED[] = "agreed"; const char PEER_PROFILE_PARTICIPATION_DECLINED[] = "declined"; const char PEER_PROFILE_PARTICIPATION_NON_REPLIED[] = "nonreplied"; @@ -30,10 +32,15 @@ namespace data void TunnelBuildResponse (uint8_t ret); void TunnelNonReplied (); + + private: + + void UpdateTime (); private: IdentHash m_IdentHash; + boost::posix_time::ptime m_LastUpdateTime; // participation uint32_t m_NumTunnelsAgreed; uint32_t m_NumTunnelsDeclined;