Storage Engine API
mongo::NamespaceDetails Class Reference

#include <namespace_details.h>

Classes

class  Extra
 
class  IndexIterator
 
struct  Stats
 

Public Types

enum  { NIndexesMax = 64, NIndexesExtra = 30, NIndexesBase = 10 }
 
enum  UserFlags { Flag_UsePowerOf2Sizes = 1 << 0, Flag_NoPadding = 1 << 1 }
 

Public Member Functions

 NamespaceDetails (const DiskLoc &loc, bool _capped)
 
Extraextra () const
 
ExtraallocExtra (OperationContext *opCtx, StringData ns, NamespaceIndex &ni, int nindexessofar)
 
void copyingFrom (OperationContext *opCtx, StringData thisns, NamespaceIndex &ni, NamespaceDetails *src)
 
void setMaxCappedDocs (OperationContext *opCtx, long long max)
 
IndexDetailsidx (int idxNo, bool missingExpected=false)
 
const IndexDetailsidx (int idxNo, bool missingExpected=false) const
 
IndexIterator ii (bool includeBackgroundInProgress=false) const
 
IndexDetailsgetNextIndexDetails (OperationContext *opCtx, Collection *collection)
 This fetches the IndexDetails for the next empty index slot. More...
 
NamespaceDetailswritingWithoutExtra (OperationContext *opCtx)
 
NamespaceDetailswritingWithExtra (OperationContext *opCtx)
 Make all linked Extra objects writeable as well. More...
 
int _catalogFindIndexByName (OperationContext *opCtx, const Collection *coll, StringData name, bool includeBackgroundInProgress) const
 Returns the offset of the specified index name within the array of indexes. More...
 

Public Attributes

DiskLoc firstExtent
 
DiskLoc lastExtent
 
DiskLoc deletedListSmall [SmallBuckets]
 
DiskLoc deletedListLegacyGrabBag
 
struct mongo::NamespaceDetails::Stats stats
 
int lastExtentSize
 
int nIndexes
 
IndexDetails _indexes [NIndexesBase]
 
int isCapped
 
int maxDocsInCapped
 
double paddingFactorOldDoNotUse
 
int systemFlagsOldDoNotUse
 
DiskLoc capExtent
 
DiskLoc capFirstNewRecord
 
unsigned short _dataFileVersion
 
unsigned short _indexFileVersion
 
unsigned long long multiKeyIndexBits
 
unsigned long long _reservedA
 
long long _extraOffset
 
int indexBuildsInProgress
 
int userFlags
 
DiskLoc deletedListLarge [LargeBuckets]
 
char _reserved [8]
 

Static Public Attributes

static const int SmallBuckets = 18
 
static const int LargeBuckets = 8
 

Private Member Functions

void swapIndex (OperationContext *opCtx, int a, int b)
 swaps all meta data for 2 indexes a and b are 2 index ids, whose contents will be swapped must have a lock on the entire collection to do this More...
 
void cappedTruncateLastDelUpdate ()
 Update cappedLastDelRecLastExtent() after capExtent changed in cappedTruncateAfter() More...
 
 MONGO_STATIC_ASSERT (NIndexesMax<=NIndexesBase+NIndexesExtra *2)
 
 MONGO_STATIC_ASSERT (NIndexesMax<=64)
 
 MONGO_STATIC_ASSERT (sizeof(NamespaceDetails::Extra)==496)
 

Friends

class IndexCatalog
 
class IndexCatalogEntry
 

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
NIndexesMax 
NIndexesExtra 
NIndexesBase 

◆ UserFlags

Enumerator
Flag_UsePowerOf2Sizes 
Flag_NoPadding 

Constructor & Destructor Documentation

◆ NamespaceDetails()

mongo::NamespaceDetails::NamespaceDetails ( const DiskLoc loc,
bool  _capped 
)
explicit

Member Function Documentation

◆ _catalogFindIndexByName()

int mongo::NamespaceDetails::_catalogFindIndexByName ( OperationContext *  opCtx,
const Collection coll,
StringData  name,
bool  includeBackgroundInProgress 
) const

Returns the offset of the specified index name within the array of indexes.

Must be passed-in the owning collection to resolve the index record entries to objects.

Returns
> 0 if index name was found, -1 otherwise.

◆ allocExtra()

NamespaceDetails::Extra * mongo::NamespaceDetails::allocExtra ( OperationContext *  opCtx,
StringData  ns,
NamespaceIndex ni,
int  nindexessofar 
)

◆ cappedTruncateLastDelUpdate()

void mongo::NamespaceDetails::cappedTruncateLastDelUpdate ( )
private

Update cappedLastDelRecLastExtent() after capExtent changed in cappedTruncateAfter()

◆ copyingFrom()

void mongo::NamespaceDetails::copyingFrom ( OperationContext *  opCtx,
StringData  thisns,
NamespaceIndex ni,
NamespaceDetails src 
)

