LCOV - code coverage report
Current view: top level - src - utiltime.cpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 22 22 100.0 %
Date: 2015-10-12 22:39:14 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : // Copyright (c) 2009-2010 Satoshi Nakamoto
       2             : // Copyright (c) 2009-2014 The Bitcoin Core developers
       3             : // Distributed under the MIT software license, see the accompanying
       4             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       5             : 
       6             : #if defined(HAVE_CONFIG_H)
       7             : #include "config/bitcoin-config.h"
       8             : #endif
       9             : 
      10             : #include "utiltime.h"
      11             : 
      12             : #include <boost/date_time/posix_time/posix_time.hpp>
      13             : #include <boost/thread.hpp>
      14             : 
      15             : using namespace std;
      16             : 
      17             : static int64_t nMockTime = 0;  //! For unit testing
      18             : 
      19      392366 : int64_t GetTime()
      20             : {
      21      392366 :     if (nMockTime) return nMockTime;
      22             : 
      23      366129 :     return time(NULL);
      24             : }
      25             : 
      26         911 : void SetMockTime(int64_t nMockTimeIn)
      27             : {
      28         911 :     nMockTime = nMockTimeIn;
      29         911 : }
      30             : 
      31        1566 : int64_t GetTimeMillis()
      32             : {
      33        4698 :     return (boost::posix_time::microsec_clock::universal_time() -
      34        1566 :             boost::posix_time::ptime(boost::gregorian::date(1970,1,1))).total_milliseconds();
      35             : }
      36             : 
      37      218006 : int64_t GetTimeMicros()
      38             : {
      39      654058 :     return (boost::posix_time::microsec_clock::universal_time() -
      40      218023 :             boost::posix_time::ptime(boost::gregorian::date(1970,1,1))).total_microseconds();
      41             : }
      42             : 
      43        8744 : void MilliSleep(int64_t n)
      44             : {
      45             : 
      46             : /**
      47             :  * Boost's sleep_for was uninterruptable when backed by nanosleep from 1.50
      48             :  * until fixed in 1.52. Use the deprecated sleep method for the broken case.
      49             :  * See: https://svn.boost.org/trac/boost/ticket/7238
      50             :  */
      51             : #if defined(HAVE_WORKING_BOOST_SLEEP_FOR)
      52        8744 :     boost::this_thread::sleep_for(boost::chrono::milliseconds(n));
      53             : #elif defined(HAVE_WORKING_BOOST_SLEEP)
      54             :     boost::this_thread::sleep(boost::posix_time::milliseconds(n));
      55             : #else
      56             : //should never get here
      57             : #error missing boost sleep implementation
      58             : #endif
      59        8457 : }
      60             : 
      61       50318 : std::string DateTimeStrFormat(const char* pszFormat, int64_t nTime)
      62             : {
      63             :     // std::locale takes ownership of the pointer
      64      150954 :     std::locale loc(std::locale::classic(), new boost::posix_time::time_facet(pszFormat));
      65      100636 :     std::stringstream ss;
      66       50317 :     ss.imbue(loc);
      67       50318 :     ss << boost::posix_time::from_time_t(nTime);
      68       50316 :     return ss.str();
      69         609 : }

Generated by: LCOV version 1.11