aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.h
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2010-02-07 08:22:31 +0300
committern0n4m3 <none@none>2010-02-07 08:22:31 +0300
commit8676e5056f639c42256b0051d81286ee67af1d77 (patch)
treebd6dc47313eddd9030f7b6fdc033a99dfbb36d6f /src/shared/Database/SqlOperations.h
parentbb7222c376785654ff3256e82fda28f4d8be7e98 (diff)
Implement async class for database operations for better performance, remove 10ms sleep, fixed some crash on sql execute.
--HG-- branch : trunk
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