Skip to content
Snippets Groups Projects
Commit 607f60d6 authored by Nat Goodspeed's avatar Nat Goodspeed
Browse files

CHOP-753: Add timestamp to LLMemoryInfo's LLSD stats block.

For postprocessing these stats, we'll want the time at which they were
captured. We'll want the current framerate too, but handle that at a higher
level.
parent 774306bc
No related branches found
No related tags found
No related merge requests found
...@@ -51,6 +51,9 @@ ...@@ -51,6 +51,9 @@
#include <boost/foreach.hpp> #include <boost/foreach.hpp>
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <boost/range.hpp> #include <boost/range.hpp>
#include <boost/utility/enable_if.hpp>
#include <boost/type_traits/is_integral.hpp>
#include <boost/type_traits/is_float.hpp>
using namespace llsd; using namespace llsd;
...@@ -649,7 +652,24 @@ class StatsArray ...@@ -649,7 +652,24 @@ class StatsArray
mStats(LLSD::emptyArray()) mStats(LLSD::emptyArray())
{} {}
void add(const LLSD::String& name, LLSD::Integer value) // Store every integer type as LLSD::Integer.
template <class T>
void add(const LLSD::String& name, const T& value,
typename boost::enable_if<boost::is_integral<T> >::type* = 0)
{
mStats.append(LLSDArray(name)(LLSD::Integer(value)));
}
// Store every floating-point type as LLSD::Real.
template <class T>
void add(const LLSD::String& name, const T& value,
typename boost::enable_if<boost::is_float<T> >::type* = 0)
{
mStats.append(LLSDArray(name)(LLSD::Real(value)));
}
// Hope that LLSD::Date values are sufficiently unambiguous.
void add(const LLSD::String& name, const LLSD::Date& value)
{ {
mStats.append(LLSDArray(name)(value)); mStats.append(LLSDArray(name)(value));
} }
...@@ -847,9 +867,16 @@ void LLMemoryInfo::stream(std::ostream& s) const ...@@ -847,9 +867,16 @@ void LLMemoryInfo::stream(std::ostream& s) const
// Now stream stats // Now stream stats
BOOST_FOREACH(LLSD pair, inArray(mStatsArray)) BOOST_FOREACH(LLSD pair, inArray(mStatsArray))
{ {
s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':') s << pfx << std::setw(key_width+1) << (pair[0].asString() + ':') << ' ';
<< ' ' if (pair[1].isInteger())
<< std::setw(12) << pair[1].asInteger() << std::endl; s << std::setw(12) << pair[1].asInteger();
else if (pair[1].isReal())
s << std::fixed << std::setprecision(1) << pair[1].asReal();
else if (pair[1].isDate())
pair[1].asDate().toStream(s);
else
s << pair[1]; // just use default LLSD formatting
s << std::endl;
} }
} }
...@@ -881,6 +908,9 @@ LLSD LLMemoryInfo::loadStatsArray() ...@@ -881,6 +908,9 @@ LLSD LLMemoryInfo::loadStatsArray()
// This implementation is derived from stream() code (as of 2011-06-29). // This implementation is derived from stream() code (as of 2011-06-29).
StatsArray stats; StatsArray stats;
// associate timestamp for analysis over time
stats.add("timestamp", LLDate::now());
#if LL_WINDOWS #if LL_WINDOWS
MEMORYSTATUSEX state; MEMORYSTATUSEX state;
state.dwLength = sizeof(state); state.dwLength = sizeof(state);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment