aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlDelayThread.cpp
diff options
context:
space:
mode:
authorQAston <none@none>2009-06-27 17:15:38 +0200
committerQAston <none@none>2009-06-27 17:15:38 +0200
commitab7e83a72c7da17541e7d87b087ce8693d8b301d (patch)
treea4e3db30bf7ea881389f5971c4ce2f3d93e5fb4b /src/shared/Database/SqlDelayThread.cpp
parente7e79ff8a402fe6279f6839c973e9db6549301b2 (diff)
*Merge 1600 from tc1.
--HG-- branch : trunk
Diffstat (limited to 'src/shared/Database/SqlDelayThread.cpp')
-rw-r--r--src/shared/Database/SqlDelayThread.cpp18
1 files changed, 11 insertions, 7 deletions
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();
}