1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-30 16:17:46 +00:00
sapphire/src/common/Database/DbWorker.cpp

39 lines
814 B
C++
Raw Normal View History

#include "DbWorker.h"
#include "Operation.h"
2018-03-06 22:22:19 +01:00
#include "Util/LockedWaitQueue.h"
Sapphire::Db::DbWorker::DbWorker( Sapphire::LockedWaitQueue< std::shared_ptr< Operation > >* newQueue,
DbConnection* pConn )
{
m_pConn = pConn;
m_queue = newQueue;
m_cancelationToken = false;
m_workerThread = std::thread( &DbWorker::workerThread, this );
}
Sapphire::Db::DbWorker::~DbWorker()
{
m_cancelationToken = true;
m_queue->cancel();
m_workerThread.join();
}
void Sapphire::Db::DbWorker::workerThread()
{
if( !m_queue )
return;
while( true )
{
2018-10-24 12:53:26 +02:00
std::shared_ptr< Operation > operation = nullptr;
m_queue->waitAndPop( operation );
if( m_cancelationToken || !operation )
return;
operation->setConnection( m_pConn );
operation->call();
}
}