diff options
Diffstat (limited to 'src/server/shared/Database/SQLOperation.cpp')
-rw-r--r-- | src/server/shared/Database/SQLOperation.cpp | 48 |
1 files changed, 20 insertions, 28 deletions
diff --git a/src/server/shared/Database/SQLOperation.cpp b/src/server/shared/Database/SQLOperation.cpp index c9e3ba3e937..35a61dc9518 100644 --- a/src/server/shared/Database/SQLOperation.cpp +++ b/src/server/shared/Database/SQLOperation.cpp @@ -21,7 +21,15 @@ #include "Log.h" /*! Basic, ad-hoc queries. */ -BasicStatementTask::BasicStatementTask(const char* sql) +BasicStatementTask::BasicStatementTask(const char* sql) : +m_has_result(false) +{ + m_sql = strdup(sql); +} + +BasicStatementTask::BasicStatementTask(const char* sql, QueryResultFuture result) : +m_result(result), +m_has_result(true) { m_sql = strdup(sql); } @@ -33,6 +41,15 @@ BasicStatementTask::~BasicStatementTask() bool BasicStatementTask::Execute() { + if (m_has_result) + { + m_result.set( + m_conn->Query(m_sql) + ); + + return true; + } + return m_conn->Execute(m_sql); } @@ -83,18 +100,6 @@ bool TransactionTask::Execute() return true; } -/*! Callback statements/holders */ -void SQLResultQueue::Update() -{ - /// execute the callbacks waiting in the synchronization queue - Trinity::IQueryCallback* callback; - while (next(callback)) - { - callback->Execute(); - delete callback; - } -} - bool SQLQueryHolder::SetQuery(size_t index, const char *sql) { if (m_queries.size() <= index) @@ -181,7 +186,7 @@ void SQLQueryHolder::SetSize(size_t size) bool SQLQueryHolderTask::Execute() { - if (!m_holder || !m_callback || !m_queue) + if (!m_holder) return false; /// we can do this, we are friends @@ -195,19 +200,6 @@ bool SQLQueryHolderTask::Execute() m_holder->SetResult(i, m_conn->Query(sql)); } - /// sync with the caller thread - m_queue->add(m_callback); - return true; -} - -bool SQLQueryTask::Execute() -{ - if (!m_callback || !m_queue) - return false; - - /// execute the query and store the result in the callback - m_callback->SetResult(m_conn->Query(m_sql)); - /// add the callback to the sql result queue of the thread it originated from - m_queue->add(m_callback); + m_result.set(m_holder); return true; } |