From ab7e83a72c7da17541e7d87b087ce8693d8b301d Mon Sep 17 00:00:00 2001 From: QAston Date: Sat, 27 Jun 2009 17:15:38 +0200 Subject: *Merge 1600 from tc1. --HG-- branch : trunk --- src/shared/Database/SqlDelayThread.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'src/shared/Database/SqlDelayThread.cpp') diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp index 9a92fd5dd63..f36cf4940ce 100644 --- a/src/shared/Database/SqlDelayThread.cpp +++ b/src/shared/Database/SqlDelayThread.cpp @@ -22,8 +22,10 @@ #include "Database/SqlOperations.h" #include "DatabaseEnv.h" -SqlDelayThread::SqlDelayThread(Database* db) : m_dbEngine(db), m_running(true) +SqlDelayThread::SqlDelayThread(Database* db, const char* infoString) :m_running(true) { + m_dbEngine = new DatabaseType; + ((DatabaseType*)m_dbEngine)->Initialize(infoString, false); } void SqlDelayThread::run() @@ -35,15 +37,16 @@ void SqlDelayThread::run() while (m_running) { - // if the running state gets turned off while sleeping - // empty the queue before exiting - ACE_Based::Thread::Sleep(10); - while (!m_sqlQueue.empty()) + try { s = m_sqlQueue.next(); - s->Execute(m_dbEngine); - delete s; } + catch(...) + {continue;} + if(!s) + continue; + s->Execute(m_dbEngine); + delete s; } #ifndef DO_POSTGRESQL @@ -54,5 +57,6 @@ void SqlDelayThread::run() void SqlDelayThread::Stop() { m_running = false; + m_sqlQueue.cancel(); } -- cgit v1.2.3