diff options
author | Kyle Suarez <kyle.suarez@mongodb.com> | 2018-04-30 10:25:12 -0400 |
---|---|---|
committer | Kyle Suarez <kyle.suarez@mongodb.com> | 2018-04-30 11:14:59 -0400 |
commit | a9b53ada0db65e6ee341260c3256e960bac56a94 (patch) | |
tree | 17f359614f594c9427e982faa665578a05bd8728 /src/mongo/db/catalog/database_holder.cpp | |
parent | 69b6d9846e3fae2fea9313757c7563b1061cf585 (diff) | |
download | mongo-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.cpp | 29 |
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(); +} |