diff options
author | Shauren <shauren.trinity@gmail.com> | 2013-07-15 17:31:44 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2013-07-15 17:31:44 +0200 |
commit | 779a59e7e218e340ac5cefd3297ea970d804239d (patch) | |
tree | c47bf18ae837020983a325139df4de49627f1f8e /src/server/shared/Configuration/Config.h | |
parent | baeecba6c9e3a2b9d4e98551b9746d27016305a2 (diff) |
Core/Config: Refactored ConfigMgr
* Loading initial configuration files is now separate from loading any additional custom configs
Diffstat (limited to 'src/server/shared/Configuration/Config.h')
-rw-r--r-- | src/server/shared/Configuration/Config.h | 49 |
1 files changed, 45 insertions, 4 deletions
diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h index 778c25f2033..d633e37f0c4 100644 --- a/src/server/shared/Configuration/Config.h +++ b/src/server/shared/Configuration/Config.h @@ -20,17 +20,58 @@ #define CONFIG_H #include <string> +#include <map> +#include <ace/Singleton.h> +#include <ace/Configuration_Import_Export.h> +#include <ace/Thread_Mutex.h> +#include <AutoPtr.h> -namespace ConfigMgr +typedef Trinity::AutoPtr<ACE_Configuration_Heap, ACE_Null_Mutex> Config; + +class ConfigMgr { - bool Load(const char *file = NULL); + friend class ACE_Singleton<ConfigMgr, ACE_Null_Mutex>; + friend class ConfigLoader; + + ConfigMgr() { } + ~ConfigMgr() { } + +public: + /// Method used only for loading main configuration files (authserver.conf and worldserver.conf) + bool LoadInitial(char const* file); + + /** + * This method loads additional configuration files + * It is recommended to use this method in WorldScript::OnConfigLoad hooks + * + * @return true if loading was successful + */ + bool LoadMore(char const* file); + + bool Reload(); std::string GetStringDefault(const char* name, const std::string& def); bool GetBoolDefault(const char* name, bool def); int GetIntDefault(const char* name, int def); float GetFloatDefault(const char* name, float def); - const std::string & GetFilename(); -} + std::string const& GetFilename(); + +private: + bool GetValueHelper(const char* name, ACE_TString &result); + bool LoadData(char const* file); + + typedef ACE_Thread_Mutex LockType; + typedef ACE_Guard<LockType> GuardType; + + std::string _filename; + Config _config; + LockType _configLock; + + ConfigMgr(ConfigMgr const&); + ConfigMgr& operator=(ConfigMgr const&); +}; + +#define sConfigMgr ACE_Singleton<ConfigMgr, ACE_Null_Mutex>::instance() #endif |