diff options
| author | Yehonal <hw.2@hotmail.it> | 2016-07-30 18:14:38 +0200 |
|---|---|---|
| committer | Yehonal <yehonal.azeroth@gmail.com> | 2016-08-07 12:24:19 +0200 |
| commit | 2ca258e179ca9ff65d0fc28b16e28b1eb72e5a86 (patch) | |
| tree | 1d357a5df49494737080c9b7295be102e5edc8ca /src/server/shared/Configuration/Config.cpp | |
| parent | 648163a2e04fa29aeb8230a801760dede250d5b8 (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.cpp | 25 |
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); |
