From e000cdf9d31433c4e90a8b59415de5ac8377005d Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Tue, 8 Jul 2008 04:54:10 +0200 Subject: Verschachtelte Konfigurationen (D?mon-Liste) --- src/Core/ConfigManager.cpp | 50 ++++++++++++++++++++++++++++++++-------------- src/Core/ConfigManager.h | 7 ++++--- src/Core/DaemonInfo.h | 45 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+), 18 deletions(-) create mode 100644 src/Core/DaemonInfo.h (limited to 'src/Core') 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 §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 #include #include @@ -36,17 +37,17 @@ class ConfigManager : public Common::ConfigManager { unsigned short methods; std::vector listeners; + std::vector daemons; protected: - virtual bool parseLine(const std::string &key, const std::string &value); + virtual bool parseLine(const std::vector §ion, const std::string &key, const std::string &value); public: ConfigManager(); virtual ~ConfigManager(); const std::vector& getListenerAddresses() const {return listeners;} - - //virtual const std::string& getValue(const std::string &value) const; + const std::vector& 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 . + */ + +#ifndef MAD_CORE_DAEMONINFO_H_ +#define MAD_CORE_DAEMONINFO_H_ + +#include + +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_ */ -- cgit v1.2.3