diff options
author | Matthias Schiffer <matthias@gamezock.de> | 2008-07-08 04:54:10 +0200 |
---|---|---|
committer | Matthias Schiffer <matthias@gamezock.de> | 2008-07-08 04:54:10 +0200 |
commit | e000cdf9d31433c4e90a8b59415de5ac8377005d (patch) | |
tree | 7cf035fec531837c2ca6fc27c2accdee8e346fe7 /src/Core | |
parent | 30f0cb9154306938250bd77ce2f0a9471065732a (diff) | |
download | mad-e000cdf9d31433c4e90a8b59415de5ac8377005d.tar mad-e000cdf9d31433c4e90a8b59415de5ac8377005d.zip |
Verschachtelte Konfigurationen (D?mon-Liste)
Diffstat (limited to 'src/Core')
-rw-r--r-- | src/Core/ConfigManager.cpp | 50 | ||||
-rw-r--r-- | src/Core/ConfigManager.h | 7 | ||||
-rw-r--r-- | src/Core/DaemonInfo.h | 45 |
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> §ion, 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> §ion, 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_ */ |