Removed ACE dependencies from LogWorker

This commit is contained in:
leak
2014-06-24 19:13:29 +02:00
parent a20ac4c25b
commit 0a592dd9db
4 changed files with 12 additions and 29 deletions

View File

@@ -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);

View File

@@ -23,7 +23,7 @@
#include "Appender.h"
#include "Logger.h"
#include "LogWorker.h"
#include <stdarg.h>
#include <unordered_map>
#include <string>

View File

@@ -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();

View File

@@ -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