mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 11:05:54 +00:00
44 lines
995 B
C++
44 lines
995 B
C++
//------------------------------------------------------------------------------
|
|
/*
|
|
Copyright (c) 2011-2013, OpenCoin, Inc.
|
|
*/
|
|
//==============================================================================
|
|
|
|
#ifndef RIPPLE_UPTIMETIMER_H
|
|
#define RIPPLE_UPTIMETIMER_H
|
|
|
|
/** Tracks program uptime.
|
|
|
|
The timer can be switched to a manual system of updating, to reduce
|
|
system calls. (?)
|
|
*/
|
|
// VFALCO TODO determine if the non-manual timing is actually needed
|
|
class UptimeTimer
|
|
{
|
|
private:
|
|
UptimeTimer ();
|
|
~UptimeTimer ();
|
|
|
|
public:
|
|
int getElapsedSeconds () const;
|
|
|
|
void beginManualUpdates ();
|
|
void endManualUpdates ();
|
|
|
|
void incrementElapsedTime ();
|
|
|
|
static UptimeTimer& getInstance ();
|
|
|
|
private:
|
|
// VFALCO DEPRECATED, Use a memory barrier instead of forcing a cache line
|
|
int m_pad1; // make sure m_elapsedTime fits in its own cache line
|
|
int volatile m_elapsedTime;
|
|
int m_pad2;
|
|
|
|
time_t m_startTime;
|
|
|
|
bool m_isUpdatingManually;
|
|
};
|
|
|
|
#endif
|