summaryrefslogtreecommitdiff
path: root/src/mongo/db/structure/record_store_v1_base.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/structure/record_store_v1_base.h')
-rw-r--r--src/mongo/db/structure/record_store_v1_base.h58
1 files changed, 54 insertions, 4 deletions
diff --git a/src/mongo/db/structure/record_store_v1_base.h b/src/mongo/db/structure/record_store_v1_base.h
index 510016b650f..230a2657124 100644
--- a/src/mongo/db/structure/record_store_v1_base.h
+++ b/src/mongo/db/structure/record_store_v1_base.h
@@ -38,13 +38,63 @@ namespace mongo {
class CappedRecordStoreV1Iterator;
class DocWriter;
class ExtentManager;
- class NamespaceDetails;
class Record;
+ class RecordStoreV1MetaData {
+ public:
+ virtual ~RecordStoreV1MetaData(){}
+
+ virtual int bucket(int size) const = 0;
+
+ virtual const DiskLoc& capExtent() const = 0;
+ virtual void setCapExtent( const DiskLoc& loc ) = 0;
+
+ virtual const DiskLoc& capFirstNewRecord() const = 0;
+ virtual void setCapFirstNewRecord( const DiskLoc& loc ) = 0;
+
+ virtual bool capLooped() const = 0;
+ virtual void clearSystemFlags() = 0;
+
+ virtual long long dataSize() const = 0;
+ virtual long long numRecords() const = 0;
+
+ virtual void incrementStats( long long dataSizeIncrement,
+ long long numRecordsIncrement ) = 0;
+
+ virtual void setStats( long long dataSizeIncrement,
+ long long numRecordsIncrement ) = 0;
+
+ virtual const DiskLoc& deletedListEntry( int bucket ) const = 0;
+ virtual void setDeletedListEntry( int bucket, const DiskLoc& loc ) = 0;
+ virtual void orphanDeletedList() = 0;
+
+ virtual const DiskLoc& firstExtent() const = 0;
+ virtual void setFirstExtent( const DiskLoc& loc ) = 0;
+
+ virtual const DiskLoc& lastExtent() const = 0;
+ virtual void setLastExtent( const DiskLoc& loc ) = 0;
+
+ virtual bool isCapped() const = 0;
+
+ virtual bool isUserFlagSet( int flag ) const = 0;
+
+ virtual int lastExtentSize() const = 0;
+ virtual void setLastExtentSize( int newMax ) = 0;
+
+ virtual long long maxCappedDocs() const = 0;
+
+ virtual double paddingFactor() const = 0;
+
+ virtual void setPaddingFactor( double paddingFactor ) = 0;
+
+ virtual int quantizePowerOf2AllocationSpace(int allocSize) const = 0;
+
+ };
+
class RecordStoreV1Base : public RecordStore {
public:
RecordStoreV1Base( const StringData& ns,
- NamespaceDetails* details,
+ RecordStoreV1MetaData* details,
ExtentManager* em,
bool isSystemIndexes );
@@ -67,7 +117,7 @@ namespace mongo {
// TODO: another sad one
virtual const DeletedRecord* deletedRecordFor( const DiskLoc& loc ) const;
- const NamespaceDetails* details() const { return _details; }
+ const RecordStoreV1MetaData* details() const { return _details.get(); }
/**
* @return the actual size to create
@@ -112,7 +162,7 @@ namespace mongo {
*/
void _addRecordToRecListInExtent(Record* r, DiskLoc loc);
- NamespaceDetails* _details;
+ scoped_ptr<RecordStoreV1MetaData> _details;
ExtentManager* _extentManager;
bool _isSystemIndexes;