aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlDelayThread.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Database/SqlDelayThread.cpp')
-rw-r--r--src/shared/Database/SqlDelayThread.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/shared/Database/SqlDelayThread.cpp b/src/shared/Database/SqlDelayThread.cpp
index 5b1c1a84b06..6efc9717345 100644
--- a/src/shared/Database/SqlDelayThread.cpp
+++ b/src/shared/Database/SqlDelayThread.cpp
@@ -32,15 +32,16 @@ void SqlDelayThread::run()
mysql_thread_init();
#endif
+ // Lets wait for next async task no more than 2 secs
+ ACE_Time_Value _time(2);
while (m_running)
{
// if the running state gets turned off while sleeping
// empty the queue before exiting
- ACE_Based::Thread::Sleep(10);
- SqlOperation* s;
- while (m_sqlQueue.next(s))
+ SqlAsyncTask * s = (SqlAsyncTask*)m_sqlQueue.dequeue(/*&_time*/);
+ if(s)
{
- s->Execute(m_dbEngine);
+ s->call();
delete s;
}
}
@@ -53,5 +54,11 @@ void SqlDelayThread::run()
void SqlDelayThread::Stop()
{
m_running = false;
+ m_sqlQueue.queue()->deactivate();
}
+bool SqlDelayThread::Delay(SqlOperation* sql)
+{
+ int res = m_sqlQueue.enqueue(new SqlAsyncTask(m_dbEngine, sql));
+ return (res != -1);
+}