summaryrefslogtreecommitdiff
path: root/src/server/shared/Configuration/Config.cpp
diff options
context:
space:
mode:
authorYehonal <hw.2@hotmail.it>2016-07-30 18:14:38 +0200
committerYehonal <yehonal.azeroth@gmail.com>2016-08-07 12:24:19 +0200
commit2ca258e179ca9ff65d0fc28b16e28b1eb72e5a86 (patch)
tree1d357a5df49494737080c9b7295be102e5edc8ca /src/server/shared/Configuration/Config.cpp
parent648163a2e04fa29aeb8230a801760dede250d5b8 (diff)
[CORE] implemented multiple configuration files loading
currently it's used to load the default [auth|world]server.conf.dist but you can use sConfigMgr->LoadMore to load your custom config in your modules to add/overwrite properties
Diffstat (limited to 'src/server/shared/Configuration/Config.cpp')
-rw-r--r--src/server/shared/Configuration/Config.cpp25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp
index 43b50b49e0..2dce7a7482 100644
--- a/src/server/shared/Configuration/Config.cpp
+++ b/src/server/shared/Configuration/Config.cpp
@@ -49,10 +49,9 @@ bool ConfigMgr::LoadInitial(char const* file)
GuardType guard(_configLock);
- _filename = file;
_config.reset(new ACE_Configuration_Heap());
if (_config->open() == 0)
- if (LoadData(_filename.c_str()))
+ if (LoadData(file))
return true;
_config.reset();
@@ -71,11 +70,25 @@ bool ConfigMgr::LoadMore(char const* file)
bool ConfigMgr::Reload()
{
- return LoadInitial(_filename.c_str());
+ for(std::vector<std::string>::iterator it = _confFiles.begin(); it != _confFiles.end(); ++it) {
+ if (it==_confFiles.begin()) {
+ if (!LoadInitial((*it).c_str()))
+ return false;
+ } else {
+ if (!LoadMore((*it).c_str()))
+ return false;
+ }
+ }
+
+ return true;
}
bool ConfigMgr::LoadData(char const* file)
{
+ if(std::find(_confFiles.begin(), _confFiles.end(), file) == _confFiles.end()) {
+ _confFiles.push_back(file);
+ }
+
ACE_Ini_ImpExp config_importer(*_config.get());
if (config_importer.import_config(file) == 0)
return true;
@@ -112,12 +125,6 @@ float ConfigMgr::GetFloatDefault(const char* name, float def)
return GetValueHelper(name, val) ? (float)atof(val.c_str()) : def;
}
-std::string const& ConfigMgr::GetFilename()
-{
- GuardType guard(_configLock);
- return _filename;
-}
-
std::list<std::string> ConfigMgr::GetKeysByString(std::string const& name)
{
GuardType guard(_configLock);