summaryrefslogtreecommitdiff
path: root/db/stats
diff options
context:
space:
mode:
authorAlberto Lerner <alerner@10gen.com>2010-09-14 14:11:15 -0400
committerAlberto Lerner <alerner@10gen.com>2010-09-14 14:11:15 -0400
commitb97c1d90c17b1f92ecc888420b227a9b39cb2697 (patch)
treed6e3f793f5820672f10802a0ebe3a11fefda6785 /db/stats
parenta1dd86846687c75020b44f30d95fbd70234db6f6 (diff)
downloadmongo-b97c1d90c17b1f92ecc888420b227a9b39cb2697.tar.gz
a tiny bit of tightening
Diffstat (limited to 'db/stats')
-rw-r--r--db/stats/top.cpp55
-rw-r--r--db/stats/top.h18
2 files changed, 34 insertions, 39 deletions
diff --git a/db/stats/top.cpp b/db/stats/top.cpp
index 5ab257c9490..a317514fec2 100644
--- a/db/stats/top.cpp
+++ b/db/stats/top.cpp
@@ -44,7 +44,6 @@ namespace mongo {
}
-
void Top::record( const string& ns , int op , int lockType , long long micros , bool command ){
//cout << "record: " << ns << "\t" << op << "\t" << command << endl;
scoped_lock lk(_lock);
@@ -59,13 +58,6 @@ namespace mongo {
_record( _global , op , lockType , micros , command );
}
- void Top::collectionDropped( const string& ns ){
- //cout << "collectionDropped: " << ns << endl;
- scoped_lock lk(_lock);
- _usage.erase(ns);
- _lastDropped = ns;
- }
-
void Top::_record( CollectionData& c , int op , int lockType , long long micros , bool command ){
c.total.inc( micros );
@@ -108,45 +100,52 @@ namespace mongo {
}
- void Top::cloneMap(Top::UsageMap& out){
+ void Top::collectionDropped( const string& ns ){
+ //cout << "collectionDropped: " << ns << endl;
+ scoped_lock lk(_lock);
+ _usage.erase(ns);
+ _lastDropped = ns;
+ }
+
+ void Top::cloneMap(Top::UsageMap& out) const {
scoped_lock lk(_lock);
out = _usage;
}
void Top::append( BSONObjBuilder& b ){
scoped_lock lk( _lock );
- append( b , _usage );
- }
-
- void Top::append( BSONObjBuilder& b , const char * name , const UsageData& map ){
- BSONObjBuilder bb( b.subobjStart( name ) );
- bb.appendNumber( "time" , map.time );
- bb.appendNumber( "count" , map.count );
- bb.done();
+ _appendToUsageMap( b , _usage );
}
- void Top::append( BSONObjBuilder& b , const UsageMap& map ){
+ void Top::_appendToUsageMap( BSONObjBuilder& b , const UsageMap& map ) const {
for ( UsageMap::const_iterator i=map.begin(); i!=map.end(); i++ ){
BSONObjBuilder bb( b.subobjStart( i->first ) );
const CollectionData& coll = i->second;
- append( b , "total" , coll.total );
+ _appendStatsEntry( b , "total" , coll.total );
- append( b , "readLock" , coll.readLock );
- append( b , "writeLock" , coll.writeLock );
-
- append( b , "queries" , coll.queries );
- append( b , "getmore" , coll.getmore );
- append( b , "insert" , coll.insert );
- append( b , "update" , coll.update );
- append( b , "remove" , coll.remove );
- append( b , "commands" , coll.commands );
+ _appendStatsEntry( b , "readLock" , coll.readLock );
+ _appendStatsEntry( b , "writeLock" , coll.writeLock );
+
+ _appendStatsEntry( b , "queries" , coll.queries );
+ _appendStatsEntry( b , "getmore" , coll.getmore );
+ _appendStatsEntry( b , "insert" , coll.insert );
+ _appendStatsEntry( b , "update" , coll.update );
+ _appendStatsEntry( b , "remove" , coll.remove );
+ _appendStatsEntry( b , "commands" , coll.commands );
bb.done();
}
}
+ void Top::_appendStatsEntry( BSONObjBuilder& b , const char * statsName , const UsageData& map ) const {
+ BSONObjBuilder bb( b.subobjStart( statsName ) );
+ bb.appendNumber( "time" , map.time );
+ bb.appendNumber( "count" , map.count );
+ bb.done();
+ }
+
class TopCmd : public Command {
public:
TopCmd() : Command( "top", true ){}
diff --git a/db/stats/top.h b/db/stats/top.h
index 135e8f8af27..b0efb97eea3 100644
--- a/db/stats/top.h
+++ b/db/stats/top.h
@@ -31,8 +31,7 @@ namespace mongo {
public:
Top() : _lock("Top") { }
- class UsageData {
- public:
+ struct UsageData {
UsageData() : time(0) , count(0){}
UsageData( const UsageData& older , const UsageData& newer );
long long time;
@@ -44,8 +43,7 @@ namespace mongo {
}
};
- class CollectionData {
- public:
+ struct CollectionData {
/**
* constructs a diff
*/
@@ -70,21 +68,19 @@ namespace mongo {
public:
void record( const string& ns , int op , int lockType , long long micros , bool command );
void append( BSONObjBuilder& b );
- void cloneMap(UsageMap& out);
- CollectionData getGlobalData(){ return _global; }
+ void cloneMap(UsageMap& out) const;
+ CollectionData getGlobalData() const { return _global; }
void collectionDropped( const string& ns );
public: // static stuff
static Top global;
- void append( BSONObjBuilder& b , const char * name , const UsageData& map );
- void append( BSONObjBuilder& b , const UsageMap& map );
-
private:
-
+ void _appendToUsageMap( BSONObjBuilder& b , const UsageMap& map ) const;
+ void _appendStatsEntry( BSONObjBuilder& b , const char * statsName , const UsageData& map ) const;
void _record( CollectionData& c , int op , int lockType , long long micros , bool command );
- mongo::mutex _lock;
+ mutable mongo::mutex _lock;
CollectionData _global;
UsageMap _usage;
string _lastDropped;