37 #include "mongo/base/status.h" 38 #include "mongo/base/string_data.h" 44 class DataFileVersion;
45 class MmapV1RecordHeader;
47 class OperationContext;
73 virtual std::unique_ptr<ExtentManager>
create(StringData dbname,
75 bool directoryPerDB) = 0;
80 virtual void close(OperationContext*
opCtx) = 0;
85 virtual Status init(OperationContext* opCtx) = 0;
88 virtual long long fileSize()
const = 0;
94 bool enforceQuota) = 0;
115 int64_t* totalFreeSizeBytes)
const = 0;
154 virtual int maxSize()
const = 0;
167 virtual int followupSize(
int recordLen,
int lastExtentLen)
const;
virtual void freeExtent(OperationContext *opCtx, DiskLoc extent)=0
frees a single extent ignores all fields in the Extent except: magic, myLoc, length ...
virtual long long fileSize() const =0
virtual DiskLoc extentLocForV1(const DiskLoc &loc) const =0
virtual Status init(OperationContext *opCtx)=0
opens all current files
Definition: extent_manager.h:70
MONGO_DISALLOW_COPYING(ExtentManager)
Definition: extent_manager.h:180
virtual int numFiles() const =0
virtual void setFileFormat(OperationContext *opCtx, DataFileVersion newVersion)=0
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Definition: extent_manager.h:180
OperationContext Database StringData BSONObj CollectionOptions::ParseKind bool const BSONObj &idIndex Status
Definition: database_impl.cpp:956
Definition: extent_manager.h:181
Definition: data_file.h:43
virtual ~ExtentManager()
Definition: extent_manager.h:78
virtual std::unique_ptr< RecordFetcher > recordNeedsFetch(const DiskLoc &loc) const =0
The extent manager tracks accesses to DiskLocs.
HintType
Definition: extent_manager.h:180
represents a disk location/offset on disk in a database.
Definition: diskloc.h:53
virtual void freeExtents(OperationContext *opCtx, DiskLoc firstExt, DiskLoc lastExt)=0
firstExt has to be == lastExt or a chain
virtual std::unique_ptr< ExtentManager > create(StringData dbname, StringData path, bool directoryPerDB)=0
virtual int minSize() const
Definition: extent_manager.h:159
virtual CacheHint * cacheHint(const DiskLoc &extentLoc, const HintType &hint)=0
Tell the system that for this extent, it will have this kind of disk access.
virtual int followupSize(int recordLen, int lastExtentLen) const
Definition: extent_manager.cpp:59
virtual MmapV1RecordHeader * recordForV1(const DiskLoc &loc) const =0
virtual int maxSize() const =0
virtual Extent * getExtent(const DiskLoc &loc, bool doSanityCheck=true) const =0
virtual DiskLoc allocateExtent(OperationContext *opCtx, bool capped, int size, bool enforceQuota)=0
virtual int quantizeExtentSize(int size) const
quantizes extent size to >= min + page boundary
Definition: extent_manager.cpp:37
virtual DataFileVersion getFileFormat(OperationContext *opCtx) const =0
ExtentManager basics.
Definition: extent_manager.h:64
virtual int initialSize(int recordLen) const
get a suggested size for the first extent in a namespace
Definition: extent_manager.cpp:80
virtual Extent * extentForV1(const DiskLoc &loc) const =0
virtual void freeListStats(OperationContext *opCtx, int *numExtents, int64_t *totalFreeSizeBytes) const =0
Retrieve statistics on the the free list managed by this ExtentManger.
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual ~CacheHint()
Definition: extent_manager.h:183
Definition: data_file.h:196
virtual void close(OperationContext *opCtx)=0
ExtentManager()
Definition: extent_manager.h:68
virtual ~Factory()=default
virtual const DataFile * getOpenFile(int n) const =0