34 #include "mongo/base/shim.h" 35 #include "mongo/base/string_data.h" 36 #include "mongo/db/namespace_string.h" 37 #include "mongo/stdx/functional.h" 38 #include "mongo/stdx/mutex.h" 39 #include "mongo/util/concurrency/mutex.h" 40 #include "mongo/util/string_map.h" 44 class OperationContext;
55 virtual Database*
get(OperationContext*
opCtx, StringData
ns)
const = 0;
57 virtual Database*
openDb(OperationContext* opCtx, StringData
ns,
bool* justCreated) = 0;
59 virtual void close(OperationContext* opCtx, StringData ns,
const std::string& reason) = 0;
61 virtual void closeAll(OperationContext* opCtx,
const std::string& reason) = 0;
69 static MONGO_DECLARE_SHIM((PrivateTo<DatabaseHolder>)->std::unique_ptr<Impl>) makeImpl;
92 bool*
const justCreated =
nullptr) {
93 return this->
_impl().
openDb(opCtx, ns, justCreated);
100 inline void close(OperationContext*
const opCtx,
102 const std::string& reason) {
103 return this->
_impl().
close(opCtx, ns, reason);
112 inline void closeAll(OperationContext*
const opCtx,
const std::string& reason) {
128 static void hook() noexcept;
virtual Database * get(OperationContext *opCtx, StringData ns) const =0
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
DatabaseHolder()
Definition: database_holder.h:73
const Impl & _impl() const
Definition: database_holder.h:136
TUHook() noexcept
Definition: database_holder.h:130
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
Definition: database_holder.h:127
virtual void closeAll(OperationContext *opCtx, const std::string &reason)=0
Database * openDb(OperationContext *const opCtx, const StringData ns, bool *const justCreated=nullptr)
Retrieves a database reference if it is already opened, or opens it if it hasn't been opened/created ...
Definition: database_holder.h:90
void close(OperationContext *const opCtx, const StringData ns, const std::string &reason)
Closes the specified database.
Definition: database_holder.h:100
Impl & _impl()
Definition: database_holder.h:141
virtual void close(OperationContext *opCtx, StringData ns, const std::string &reason)=0
Definition: database_holder.h:51
static MONGO_DECLARE_SHIM(() ->DatabaseHolder &) getDatabaseHolder
void closeAll(OperationContext *const opCtx, const std::string &reason)
Closes all opened databases.
Definition: database_holder.h:112
std::unique_ptr< Impl > _pimpl
Definition: database_holder.h:146
Represents a logical database containing Collections.
Definition: database.h:57
std::set< std::string > getNamesWithConflictingCasing(const StringData name)
Returns the set of existing database names that differ only in casing.
Definition: database_holder.h:119
~DatabaseHolder()=default
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
virtual Database * openDb(OperationContext *opCtx, StringData ns, bool *justCreated)=0
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
virtual std::set< std::string > getNamesWithConflictingCasing(StringData name)=0
Registry of opened databases.
Definition: database_holder.h:49