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.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h
index 164c7258ec3..e91d83b6611 100644
--- a/src/shared/Database/SqlOperations.h
+++ b/src/shared/Database/SqlOperations.h
@@ -17,16 +17,22 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
+
#ifndef __SQLOPERATIONS_H
#define __SQLOPERATIONS_H
+
#include "Common.h"
+
#include "ace/Thread_Mutex.h"
#include "LockedQueue.h"
#include <queue>
#include "Utilities/Callback.h"
+
/// ---- BASE ---
+
class Database;
class SqlDelayThread;
+
class SqlOperation
{
public:
@@ -34,7 +40,9 @@ class SqlOperation
virtual void Execute(Database *db) = 0;
virtual ~SqlOperation() {}
};
+
/// ---- ASYNC STATEMENTS / TRANSACTIONS ----
+
class SqlStatement : public SqlOperation
{
private:
@@ -44,6 +52,7 @@ class SqlStatement : public SqlOperation
~SqlStatement() { void* tofree = const_cast<char*>(m_sql); free(tofree); }
void Execute(Database *db);
};
+
class SqlTransaction : public SqlOperation
{
private:
@@ -53,18 +62,22 @@ class SqlTransaction : public SqlOperation
void DelayExecute(const char *sql) { m_queue.push(strdup(sql)); }
void Execute(Database *db);
};
+
/// ---- ASYNC QUERIES ----
+
class SqlQuery; /// contains a single async query
class QueryResult; /// the result of one
class SqlResultQueue; /// queue for thread sync
class SqlQueryHolder; /// groups several async quries
class SqlQueryHolderEx; /// points to a holder, added to the delay thread
+
class SqlResultQueue : public ACE_Based::LockedQueue<MaNGOS::IQueryCallback* , ACE_Thread_Mutex>
{
public:
SqlResultQueue() {}
void Update();
};
+
class SqlQuery : public SqlOperation
{
private:
@@ -77,6 +90,7 @@ class SqlQuery : public SqlOperation
~SqlQuery() { void* tofree = const_cast<char*>(m_sql); free(tofree); }
void Execute(Database *db);
};
+
class SqlQueryHolder
{
friend class SqlQueryHolderEx;
@@ -93,6 +107,7 @@ class SqlQueryHolder
void SetResult(size_t index, QueryResult *result);
bool Execute(Trinity::IQueryCallback * callback, SqlDelayThread *thread, SqlResultQueue *queue);
};
+
class SqlQueryHolderEx : public SqlOperation
{
private: