Storage Engine API
database_holder_impl.h
Go to the documentation of this file.
1 
29 #pragma once
30 
32 
33 #include <set>
34 #include <string>
35 
36 #include "mongo/base/string_data.h"
37 #include "mongo/db/namespace_string.h"
38 #include "mongo/stdx/mutex.h"
39 #include "mongo/util/concurrency/mutex.h"
40 #include "mongo/util/string_map.h"
41 
42 namespace mongo {
43 
44 class Database;
45 class OperationContext;
46 
51 public:
52  DatabaseHolderImpl() = default;
53 
58  Database* get(OperationContext* opCtx, StringData ns) const override;
59 
67  Database* openDb(OperationContext* opCtx, StringData ns, bool* justCreated = nullptr) override;
68 
73  void close(OperationContext* opCtx, StringData ns, const std::string& reason) override;
74 
81  void closeAll(OperationContext* opCtx, const std::string& reason) override;
82 
86  std::set<std::string> getNamesWithConflictingCasing(StringData name) override;
87 
88 private:
89  std::set<std::string> _getNamesWithConflictingCasing_inlock(StringData name);
90 
91  typedef StringMap<Database*> DBs;
92  mutable SimpleMutex _m;
93  DBs _dbs;
94 };
95 } // namespace mongo
SimpleMutex _m
Definition: database_holder_impl.h:92
Database * openDb(OperationContext *opCtx, StringData ns, bool *justCreated=nullptr) override
Retrieves a database reference if it is already opened, or opens it if it hasn&#39;t been opened/created ...
Definition: database_holder_impl.cpp:133
Collection *const const NamespaceString & ns
Definition: collection_info_cache_impl.cpp:53
std::set< std::string > _getNamesWithConflictingCasing_inlock(StringData name)
Definition: database_holder_impl.cpp:117
Copyright (C) 2014 MongoDB Inc.
Definition: bson_collection_catalog_entry.cpp:38
std::set< std::string > getNamesWithConflictingCasing(StringData name) override
Returns the set of existing database names that differ only in casing.
Definition: database_holder_impl.cpp:128
void closeAll(OperationContext *opCtx, const std::string &reason) override
Closes all opened databases.
Definition: database_holder_impl.cpp:229
Definition: database_holder.h:51
Represents a logical database containing Collections.
Definition: database.h:57
DBs _dbs
Definition: database_holder_impl.h:93
Registry of opened databases.
Definition: database_holder_impl.h:50
Database *const OperationContext *const const StringData name
Definition: database_impl.cpp:82
void close(OperationContext *opCtx, StringData ns, const std::string &reason) override
Closes the specified database.
Definition: database_holder_impl.cpp:201
Collection *const OperationContext *const opCtx
Definition: collection_impl.cpp:80
StringMap< Database * > DBs
Definition: database_holder_impl.h:91