From d8550011bf34f446a7d77a229ba02cf6d34a3ce2 Mon Sep 17 00:00:00 2001 From: lotodore Date: Wed, 22 Aug 2007 20:01:08 +0000 Subject: [PATCH] ConfigFile thread safe. --- src/config/configfile.cpp | 34 ++++++++++++++++++++++++---------- src/config/configfile.h | 11 ++++++----- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/config/configfile.cpp b/src/config/configfile.cpp index eb61617a..c13ffe34 100644 --- a/src/config/configfile.cpp +++ b/src/config/configfile.cpp @@ -232,6 +232,8 @@ ConfigFile::~ConfigFile() void ConfigFile::fillBuffer() { + boost::mutex::scoped_lock lock(m_configMutex); + size_t i; string tempString(""); @@ -257,7 +259,9 @@ void ConfigFile::fillBuffer() { } } -void ConfigFile::writeBuffer() { +void ConfigFile::writeBuffer() const { + + boost::mutex::scoped_lock lock(m_configMutex); //write buffer to disc if enabled if(!noWriteAccess) { @@ -285,7 +289,9 @@ void ConfigFile::writeBuffer() { } void ConfigFile::updateConfig(ConfigState myConfigState) { - + + boost::mutex::scoped_lock lock(m_configMutex); + size_t i; if(myConfigState == NONEXISTING) { @@ -369,10 +375,12 @@ void ConfigFile::updateConfig(ConfigState myConfigState) { } } -string ConfigFile::readConfigString(string varName) +string ConfigFile::readConfigString(string varName) const { + boost::mutex::scoped_lock lock(m_configMutex); + size_t i; - string tempString(""); + string tempString(""); // TiXmlDocument doc(configFileName); // if(!doc.LoadFile()) { cout << "Could Not Load Config-File!!! " << configFileName << "\n"; } @@ -404,11 +412,13 @@ string ConfigFile::readConfigString(string varName) return tempString; } -int ConfigFile::readConfigInt(string varName) +int ConfigFile::readConfigInt(string varName) const { + boost::mutex::scoped_lock lock(m_configMutex); + size_t i; - string tempString(""); - int tempInt=0; + string tempString(""); + int tempInt=0; // cout << varName << " : " << tempInt << "\n"; // TiXmlDocument doc(configFileName); @@ -436,7 +446,7 @@ int ConfigFile::readConfigInt(string varName) for (i=0; i #include -#include +#include enum ConfigState { NONEXISTING, OLD }; enum ConfigType { CONFIG_TYPE_INT, CONFIG_TYPE_STRING }; @@ -38,19 +38,20 @@ public: ~ConfigFile(); void fillBuffer(); - void writeBuffer(); + void writeBuffer() const; void updateConfig(ConfigState); - std::string readConfigString(std::string varName); + std::string readConfigString(std::string varName) const; void writeConfigString(std::string varName, std::string varCont); - int readConfigInt(std::string varName); + int readConfigInt(std::string varName) const; void writeConfigInt(std::string varName, int varCont); private: - + + mutable boost::mutex m_configMutex; struct ConfigInfo {