summaryrefslogtreecommitdiffstats
path: root/src/Core
diff options
context:
space:
mode:
authorMatthias Schiffer <matthias@gamezock.de>2008-07-08 04:54:10 +0200
committerMatthias Schiffer <matthias@gamezock.de>2008-07-08 04:54:10 +0200
commite000cdf9d31433c4e90a8b59415de5ac8377005d (patch)
tree7cf035fec531837c2ca6fc27c2accdee8e346fe7 /src/Core
parent30f0cb9154306938250bd77ce2f0a9471065732a (diff)
downloadmad-e000cdf9d31433c4e90a8b59415de5ac8377005d.tar
mad-e000cdf9d31433c4e90a8b59415de5ac8377005d.zip
Verschachtelte Konfigurationen (D?mon-Liste)
Diffstat (limited to 'src/Core')
-rw-r--r--src/Core/ConfigManager.cpp50
-rw-r--r--src/Core/ConfigManager.h7
-rw-r--r--src/Core/DaemonInfo.h45
3 files changed, 84 insertions, 18 deletions
diff --git a/src/Core/ConfigManager.cpp b/src/Core/ConfigManager.cpp
index b358671..e1e5021 100644
--- a/src/Core/ConfigManager.cpp
+++ b/src/Core/ConfigManager.cpp
@@ -25,28 +25,48 @@
namespace Mad {
namespace Core {
-bool ConfigManager::parseLine(const std::string &key, const std::string &value) {
- if(Common::Util::tolower(key) == "configmethod") {
- if(Common::Util::tolower(value) == "mysql")
- methods |= (unsigned short)MYSQL;
- else
- return false;
- }
- else if(Common::Util::tolower(key) == "listen") {
- try {
- listeners.push_back(Net::IPAddress(value));
+bool ConfigManager::parseLine(const std::vector<std::string> &section, const std::string &key, const std::string &value) {
+ if(section.empty()) {
+ if(Common::Util::tolower(key) == "configmethod") {
+ if(Common::Util::tolower(value) == "mysql")
+ methods |= (unsigned short)MYSQL;
+ else
+ return false;
+ }
+ else if(Common::Util::tolower(key) == "daemon") {
+ daemons.push_back(DaemonInfo(value));
}
- catch(Net::InvalidAddressException &e) {
+ else if(Common::Util::tolower(key) == "listen") {
+ try {
+ listeners.push_back(Net::IPAddress(value));
+ }
+ catch(Net::InvalidAddressException &e) {
+ // TODO Logging
+ }
+ }
+ else {
// TODO Logging
+
+ return false;
}
+
+ return true;
}
- else {
- // TODO Logging
+ else if(section.size() == 1 && Common::Util::tolower(section[0]) == "daemon") {
+ if(Common::Util::tolower(key) == "ip")
+ daemons.back().setIP(value);
+ else {
+ // TODO Logging
+
+ return false;
+ }
- return false;
+ return true;
}
- return true;
+ // TODO Logging
+
+ return false;
}
ConfigManager::ConfigManager() {
diff --git a/src/Core/ConfigManager.h b/src/Core/ConfigManager.h
index 00c5933..6a5cf2c 100644
--- a/src/Core/ConfigManager.h
+++ b/src/Core/ConfigManager.h
@@ -20,6 +20,7 @@
#ifndef MAD_CORE_CONFIGMANAGER_H_
#define MAD_CORE_CONFIGMANAGER_H_
+#include "DaemonInfo.h"
#include <Common/ConfigManager.h>
#include <Net/IPAddress.h>
#include <vector>
@@ -36,17 +37,17 @@ class ConfigManager : public Common::ConfigManager {
unsigned short methods;
std::vector<Net::IPAddress> listeners;
+ std::vector<DaemonInfo> daemons;
protected:
- virtual bool parseLine(const std::string &key, const std::string &value);
+ virtual bool parseLine(const std::vector<std::string> &section, const std::string &key, const std::string &value);
public:
ConfigManager();
virtual ~ConfigManager();
const std::vector<Net::IPAddress>& getListenerAddresses() const {return listeners;}
-
- //virtual const std::string& getValue(const std::string &value) const;
+ const std::vector<DaemonInfo>& getDaemonList() const {return daemons;}
};
}
diff --git a/src/Core/DaemonInfo.h b/src/Core/DaemonInfo.h
new file mode 100644
index 0000000..b1dd2ff
--- /dev/null
+++ b/src/Core/DaemonInfo.h
@@ -0,0 +1,45 @@
+/*
+ * DaemonInfo.h
+ *
+ * Copyright (C) 2008 neoraider
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ * See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef MAD_CORE_DAEMONINFO_H_
+#define MAD_CORE_DAEMONINFO_H_
+
+#include <string>
+
+namespace Mad {
+namespace Core {
+
+class DaemonInfo {
+ private:
+ std::string name;
+ std::string ip;
+
+ public:
+ DaemonInfo(const std::string& name0) : name(name0) {}
+
+ const std::string& getName() const {return name;}
+
+ void setIP(const std::string& ip0) {ip = ip0;}
+ const std::string& getIP() const {return ip;}
+};
+
+}
+}
+
+#endif /* MAD_CORE_DAEMONINFO_H_ */