diff options
author | leak <leak@bitmx.net> | 2014-06-24 19:13:29 +0200 |
---|---|---|
committer | leak <leak@bitmx.net> | 2014-06-24 19:13:29 +0200 |
commit | 0a592dd9dbd34818deee472dd42d700b4746a27e (patch) | |
tree | 92b9fe24400c46e6ea2b62e3d9c8e5219cefc290 | |
parent | a20ac4c25bc25ddf8de1d9c5b810d332f5287d33 (diff) |
Removed ACE dependencies from LogWorker
-rw-r--r-- | src/server/shared/Logging/Log.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Logging/Log.h | 2 | ||||
-rw-r--r-- | src/server/shared/Logging/LogWorker.cpp | 17 | ||||
-rw-r--r-- | src/server/shared/Logging/LogWorker.h | 20 |
4 files changed, 12 insertions, 29 deletions
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index fd7aa84c0e9..68745046433 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -273,7 +273,7 @@ void Log::write(LogMessage* msg) const msg->text.append("\n"); if (worker) - worker->enqueue(new LogOperation(logger, msg)); + worker->enqueue(*(new LogOperation(logger, msg))); else { logger->write(*msg); diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index c3a47d14e9e..29ebdb3faa1 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -23,7 +23,7 @@ #include "Appender.h" #include "Logger.h" #include "LogWorker.h" - +#include <stdarg.h> #include <unordered_map> #include <string> diff --git a/src/server/shared/Logging/LogWorker.cpp b/src/server/shared/Logging/LogWorker.cpp index b0c82b614f4..cea4262032b 100644 --- a/src/server/shared/Logging/LogWorker.cpp +++ b/src/server/shared/Logging/LogWorker.cpp @@ -17,29 +17,22 @@ #include "LogWorker.h" -LogWorker::LogWorker() - : m_queue(HIGH_WATERMARK, LOW_WATERMARK) -{ - ACE_Task_Base::activate(THR_NEW_LWP | THR_JOINABLE | THR_INHERIT_SCHED, 1); -} - LogWorker::~LogWorker() { - m_queue.deactivate(); - wait(); + m_queue.cancel(); } -int LogWorker::enqueue(LogOperation* op) +void LogWorker::enqueue(LogOperation& op) { - return m_queue.enqueue(op); + return m_queue.add(op); } int LogWorker::svc() { while (1) { - LogOperation* request; - if (m_queue.dequeue(request) == -1) + LogOperation* request = nullptr; + if (!m_queue.next(*request)) break; request->call(); diff --git a/src/server/shared/Logging/LogWorker.h b/src/server/shared/Logging/LogWorker.h index 25a57842e08..84d8ba632a8 100644 --- a/src/server/shared/Logging/LogWorker.h +++ b/src/server/shared/Logging/LogWorker.h @@ -19,29 +19,19 @@ #define LOGWORKER_H #include "LogOperation.h" +#include "LockedQueue.h" -#include <ace/Task.h> -#include <ace/Activation_Queue.h> - -class LogWorker: protected ACE_Task_Base +class LogWorker { public: - LogWorker(); + LogWorker() {}; ~LogWorker(); - typedef ACE_Message_Queue_Ex<LogOperation, ACE_MT_SYNCH> LogMessageQueueType; - - enum - { - HIGH_WATERMARK = 8 * 1024 * 1024, - LOW_WATERMARK = 8 * 1024 * 1024 - }; - - int enqueue(LogOperation *op); + void enqueue(LogOperation& op); private: virtual int svc(); - LogMessageQueueType m_queue; + LockedQueue<LogOperation> m_queue; }; #endif |