diff options
Diffstat (limited to 'src/shared/Database/SqlDelayThread.cpp')
-rw-r--r-- | src/shared/Database/SqlDelayThread.cpp | 15 |
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); +} |