From a3e566c4d3631076e29f3651554603184b6351a7 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sun, 17 May 2009 01:34:10 +0200 Subject: Gnulib durch boost ersetzt --- src/Common/LogManager.cpp | 52 +++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 27 deletions(-) (limited to 'src/Common/LogManager.cpp') diff --git a/src/Common/LogManager.cpp b/src/Common/LogManager.cpp index 5741d38..b17d916 100644 --- a/src/Common/LogManager.cpp +++ b/src/Common/LogManager.cpp @@ -30,22 +30,22 @@ LogManager LogManager::logManager; void LogManager::ConsoleLogger::logMessage(MessageCategory category _UNUSED_PARAMETER_, MessageLevel level, time_t timestamp _UNUSED_PARAMETER_, const std::string &message) { if(level != CRITICAL) {// Critical messages are printed to cerr directly, so don't print them a second time - gl_lock_lock(cerrLock); + cerrLock.lock(); std::cerr << message << std::endl; - gl_lock_unlock(cerrLock); + cerrLock.unlock(); } } void LogManager::ConsoleLogger::logMessage(MessageCategory category _UNUSED_PARAMETER_, MessageLevel, time_t timestamp _UNUSED_PARAMETER_, const std::string &message, const std::string &messageSource) { - gl_lock_lock(cerrLock); + cerrLock.lock(); std::cerr << message << " from " << messageSource << std::endl; - gl_lock_unlock(cerrLock); + cerrLock.unlock(); } void LogManager::ConsoleLogger::logMessageDirect(MessageCategory category _UNUSED_PARAMETER_, MessageLevel level _UNUSED_PARAMETER_, time_t timestamp _UNUSED_PARAMETER_, const std::string &message) { - gl_lock_lock(cerrLock); + cerrLock.lock(); std::cerr << message << std::endl; - gl_lock_unlock(cerrLock); + cerrLock.unlock(); } @@ -73,72 +73,70 @@ void LogManager::configFinished() { if(loggers.empty()) registerLogger(static_cast(&consoleLogger)); - gl_lock_lock(lock); + queueLock.lock(); configured = true; - gl_cond_signal(queueCond); - gl_lock_unlock(lock); + queueLock.unlock(); + queueCond.notify_one(); } void LogManager::log(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message) { if(level == LoggerBase::CRITICAL) consoleLogger.logMessageDirect(category, level, timestamp, message); - gl_lock_lock(lock); + queueLock.lock(); Message m = {category, level, timestamp, message}; messageQueue.push(m); - gl_cond_signal(queueCond); - gl_lock_unlock(lock); + queueLock.unlock(); + queueCond.notify_one(); } void LogManager::log(MessageCategory category, MessageLevel level, time_t timestamp, const std::string &message, const std::string &source) { - gl_lock_lock(lock); + queueLock.lock(); RemoteMessage m = {category, level, timestamp, message, source}; remoteMessageQueue.push(m); - gl_cond_signal(queueCond); - gl_lock_unlock(lock); + queueLock.unlock(); + queueCond.notify_one(); } void LogManager::loggerThread() { - gl_lock_lock(lock); + boost::unique_lock lock(queueLock); running = true; while(running) { while(running && ((messageQueue.empty() && messageQueue.empty()) || !configured)) - gl_cond_wait(queueCond, lock); + queueCond.wait(lock); while(!messageQueue.empty()) { Message message = messageQueue.front(); messageQueue.pop(); - gl_lock_unlock(lock); + lock.unlock(); - gl_lock_lock(loggerLock); + loggerLock.lock(); for(std::set::iterator logger = loggers.begin(); logger != loggers.end(); ++logger) { if((*logger)->getLevel() >= message.level && (*logger)->isCategorySet(message.category)) (*logger)->logMessage(message.category, message.level, message.timestamp, message.message); } - gl_lock_unlock(loggerLock); + loggerLock.unlock(); - gl_lock_lock(lock); + lock.lock(); } while(!remoteMessageQueue.empty()) { RemoteMessage message = remoteMessageQueue.front(); remoteMessageQueue.pop(); - gl_lock_unlock(lock); + lock.unlock(); - gl_lock_lock(remoteLoggerLock); + remoteLoggerLock.lock(); for(std::set::iterator logger = remoteLoggers.begin(); logger != remoteLoggers.end(); ++logger) { if((*logger)->getLevel() >= message.level && (*logger)->isCategorySet(message.category)) (*logger)->logMessage(message.category, message.level, message.timestamp, message.message, message.source); } - gl_lock_unlock(remoteLoggerLock); + remoteLoggerLock.unlock(); - gl_lock_lock(lock); + lock.lock(); } } - - gl_lock_unlock(lock); } } -- cgit v1.2.3