diff options
Diffstat (limited to 'src/shared/Database/SqlOperations.h')
-rw-r--r-- | src/shared/Database/SqlOperations.h | 29 |
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 |