aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Database/SqlOperations.h')
-rw-r--r--src/shared/Database/SqlOperations.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h
index 3a14abcc952..e815e514141 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/Method_Request.h"
#include "LockedQueue.h"
#include <queue>
#include "Utilities/Callback.h"
@@ -122,5 +123,33 @@ class SqlQueryHolderEx : public SqlOperation
: m_holder(holder), m_callback(callback), m_queue(queue) {}
void Execute(Database *db);
};
+
+class SqlAsyncTask : public ACE_Method_Request
+{
+public:
+ SqlAsyncTask(Database * db, SqlOperation * op) : m_db(db), m_op(op) {}
+ ~SqlAsyncTask() { if(!m_op) return; delete m_op; }
+
+ int call()
+ {
+ if(m_db == NULL || m_op == NULL)
+ return -1;
+
+ try
+ {
+ m_op->Execute(m_db);
+ }
+ catch(...)
+ {
+ return -1;
+ }
+
+ return 0;
+ }
+
+private:
+ Database * m_db;
+ SqlOperation * m_op;
+};
#endif //__SQLOPERATIONS_H