[Rel21] Stage 1 of updates for Rel21 Build System

This commit is contained in:
Antz 2015-07-28 10:59:34 +01:00 committed by Antz
parent 13292befd6
commit fdefc0869a
1951 changed files with 40474 additions and 252610 deletions

View file

@ -22,13 +22,13 @@
* and lore are copyrighted by Blizzard Entertainment, Inc.
*/
#ifndef __SQLOPERATIONS_H
#define __SQLOPERATIONS_H
#ifndef MANGOS_H_SQLOPERATIONS
#define MANGOS_H_SQLOPERATIONS
#include "Common.h"
#include "Common/Common.h"
#include "ace/Thread_Mutex.h"
#include "LockedQueue.h"
#include <ace/Thread_Mutex.h>
#include "LockedQueue/LockedQueue.h"
#include <queue>
#include "Utilities/Callback.h"
@ -39,51 +39,131 @@ class SqlConnection;
class SqlDelayThread;
class SqlStmtParameters;
/**
* @brief
*
*/
class SqlOperation
{
public:
/**
* @brief
*
*/
virtual void OnRemove() { delete this; }
/**
* @brief
*
* @param conn
* @return bool
*/
virtual bool Execute(SqlConnection* conn) = 0;
/**
* @brief
*
*/
virtual ~SqlOperation() {}
};
/// ---- ASYNC STATEMENTS / TRANSACTIONS ----
/**
* @brief
*
*/
class SqlPlainRequest : public SqlOperation
{
private:
const char* m_sql;
const char* m_sql; /**< TODO */
public:
/**
* @brief
*
* @param sql
*/
SqlPlainRequest(const char* sql) : m_sql(mangos_strdup(sql)) {}
/**
* @brief
*
*/
~SqlPlainRequest() { char* tofree = const_cast<char*>(m_sql); delete[] tofree; }
/**
* @brief
*
* @param conn
* @return bool
*/
bool Execute(SqlConnection* conn) override;
};
/**
* @brief
*
*/
class SqlTransaction : public SqlOperation
{
private:
std::vector<SqlOperation* > m_queue;
std::vector<SqlOperation* > m_queue; /**< TODO */
public:
/**
* @brief
*
*/
SqlTransaction() {}
/**
* @brief
*
*/
~SqlTransaction();
/**
* @brief
*
* @param sql
*/
void DelayExecute(SqlOperation* sql) { m_queue.push_back(sql); }
/**
* @brief
*
* @param conn
* @return bool
*/
bool Execute(SqlConnection* conn) override;
};
/**
* @brief
*
*/
class SqlPreparedRequest : public SqlOperation
{
public:
/**
* @brief
*
* @param nIndex
* @param arg
*/
SqlPreparedRequest(int nIndex, SqlStmtParameters* arg);
/**
* @brief
*
*/
~SqlPreparedRequest();
/**
* @brief
*
* @param conn
* @return bool
*/
bool Execute(SqlConnection* conn) override;
private:
const int m_nIndex;
SqlStmtParameters* m_param;
const int m_nIndex; /**< TODO */
SqlStmtParameters* m_param; /**< TODO */
};
/// ---- ASYNC QUERIES ----
@ -94,52 +174,157 @@ class SqlResultQueue; /// queue for thread
class SqlQueryHolder; /// groups several async quries
class SqlQueryHolderEx; /// points to a holder, added to the delay thread
/**
* @brief
*
*/
class SqlResultQueue : public ACE_Based::LockedQueue<MaNGOS::IQueryCallback* , ACE_Thread_Mutex>
{
public:
/**
* @brief
*
*/
SqlResultQueue() {}
/**
* @brief
*
*/
void Update();
};
/**
* @brief
*
*/
class SqlQuery : public SqlOperation
{
private:
const char* m_sql;
MaNGOS::IQueryCallback* m_callback;
SqlResultQueue* m_queue;
const char* m_sql; /**< TODO */
MaNGOS::IQueryCallback* m_callback; /**< TODO */
SqlResultQueue* m_queue; /**< TODO */
public:
/**
* @brief
*
* @param sql
* @param callback
* @param queue
*/
SqlQuery(const char* sql, MaNGOS::IQueryCallback* callback, SqlResultQueue* queue)
: m_sql(mangos_strdup(sql)), m_callback(callback), m_queue(queue) {}
/**
* @brief
*
*/
~SqlQuery() { char* tofree = const_cast<char*>(m_sql); delete[] tofree; }
/**
* @brief
*
* @param conn
* @return bool
*/
bool Execute(SqlConnection* conn) override;
};
/**
* @brief
*
*/
class SqlQueryHolder
{
friend class SqlQueryHolderEx;
private:
/**
* @brief
*
*/
typedef std::pair<const char*, QueryResult*> SqlResultPair;
std::vector<SqlResultPair> m_queries;
std::vector<SqlResultPair> m_queries; /**< TODO */
public:
/**
* @brief
*
*/
SqlQueryHolder() {}
/**
* @brief
*
*/
~SqlQueryHolder();
/**
* @brief
*
* @param index
* @param sql
* @return bool
*/
bool SetQuery(size_t index, const char* sql);
/**
* @brief
*
* @param index
* @param format...
* @return bool
*/
bool SetPQuery(size_t index, const char* format, ...) ATTR_PRINTF(3, 4);
/**
* @brief
*
* @param size
*/
void SetSize(size_t size);
/**
* @brief
*
* @param index
* @return QueryResult
*/
QueryResult* GetResult(size_t index);
/**
* @brief
*
* @param index
* @param result
*/
void SetResult(size_t index, QueryResult* result);
/**
* @brief
*
* @param callback
* @param thread
* @param queue
* @return bool
*/
bool Execute(MaNGOS::IQueryCallback* callback, SqlDelayThread* thread, SqlResultQueue* queue);
};
/**
* @brief
*
*/
class SqlQueryHolderEx : public SqlOperation
{
private:
SqlQueryHolder* m_holder;
MaNGOS::IQueryCallback* m_callback;
SqlResultQueue* m_queue;
SqlQueryHolder* m_holder; /**< TODO */
MaNGOS::IQueryCallback* m_callback; /**< TODO */
SqlResultQueue* m_queue; /**< TODO */
public:
/**
* @brief
*
* @param holder
* @param callback
* @param queue
*/
SqlQueryHolderEx(SqlQueryHolder* holder, MaNGOS::IQueryCallback* callback, SqlResultQueue* queue)
: m_holder(holder), m_callback(callback), m_queue(queue) {}
/**
* @brief
*
* @param conn
* @return bool
*/
bool Execute(SqlConnection* conn) override;
};
#endif //__SQLOPERATIONS_H