Fix some warnings

This commit is contained in:
Vinnie Falco
2013-06-24 18:26:24 -07:00
parent 36ecca14d7
commit ffdfb59564
5 changed files with 30 additions and 14 deletions

View File

@@ -32,6 +32,7 @@ void LoadMonitor::update ()
if (now == mLastUpdate) // current if (now == mLastUpdate) // current
return; return;
// VFALCO TODO Why 8?
if ((now < mLastUpdate) || (now > (mLastUpdate + 8))) if ((now < mLastUpdate) || (now > (mLastUpdate + 8)))
{ {
// way out of date // way out of date
@@ -45,6 +46,13 @@ void LoadMonitor::update ()
} }
// do exponential decay // do exponential decay
/*
David:
"Imagine if you add 10 to something every second. And you
also reduce it by 1/4 every second. It will "idle" at 40,
correponding to 10 counts per second."
*/
do do
{ {
++mLastUpdate; ++mLastUpdate;
@@ -79,8 +87,6 @@ void LoadMonitor::addLatency (int latency)
mLatencyMSPeak += latency; mLatencyMSPeak += latency;
// VFALCO NOTE Why are we multiplying by 4? // VFALCO NOTE Why are we multiplying by 4?
// VFALCO NOTE conversion from 64 to 32 bit int loses data
#pragma message(BEAST_FILEANDLINE_ "Possible 32-bit overflow for long-running server instances.")
int const latencyPeak = mLatencyEvents * latency * 4; int const latencyPeak = mLatencyEvents * latency * 4;
if (mLatencyMSPeak < latencyPeak) if (mLatencyMSPeak < latencyPeak)
@@ -108,8 +114,6 @@ void LoadMonitor::addCountAndLatency (const std::string& name, int latency)
mLatencyMSPeak += latency; mLatencyMSPeak += latency;
// VFALCO NOTE Why are we multiplying by 4? // VFALCO NOTE Why are we multiplying by 4?
// VFALCO NOTE conversion from 64 to 32 bit int loses data
#pragma message(BEAST_FILEANDLINE_ "Possible 32-bit overflow for long-running server instances.")
int const latencyPeak = mLatencyEvents * latency * 4; int const latencyPeak = mLatencyEvents * latency * 4;
if (mLatencyMSPeak < latencyPeak) if (mLatencyMSPeak < latencyPeak)

View File

@@ -36,7 +36,7 @@ private:
boost::mutex mLock; boost::mutex mLock;
uint64 mCounts; uint64 mCounts;
uint64 mLatencyEvents; int mLatencyEvents;
uint64 mLatencyMSAvg; uint64 mLatencyMSAvg;
uint64 mLatencyMSPeak; uint64 mLatencyMSPeak;
uint64 mTargetLatencyAvg; uint64 mTargetLatencyAvg;

View File

@@ -1313,14 +1313,6 @@ UPTR_T<STObject> STObject::parseJson (const Json::Value& object, SField::ref inN
} }
else if (value.isInt ()) else if (value.isInt ())
{ {
// VFALCO NOTE value.asInt() returns an int, which can never be greater than 7fffffff, but we
// are checking to make sure it is not greater than ffffffff, which can never be
// less than any 32 bit value (signed or unsigned).
//
// It seems this line only cares that value.asInt () is not negative, can someone
// confirm this?
//
#pragma message(BEAST_FILEANDLINE_ "Invalid signed/unsigned comparison")
data.push_back (new STUInt32 (field, range_check_cast <uint32> (value.asInt (), 0u, 4294967295u))); data.push_back (new STUInt32 (field, range_check_cast <uint32> (value.asInt (), 0u, 4294967295u)));
} }
else if (value.isUInt ()) else if (value.isUInt ())

View File

@@ -260,6 +260,26 @@ public:
} }
private: private:
/** Returns a value or throws if out of range.
This will throw if the source value cannot be represented
within the destination type.
*/
// VFALCO NOTE This won't work right
/*
template <class T, class U>
static T getWithRangeCheck (U v)
{
if (v < std::numeric_limits <T>::min ()) ||
v > std::numeric_limits <T>::max ())
{
throw std::runtime_error ("Value out of range");
}
return static_cast <T> (v);
}
*/
// VFALCO TODO these parameters should not be const references. // VFALCO TODO these parameters should not be const references.
template <typename T, typename U> template <typename T, typename U>
static T range_check_cast (const U& value, const T& minimum, const T& maximum) static T range_check_cast (const U& value, const T& minimum, const T& maximum)

View File

@@ -50,7 +50,7 @@
// VFALCO TODO We should try running with SQLITE_THREADSAFE==2 and see what happens. // VFALCO TODO We should try running with SQLITE_THREADSAFE==2 and see what happens.
#if SQLITE_THREADSAFE != 2 #if SQLITE_THREADSAFE != 2
#pragma message(BEAST_FILEANDLINE_ "Possible performance issue, SQLITE_THREADSAFE != 2") //#pragma message(BEAST_FILEANDLINE_ "Possible performance issue, SQLITE_THREADSAFE != 2")
#endif #endif
#include "sqlite/sqlite3.c" #include "sqlite/sqlite3.c"