summaryrefslogtreecommitdiff
path: root/src/mongo/db/catalog/database_holder.cpp
diff options
context:
space:
mode:
authorKyle Suarez <kyle.suarez@mongodb.com>2018-04-30 10:25:12 -0400
committerKyle Suarez <kyle.suarez@mongodb.com>2018-04-30 11:14:59 -0400
commita9b53ada0db65e6ee341260c3256e960bac56a94 (patch)
tree17f359614f594c9427e982faa665578a05bd8728 /src/mongo/db/catalog/database_holder.cpp
parent69b6d9846e3fae2fea9313757c7563b1061cf585 (diff)
downloadmongo-a9b53ada0db65e6ee341260c3256e960bac56a94.tar.gz
Revert "SERVER-32645 Create a shim helper framework."
This reverts commit 2227f272a7a0a3e43625cb2d4a2704e1ccb6f893.
Diffstat (limited to 'src/mongo/db/catalog/database_holder.cpp')
-rw-r--r--src/mongo/db/catalog/database_holder.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/mongo/db/catalog/database_holder.cpp b/src/mongo/db/catalog/database_holder.cpp
index b40577d797f..0b0c4336662 100644
--- a/src/mongo/db/catalog/database_holder.cpp
+++ b/src/mongo/db/catalog/database_holder.cpp
@@ -36,9 +36,32 @@ namespace mongo {
DatabaseHolder::Impl::~Impl() = default;
-void DatabaseHolder::TUHook::hook() noexcept {}
+namespace {
+stdx::function<DatabaseHolder::factory_function_type> factory;
+} // namespace
+
+void DatabaseHolder::registerFactory(decltype(factory) newFactory) {
+ factory = std::move(newFactory);
+}
+
+auto DatabaseHolder::makeImpl() -> std::unique_ptr<Impl> {
+ return factory();
+}
-MONGO_DEFINE_SHIM(DatabaseHolder::makeImpl);
-MONGO_DEFINE_SHIM(DatabaseHolder::getDatabaseHolder);
+void DatabaseHolder::TUHook::hook() noexcept {}
+namespace {
+stdx::function<decltype(dbHolder)> dbHolderImpl;
+} // namespace
} // namespace mongo
+
+// The `mongo::` prefix is necessary to placate MSVC -- it is unable to properly identify anonymous
+// nested namespace members in `decltype` expressions when defining functions using scope-resolution
+// syntax.
+void mongo::registerDbHolderImpl(decltype(mongo::dbHolderImpl) impl) {
+ dbHolderImpl = std::move(impl);
+}
+
+auto mongo::dbHolder() -> DatabaseHolder& {
+ return dbHolderImpl();
+}