AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
DatabaseWorker Class Reference

#include "DatabaseWorker.h"

Public Member Functions

 DatabaseWorker (ProducerConsumerQueue< SQLOperation * > *newQueue, MySQLConnection *connection)
 
 ~DatabaseWorker ()
 

Private Member Functions

void WorkerThread ()
 
 DatabaseWorker (DatabaseWorker const &right)=delete
 
DatabaseWorkeroperator= (DatabaseWorker const &right)=delete
 

Private Attributes

ProducerConsumerQueue< SQLOperation * > * _queue
 
MySQLConnection_connection
 
std::thread _workerThread
 

Detailed Description

Constructor & Destructor Documentation

◆ DatabaseWorker() [1/2]

DatabaseWorker::DatabaseWorker ( ProducerConsumerQueue< SQLOperation * > *  newQueue,
MySQLConnection connection 
)
23{
24 _connection = connection;
25 _queue = newQueue;
26 _workerThread = std::thread(&DatabaseWorker::WorkerThread, this);
27}
MySQLConnection * _connection
Definition DatabaseWorker.h:39
ProducerConsumerQueue< SQLOperation * > * _queue
Definition DatabaseWorker.h:38
void WorkerThread()
Definition DatabaseWorker.cpp:34
std::thread _workerThread
Definition DatabaseWorker.h:42

References _connection, _queue, _workerThread, and WorkerThread().

◆ ~DatabaseWorker()

DatabaseWorker::~DatabaseWorker ( )
30{
31 _workerThread.join();
32}

References _workerThread.

◆ DatabaseWorker() [2/2]

DatabaseWorker::DatabaseWorker ( DatabaseWorker const &  right)
privatedelete

Member Function Documentation

◆ operator=()

DatabaseWorker & DatabaseWorker::operator= ( DatabaseWorker const &  right)
privatedelete

◆ WorkerThread()

void DatabaseWorker::WorkerThread ( )
private
35{
36 if (!_queue)
37 return;
38
39 for (;;)
40 {
41 SQLOperation* operation = nullptr;
42
43 _queue->WaitAndPop(operation);
44
45 if (!operation)
46 return;
47
48 operation->SetConnection(_connection);
49 operation->call();
50
51 delete operation;
52 }
53}
void WaitAndPop(T &value)
Definition PCQueue.h:71
Definition SQLOperation.h:42
virtual void SetConnection(MySQLConnection *con)
Definition SQLOperation.h:54
virtual int call()
Definition SQLOperation.h:47

References _connection, _queue, SQLOperation::call(), SQLOperation::SetConnection(), and ProducerConsumerQueue< T >::WaitAndPop().

Referenced by DatabaseWorker().

Member Data Documentation

◆ _connection

MySQLConnection* DatabaseWorker::_connection
private

Referenced by DatabaseWorker(), and WorkerThread().

◆ _queue

ProducerConsumerQueue<SQLOperation*>* DatabaseWorker::_queue
private

Referenced by DatabaseWorker(), and WorkerThread().

◆ _workerThread

std::thread DatabaseWorker::_workerThread
private

Referenced by DatabaseWorker(), and ~DatabaseWorker().


The documentation for this class was generated from the following files: