feat(Core/Modules): add separated lib for modules (#9281)

This commit is contained in:
Kargatum
2021-12-02 20:28:58 +07:00
committed by GitHub
parent 8668a03e14
commit 51adbffae4
56 changed files with 1904 additions and 1014 deletions

View File

@@ -25,11 +25,11 @@
#include <mysqld_error.h>
#include <thread>
DatabaseLoader::DatabaseLoader(std::string const& logger, uint32 const defaultUpdateMask)
: _logger(logger), _autoSetup(sConfigMgr->GetOption<bool>("Updates.AutoSetup", true)),
_updateFlags(sConfigMgr->GetOption<uint32>("Updates.EnableDatabases", defaultUpdateMask))
{
}
DatabaseLoader::DatabaseLoader(std::string const& logger, uint32 const defaultUpdateMask, std::string_view modulesList)
: _logger(logger),
_modulesList(modulesList),
_autoSetup(sConfigMgr->GetOption<bool>("Updates.AutoSetup", true)),
_updateFlags(sConfigMgr->GetOption<uint32>("Updates.EnableDatabases", defaultUpdateMask)) { }
template <class T>
DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::string const& name)
@@ -127,7 +127,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st
_update.push([this, name, &pool]() -> bool
{
if (!DBUpdater<T>::Update(pool))
if (!DBUpdater<T>::Update(pool, _modulesList))
{
LOG_ERROR(_logger, "Could not update the %s database, see log for details.", name.c_str());
return false;

View File

@@ -32,7 +32,7 @@ class DatabaseWorkerPool;
class AC_DATABASE_API DatabaseLoader
{
public:
DatabaseLoader(std::string const& logger, uint32 const defaultUpdateMask = 0);
DatabaseLoader(std::string const& logger, uint32 const defaultUpdateMask = 0, std::string_view modulesList = {});
// Register a database to the loader (lazy implemented)
template <class T>
@@ -57,7 +57,7 @@ public:
return _updateFlags;
}
private :
private:
bool OpenDatabases();
bool PopulateDatabases();
bool UpdateDatabases();
@@ -71,6 +71,7 @@ private :
bool Process(std::queue<Predicate>& queue);
std::string const _logger;
std::string_view _modulesList;
bool const _autoSetup;
uint32 const _updateFlags;