aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/shared/Database/SqlOperations.cpp13
-rw-r--r--src/shared/Database/SqlOperations.h7
2 files changed, 9 insertions, 11 deletions
diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp
index 793fabecde7..d657c667913 100644
--- a/src/shared/Database/SqlOperations.cpp
+++ b/src/shared/Database/SqlOperations.cpp
@@ -33,22 +33,17 @@ void SqlStatement::Execute(Database *db)
void SqlTransaction::Execute(Database *db)
{
- if(m_queue.empty())
- return;
+ const char *sql;
db->DirectExecute("START TRANSACTION");
- while(!m_queue.empty())
+ while(m_queue.next(sql))
{
- char const *sql = m_queue.front();
- m_queue.pop();
-
if(!db->DirectExecute(sql))
{
free((void*)const_cast<char*>(sql));
db->DirectExecute("ROLLBACK");
- while(!m_queue.empty())
+ while(m_queue.next(sql))
{
- free((void*)const_cast<char*>(m_queue.front()));
- m_queue.pop();
+ free((void*)const_cast<char*>(sql));
}
return;
}
diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h
index 18641c743e1..661078f50c9 100644
--- a/src/shared/Database/SqlOperations.h
+++ b/src/shared/Database/SqlOperations.h
@@ -24,6 +24,7 @@
#include "Common.h"
#include "ace/Thread_Mutex.h"
+#include "ace/Recursive_Thread_Mutex.h"
#include "LockedQueue.h"
#include <queue>
#include "Utilities/Callback.h"
@@ -56,11 +57,13 @@ class SqlStatement : public SqlOperation
class SqlTransaction : public SqlOperation
{
+ typedef ACE_Based::LockedQueue<const char *, ACE_Recursive_Thread_Mutex> LockedQueue;
+
private:
- std::queue<const char *> m_queue;
+ LockedQueue m_queue;
public:
SqlTransaction() {}
- void DelayExecute(const char *sql) { m_queue.push(strdup(sql)); }
+ void DelayExecute(const char *sql) { m_queue.add(strdup(sql)); }
void Execute(Database *db);
};