◆ extra()

Extra* mongo::NamespaceDetails::extra ( ) const
inline

◆ getNextIndexDetails()

IndexDetails& mongo::NamespaceDetails::getNextIndexDetails ( OperationContext *  opCtx,
Collection collection 
)

This fetches the IndexDetails for the next empty index slot.

The caller must populate returned object. This handles allocating extra index space, if necessary.

◆ idx() [1/2]

IndexDetails & mongo::NamespaceDetails::idx ( int  idxNo,
bool  missingExpected = false 
)

◆ idx() [2/2]

const IndexDetails & mongo::NamespaceDetails::idx ( int  idxNo,
bool  missingExpected = false 
) const

◆ ii()

IndexIterator mongo::NamespaceDetails::ii ( bool  includeBackgroundInProgress = false) const
inline

◆ MONGO_STATIC_ASSERT() [1/3]

mongo::NamespaceDetails::MONGO_STATIC_ASSERT ( NIndexesMax<=NIndexesBase+NIndexesExtra 2)
private

◆ MONGO_STATIC_ASSERT() [2/3]

mongo::NamespaceDetails::MONGO_STATIC_ASSERT ( NIndexesMax<=  64)
private

◆ MONGO_STATIC_ASSERT() [3/3]

mongo::NamespaceDetails::MONGO_STATIC_ASSERT ( sizeof(NamespaceDetails::Extra = =496)
private

◆ setMaxCappedDocs()

void mongo::NamespaceDetails::setMaxCappedDocs ( OperationContext *  opCtx,
long long  max 
)

◆ swapIndex()

void mongo::NamespaceDetails::swapIndex ( OperationContext *  opCtx,
int  a,
int  b 
)
private

swaps all meta data for 2 indexes a and b are 2 index ids, whose contents will be swapped must have a lock on the entire collection to do this

◆ writingWithExtra()

NamespaceDetails * mongo::NamespaceDetails::writingWithExtra ( OperationContext *  opCtx)

Make all linked Extra objects writeable as well.

◆ writingWithoutExtra()

NamespaceDetails * mongo::NamespaceDetails::writingWithoutExtra ( OperationContext *  opCtx)

Friends And Related Function Documentation

◆ IndexCatalog

friend class IndexCatalog
friend

◆ IndexCatalogEntry

friend class IndexCatalogEntry
friend

Member Data Documentation

◆ _dataFileVersion

unsigned short mongo::NamespaceDetails::_dataFileVersion

◆ _extraOffset

long long mongo::NamespaceDetails::_extraOffset

◆ _indexes

IndexDetails mongo::NamespaceDetails::_indexes[NIndexesBase]

◆ _indexFileVersion

unsigned short mongo::NamespaceDetails::_indexFileVersion

◆ _reserved

char mongo::NamespaceDetails::_reserved[8]

◆ _reservedA

unsigned long long mongo::NamespaceDetails::_reservedA

◆ capExtent

DiskLoc mongo::NamespaceDetails::capExtent

◆ capFirstNewRecord

DiskLoc mongo::NamespaceDetails::capFirstNewRecord

◆ deletedListLarge

DiskLoc mongo::NamespaceDetails::deletedListLarge[LargeBuckets]

◆ deletedListLegacyGrabBag

DiskLoc mongo::NamespaceDetails::deletedListLegacyGrabBag

◆ deletedListSmall

DiskLoc mongo::NamespaceDetails::deletedListSmall[SmallBuckets]

◆ firstExtent

DiskLoc mongo::NamespaceDetails::firstExtent

◆ indexBuildsInProgress

int mongo::NamespaceDetails::indexBuildsInProgress

◆ isCapped

int mongo::NamespaceDetails::isCapped

◆ LargeBuckets

const int mongo::NamespaceDetails::LargeBuckets = 8
static

◆ lastExtent

DiskLoc mongo::NamespaceDetails::lastExtent

◆ lastExtentSize

int mongo::NamespaceDetails::lastExtentSize

◆ maxDocsInCapped

int mongo::NamespaceDetails::maxDocsInCapped

◆ multiKeyIndexBits

unsigned long long mongo::NamespaceDetails::multiKeyIndexBits

◆ nIndexes

int mongo::NamespaceDetails::nIndexes

◆ paddingFactorOldDoNotUse

double mongo::NamespaceDetails::paddingFactorOldDoNotUse

◆ SmallBuckets

const int mongo::NamespaceDetails::SmallBuckets = 18
static

◆ stats

struct mongo::NamespaceDetails::Stats mongo::NamespaceDetails::stats

◆ systemFlagsOldDoNotUse

int mongo::NamespaceDetails::systemFlagsOldDoNotUse

◆ userFlags

int mongo::NamespaceDetails::userFlags

The documentation for this class was generated from the following files: