13 #include <boost/foreach.hpp> 40 return (
n >= 0 ?
n : -
n);
43 #define BITCOIN_TIMEDATA_MAX_SAMPLES 200 49 static set<CNetAddr> setKnown;
52 if (!setKnown.insert(ip).second)
57 vTimeOffsets.
input(nOffsetSample);
58 LogPrint(
"net",
"added time data, samples %d, offset %+d (%+d minutes)\n", vTimeOffsets.
size(), nOffsetSample, nOffsetSample/60);
77 if (vTimeOffsets.
size() >= 5 && vTimeOffsets.
size() % 2 == 1)
79 int64_t nMedian = vTimeOffsets.
median();
80 std::vector<int64_t> vSorted = vTimeOffsets.
sorted();
82 if (
abs64(nMedian) < 70 * 60)
95 BOOST_FOREACH(int64_t nOffset, vSorted)
96 if (nOffset != 0 &&
abs64(nOffset) < 5 * 60)
102 string strMessage =
_(
"Please check that your computer's date and time are correct! If your clock is wrong Dash Core will not work properly.");
109 BOOST_FOREACH(int64_t
n, vSorted)
static CCriticalSection cs_nTimeOffset
#define BITCOIN_TIMEDATA_MAX_SAMPLES
static int64_t abs64(int64_t n)
static int64_t nTimeOffset
boost::signals2::signal< bool(const std::string &message, const std::string &caption, unsigned int style), boost::signals2::last_value< bool > > ThreadSafeMessageBox
static int LogPrint(const char *category, const char *format)
CClientUIInterface uiInterface
int64_t GetAdjustedTime()
int64_t GetTime()
For unit testing.
void AddTimeData(const CNetAddr &ip, int64_t nOffsetSample)
std::string _(const char *psz)