X-Git-Url: https://git.novaco.in/?a=blobdiff_plain;f=src%2Futil.h;h=8a37c03b593e4c7dfe6c144df7e0e98556bd5aaf;hb=edbfc61d401c0bd9f4b85dd49d1a1e77c1b2eb02;hp=1b119d65bdbb96a6d859096a80792289f52c8cb7;hpb=36ea307baa89088cae666d3c9134e386c08c9d57;p=novacoin.git diff --git a/src/util.h b/src/util.h index 1b119d6..8a37c03 100644 --- a/src/util.h +++ b/src/util.h @@ -6,14 +6,16 @@ #define BITCOIN_UTIL_H -#include "uint256.h" - #ifndef WIN32 #include #include #include #endif +#ifdef WIN32 +#include "compat.h" +#endif + #include #include #include @@ -33,8 +35,10 @@ #endif #include -#include "netbase.h" // for AddTimeData +static const int32_t nOneHour = 60 * 60; +static const int32_t nOneDay = 24 * 60 * 60; +static const int64_t nOneWeek = 7 * 24 * 60 * 60; static const int64_t COIN = 1000000; static const int64_t CENT = 10000; @@ -59,6 +63,18 @@ static const int64_t CENT = 10000; void LogStackTrace(); #endif +#if defined(_MSC_VER) || defined(__MSVCRT__) + /* Silence compiler warnings on Windows + related to MinGWs inttypes.h */ + #undef PRIu64 + #undef PRId64 + #undef PRIx64 + + #define PRIu64 "I64u" + #define PRId64 "I64d" + #define PRIx64 "I64x" + +#endif /* Format characters for (s)size_t and ptrdiff_t */ #if defined(_MSC_VER) || defined(__MSVCRT__) @@ -126,12 +142,6 @@ inline void Sleep(int64_t n) #endif - - - - - - extern std::map mapArgs; extern std::map > mapMultiArgs; extern bool fDebug; @@ -149,8 +159,6 @@ extern bool fNoListen; extern bool fLogTimestamps; extern bool fReopenDebugLog; -void RandAddSeed(); -void RandAddSeedPerfmon(); int ATTR_WARN_PRINTF(1,2) OutputDebugStringF(const char* pszFormat, ...); /* @@ -219,27 +227,14 @@ void ReadConfigFile(std::map& mapSettingsRet, std::map boost::filesystem::path GetSpecialFolderPath(int nFolder, bool fCreate = true); #endif void ShrinkDebugFile(); -int GetRandInt(int nMax); -uint64_t GetRand(uint64_t nMax); -uint256 GetRandHash(); int64_t GetTime(); -void SetMockTime(int64_t nMockTimeIn); -int64_t GetAdjustedTime(); -int64_t GetTimeOffset(); -int64_t GetNodesOffset(); +int64_t GetTimeMillis(); +int64_t GetTimeMicros(); std::string FormatFullVersion(); std::string FormatSubVersion(const std::string& name, int nClientVersion, const std::vector& comments); -void AddTimeData(const CNetAddr& ip, int64_t nTime); void runCommand(std::string strCommand); - - - - - - - inline std::string i64tostr(int64_t n) { return strprintf("%" PRId64, n); @@ -353,23 +348,16 @@ inline void PrintHex(const std::vector& vch, const char* pszForma printf(pszFormat, HexStr(vch, fSpaces).c_str()); } -inline int64_t GetPerformanceCounter() +inline int64_t GetTimeMillis() { - int64_t nCounter = 0; -#ifdef WIN32 - QueryPerformanceCounter((LARGE_INTEGER*)&nCounter); -#else - timeval t; - gettimeofday(&t, NULL); - nCounter = (int64_t) t.tv_sec * 1000000 + t.tv_usec; -#endif - return nCounter; + return (boost::posix_time::microsec_clock::universal_time() - + boost::posix_time::ptime(boost::gregorian::date(1970,1,1))).total_milliseconds(); } -inline int64_t GetTimeMillis() +inline int64_t GetTimeMicros() { - return (boost::posix_time::ptime(boost::posix_time::microsec_clock::universal_time()) - - boost::posix_time::ptime(boost::gregorian::date(1970,1,1))).total_milliseconds(); + return (boost::posix_time::microsec_clock::universal_time() - + boost::posix_time::ptime(boost::gregorian::date(1970,1,1))).total_microseconds(); } std::string DateTimeStrFormat(const char* pszFormat, int64_t nTime); @@ -475,62 +463,6 @@ bool TimingResistantEqual(const T& a, const T& b) return accumulator == 0; } -/** Median filter over a stream of values. - * Returns the median of the last N numbers - */ -template class CMedianFilter -{ -private: - std::vector vValues; - std::vector vSorted; - unsigned int nSize; -public: - CMedianFilter(unsigned int size, T initial_value): - nSize(size) - { - vValues.reserve(size); - vValues.push_back(initial_value); - vSorted = vValues; - } - - void input(T value) - { - if(vValues.size() == nSize) - { - vValues.erase(vValues.begin()); - } - vValues.push_back(value); - - vSorted.resize(vValues.size()); - std::copy(vValues.begin(), vValues.end(), vSorted.begin()); - std::sort(vSorted.begin(), vSorted.end()); - } - - T median() const - { - int size = vSorted.size(); - assert(size>0); - if(size & 1) // Odd number of elements - { - return vSorted[size/2]; - } - else // Even number of elements - { - return (vSorted[size/2-1] + vSorted[size/2]) / 2; - } - } - - int size() const - { - return static_cast(vValues.size()); - } - - std::vector sorted () const - { - return vSorted; - } -}; - bool NewThread(void(*pfn)(void*), void* parg); #ifdef WIN32 @@ -571,4 +503,3 @@ inline uint32_t ByteReverse(uint32_t value) } #endif -