mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 15:40:45 +01:00
Revert "Removed ACE dependencies from LogWorker" This actually needs way more work
This reverts commit 0a592dd9db.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
#include "Appender.h"
|
||||
#include "Logger.h"
|
||||
#include "LogWorker.h"
|
||||
#include <stdarg.h>
|
||||
|
||||
#include <unordered_map>
|
||||
#include <string>
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user