aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/SQLOperation.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Database/SQLOperation.h')
-rw-r--r--src/server/shared/Database/SQLOperation.h33
1 files changed, 9 insertions, 24 deletions
diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h
index 4833e28164e..0bf08d3e3eb 100644
--- a/src/server/shared/Database/SQLOperation.h
+++ b/src/server/shared/Database/SQLOperation.h
@@ -43,17 +43,21 @@ class SQLOperation : public ACE_Method_Request
MySQLConnection* m_conn;
};
+typedef ACE_Future<QueryResult_AutoPtr> QueryResultFuture;
/*! Raw, ad-hoc query. */
class BasicStatementTask : public SQLOperation
{
public:
BasicStatementTask(const char* sql);
+ BasicStatementTask(const char* sql, QueryResultFuture result);
~BasicStatementTask();
bool Execute();
private:
const char* m_sql; //- Raw query to be executed
+ bool m_has_result;
+ QueryResultFuture m_result;
};
/*! Transactions */
@@ -70,14 +74,6 @@ class TransactionTask : public SQLOperation
std::queue<char*> m_queries;
};
-/*! ResultQueue */
-class SQLResultQueue : public ACE_Based::LockedQueue<Trinity::IQueryCallback* , ACE_Thread_Mutex>
-{
- public:
- SQLResultQueue() {}
- void Update();
-};
-
class SQLQueryHolder
{
friend class SQLQueryHolderTask;
@@ -94,28 +90,17 @@ class SQLQueryHolder
void SetResult(size_t index, QueryResult_AutoPtr result);
};
+typedef ACE_Future<SQLQueryHolder*> QueryResultHolderFuture;
+
class SQLQueryHolderTask : public SQLOperation
{
private:
SQLQueryHolder * m_holder;
- Trinity::IQueryCallback * m_callback;
- SQLResultQueue * m_queue;
- public:
- SQLQueryHolderTask(SQLQueryHolder *holder, Trinity::IQueryCallback * callback, SQLResultQueue * queue)
- : m_holder(holder), m_callback(callback), m_queue(queue) {}
- bool Execute();
-};
+ QueryResultHolderFuture m_result;
-class SQLQueryTask : public SQLOperation
-{
- private:
- const char *m_sql;
- Trinity::IQueryCallback * m_callback;
- SQLResultQueue * m_queue;
public:
- SQLQueryTask(const char *sql, Trinity::IQueryCallback * callback, SQLResultQueue * queue)
- : m_sql(strdup(sql)), m_callback(callback), m_queue(queue) {}
- ~SQLQueryTask() { void* tofree = const_cast<char*>(m_sql); free(tofree); }
+ SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderFuture res)
+ : m_holder(holder), m_result(res){};
bool Execute();
};