Storage Engine API
mongo::DatabaseHolderImpl Class Reference

Registry of opened databases. More...

#include <database_holder_impl.h>

Inheritance diagram for mongo::DatabaseHolderImpl:
mongo::DatabaseHolder::Impl

Detailed Description

Registry of opened databases.

Public Member Functions

 DatabaseHolderImpl ()=default
 
Databaseget (OperationContext *opCtx, StringData ns) const override
 Retrieves an already opened database or returns NULL. More...
 
DatabaseopenDb (OperationContext *opCtx, StringData ns, bool *justCreated=nullptr) override
 Retrieves a database reference if it is already opened, or opens it if it hasn't been opened/created yet. More...
 
void close (OperationContext *opCtx, StringData ns, const std::string &reason) override
 Closes the specified database. More...
 
void closeAll (OperationContext *opCtx, const std::string &reason) override
 Closes all opened databases. More...
 
std::set< std::string > getNamesWithConflictingCasing (StringData name) override
 Returns the set of existing database names that differ only in casing. More...
 
- Public Member Functions inherited from mongo::DatabaseHolder::Impl
virtual ~Impl ()=0
 

Private Types

typedef StringMap< Database * > DBs
 

Private Member Functions

std::set< std::string > _getNamesWithConflictingCasing_inlock (StringData name)
 

Private Attributes

SimpleMutex _m
 
DBs _dbs
 

Member Typedef Documentation

◆ DBs

typedef StringMap<Database*> mongo::DatabaseHolderImpl::DBs
private

Constructor & Destructor Documentation

◆ DatabaseHolderImpl()

mongo::DatabaseHolderImpl::DatabaseHolderImpl ( )
default

Member Function Documentation

◆ _getNamesWithConflictingCasing_inlock()

std::set< std::string > mongo::DatabaseHolderImpl::_getNamesWithConflictingCasing_inlock ( StringData  name)
private

◆ close()

void mongo::DatabaseHolderImpl::close ( OperationContext *  opCtx,
StringData  ns,
const std::string &  reason 
)
overridevirtual

Closes the specified database.

Must be called with the database locked in X-mode. No background jobs must be in progress on the database when this function is called.

Implements mongo::DatabaseHolder::Impl.

◆ closeAll()

void mongo::DatabaseHolderImpl::closeAll ( OperationContext *  opCtx,
const std::string &  reason 
)
overridevirtual

Closes all opened databases.

Must be called with the global lock acquired in X-mode. Will uassert if any background jobs are running when this function is called.

Parameters
reasonThe reason for close.

Implements mongo::DatabaseHolder::Impl.

◆ get()

Database * mongo::DatabaseHolderImpl::get ( OperationContext *  opCtx,
StringData  ns 
) const
overridevirtual

Retrieves an already opened database or returns NULL.

Must be called with the database locked in at least IS-mode.

Implements mongo::DatabaseHolder::Impl.

◆ getNamesWithConflictingCasing()

std::set< std::string > mongo::DatabaseHolderImpl::getNamesWithConflictingCasing ( StringData  name)
overridevirtual

Returns the set of existing database names that differ only in casing.

Implements mongo::DatabaseHolder::Impl.

◆ openDb()

Database * mongo::DatabaseHolderImpl::openDb ( OperationContext *  opCtx,
StringData  ns,
bool *  justCreated = nullptr 
)
overridevirtual

Retrieves a database reference if it is already opened, or opens it if it hasn't been opened/created yet.

Must be called with the database locked in X-mode.

Parameters
justCreatedReturns whether the database was newly created (true) or it already existed (false). Can be NULL if this information is not necessary.

Implements mongo::DatabaseHolder::Impl.

Member Data Documentation

◆ _dbs

DBs mongo::DatabaseHolderImpl::_dbs
private

◆ _m

SimpleMutex mongo::DatabaseHolderImpl::_m
mutableprivate

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