diff options
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 |