aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Configuration/Config.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Configuration/Config.h')
-rw-r--r--src/server/shared/Configuration/Config.h49
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