diff options
Diffstat (limited to 'src/mongo/db/catalog')
-rw-r--r-- | src/mongo/db/catalog/database.cpp | 10 | ||||
-rw-r--r-- | src/mongo/db/catalog/database.h | 5 | ||||
-rw-r--r-- | src/mongo/db/catalog/database_catalog_entry.h | 59 |
3 files changed, 67 insertions, 7 deletions
diff --git a/src/mongo/db/catalog/database.cpp b/src/mongo/db/catalog/database.cpp index d64ad95efc8..b7ea6ce2df2 100644 --- a/src/mongo/db/catalog/database.cpp +++ b/src/mongo/db/catalog/database.cpp @@ -317,10 +317,6 @@ namespace mongo { return true; } - void Database::getCollectionNamespaces( std::list<std::string>* out ) const { - _dbEntry->namespaceIndex().getCollectionNamespaces( out ); - } - long long Database::getIndexSizeForCollection(Collection* coll, BSONObjBuilder* details, int scale ) { @@ -355,7 +351,7 @@ namespace mongo { list<string> collections; if ( !empty ) - getCollectionNamespaces( &collections ); + _dbEntry->getCollectionNamespaces( &collections ); long long ncollections = 0; long long objects = 0; @@ -851,4 +847,8 @@ namespace mongo { return !_dbEntry->namespaceIndex().allocated(); } + const DatabaseCatalogEntry* Database::getDatabaseCatalogEntry() const { + return _dbEntry.get(); + } + } // namespace mongo diff --git a/src/mongo/db/catalog/database.h b/src/mongo/db/catalog/database.h index 69a35a41ad0..8fc2488c1f3 100644 --- a/src/mongo/db/catalog/database.h +++ b/src/mongo/db/catalog/database.h @@ -40,6 +40,7 @@ namespace mongo { class Collection; + class DatabaseCatalogEntry; class DataFile; class ExtentManager; class IndexCatalog; @@ -148,14 +149,14 @@ namespace mongo { int getProfilingLevel() const { return _profile; } const char* getProfilingNS() const { return _profileName.c_str(); } - void getCollectionNamespaces( std::list<std::string>* out ) const; - void getStats( BSONObjBuilder* output, double scale = 1 ); long long getIndexSizeForCollection( Collection* collections, BSONObjBuilder* details = NULL, int scale = 1 ); + const DatabaseCatalogEntry* getDatabaseCatalogEntry() const; + // TODO: do not think this method should exist, so should try and encapsulate better MmapV1ExtentManager* getExtentManager(); const MmapV1ExtentManager* getExtentManager() const; diff --git a/src/mongo/db/catalog/database_catalog_entry.h b/src/mongo/db/catalog/database_catalog_entry.h new file mode 100644 index 00000000000..bef89a1ddb1 --- /dev/null +++ b/src/mongo/db/catalog/database_catalog_entry.h @@ -0,0 +1,59 @@ +// database_catalog_entry.h + +/** +* Copyright (C) 2014 MongoDB Inc. +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License, version 3, +* as published by the Free Software Foundation. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see <http://www.gnu.org/licenses/>. +* +* As a special exception, the copyright holders give permission to link the +* code of portions of this program with the OpenSSL library under certain +* conditions as described in each individual source file and distribute +* linked combinations including the program with the OpenSSL library. You +* must comply with the GNU Affero General Public License in all respects for +* all of the code used other than as permitted herein. If you modify file(s) +* with this exception, you may extend this exception to your version of the +* file(s), but you are not obligated to do so. If you do not wish to do so, +* delete this exception statement from your version. If you delete this +* exception statement from all source files in the program, then also delete +* it in the license file. +*/ + +#pragma once + +#include <list> +#include <string> + +#include "mongo/base/string_data.h" + +namespace mongo { + + class OperationContext; + + class DatabaseCatalogEntry { + public: + DatabaseCatalogEntry( const StringData& name ) + : _name( name.toString() ) { + } + + virtual ~DatabaseCatalogEntry(){ } + + const std::string& name() const { return _name; } + + // ---- + + virtual void getCollectionNamespaces( std::list<std::string>* out ) const = 0; + + private: + std::string _name; + }; +} |