Revert "Removed ACE dependencies from LogWorker" This actually needs way more work

This reverts commit 0a592dd9db.
This commit is contained in:
leak
2014-06-24 21:09:43 +02:00
parent f03d49705d
commit d8d0b4730e
4 changed files with 30 additions and 13 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,22 +17,29 @@
#include "LogWorker.h"
LogWorker::~LogWorker()
LogWorker::LogWorker()
: m_queue(HIGH_WATERMARK, LOW_WATERMARK)
{
m_queue.cancel();
ACE_Task_Base::activate(THR_NEW_LWP | THR_JOINABLE | THR_INHERIT_SCHED, 1);
}
void LogWorker::enqueue(LogOperation& op)
LogWorker::~LogWorker()
{
return m_queue.add(op);
m_queue.deactivate();
wait();
}
int LogWorker::enqueue(LogOperation* op)
{
return m_queue.enqueue(op);
}
int LogWorker::svc()
{
while (1)
{
LogOperation* request = nullptr;
if (!m_queue.next(*request))
LogOperation* request;
if (m_queue.dequeue(request) == -1)
break;
request->call();

View File

@@ -19,19 +19,29 @@
#define LOGWORKER_H
#include "LogOperation.h"
#include "LockedQueue.h"
class LogWorker
#include <ace/Task.h>
#include <ace/Activation_Queue.h>
class LogWorker: protected ACE_Task_Base
{
public:
LogWorker() {};
LogWorker();
~LogWorker();
void enqueue(LogOperation& op);
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);
private:
virtual int svc();
LockedQueue<LogOperation> m_queue;
LogMessageQueueType m_queue;
};
#endif